Skip to content

从统计预测到查询执行反馈 ​

返回学习路线。交付一份固定快照σ7上的完整记录:原始行出现、统计摘要、分片消息、过滤候选、换计划决定及全部连接身份对。下载标准库核验器,直接运行或用Python -O运行,均只向stdout输出完整JSON,不写旁边文件;比较两份输出即可复算。

一、把估计和事实分开列出 ​

R按出现ID从r0开始编号,键序列为:NULL两份、8十份、0/1/4/5各一份、6四份、7四份,共24份。因此r12、r13、r14、r15的键依次为0、1、4、5;r16至r19是四份6,r20至r23是四份7。

固定整数域[0,12),桶边界0/6/12,MCV预算一项。正确摘要为:NULL=2,MCV=(8,10),残余桶计数=(4,8),残余位置数=(6,5)。复算质量2+10+4+8=24。

对x<8,MCV8不满足严格小于,第一桶完整进入,第二桶进入6和7两个位置。预测为4+8×2/5=36/5,选择率3/10;真实输出B为r12至r23,共12份。确定性计数区间是[4,12]。

另造同摘要输入:将四份6改成9、四份7改成10。MCV排名、NULL和桶计数完全不变,真输出却只剩r12至r15四份。两种原始数据把区间两端都达到,说明预测误差不能靠更仔细地给7.2取整消除。再查x<6、x<12,应分别精确4、22;查x=8得10,查不存在的x=9仍预测8/5。

迁移时把MCV预算改为零,桶计数会改变,不能只删除MCV表而保留旧残余计数。把域改大也会改变均匀位置模型;新增的可能整数位置并不等于新增真实行。

二、等齐分片,再作否定 ​

将B分成B₀=r12…r19及B₁=r20…r23。取16位、h₁(x)=x mod16、h₂(x)=(5x+1) mod16。分别交出置位位置:

  • B₀:0、1、4、5、6、10、15
  • B₁:4、7
  • 完整OR:0、1、4、5、6、7、10、15

执行身份为(q,epoch2,σ7,J),预期分片只有s0、s1。按以下次序重放:

  1. 收s0,仍WAITING;键7必须全放行
  2. 重复s0,完成数仍为1
  3. 收epoch1的s1,旧执行不能补完成数
  4. 收m=32的s1,哈希配置错误不能合并
  5. 收当前执行m=16的s1,完成数变2,READY

错误地把重复或旧执行消息算成第二片,会在真正s1未到时发表假否定。若等待超时,应转TOP,后来的正确摘要在本协议里被忽略;TOP放弃优化,精确查询仍要消费完整B。相同身份的不同最终位图则是协议错误,返回失败;不要把它与正常消息迟到混为一谈。

三、六个候选仍须产生十七个精确身份对 ​

P的p0至p8依次为0、2、6、6、7、7、10、16、NULL。普通等值内连接先排除p8的NULL,剩八份。

完整过滤留下p0、p2、p3、p4、p5、p7六份。p7的键16与0映射到相同两位,是假阳性;它保留在候选中,却不产生最终匹配。完整输出应恰为:

  • (r12,p0)一对
  • 每个r16…r19分别配p2、p3,共八对
  • 每个r20…r23分别配p4、p5,共八对

总计17,且每个身份对出现一次。对值作set会破坏原始重数;只看结果行数也不够,可能漏一对又重复另一对。

用B₀的部分位图错误预过滤,会删掉p4、p5,只产生9对。两片位图错误AND在这个例子仅保留位4,没有任何探测键通过,输出零对。这两项都是错误策略的反例,不是Bloom允许的假阳性。

四、同一边界上的两次真实决策 ​

两侧输入都已完整物化,稳定快照、列和出现身份已确认;连接后缀还没有向消费者输出。初始计划为NL。预算允许哈希表保存8个行出现槽,不把物化存储或输出列表算入这8槽。

声明工作账:NL作nq次键比较;HP把q个探测出现建表并处理n个build出现,费用为48+n+q;48是固定启动费用。换掉旧NL另付安装费6。输出Z和已完成的收集、物化是公共费用,另列,不从总查询成本中删除。

最初预测n=36/5、q=8,所以NL=288/5、HP=316/5,先选NL。执行后n实际为12,分别测试两条路径:

路径 冻结P行数q 保留NL 改HP含安装 选择
等待超时,TOP 8 96 48+12+8+6=74 真正换HP
完整过滤 6 72 48+12+6+6=72 等号保留NL

两条路径的最终身份对必须完全相同。超时路径实做20个哈希输入操作,建表占8槽,输出17;完整路径实做72次键比较,输出17。HB若要把12份B建表,超容量,必须先被排除,不能只比较其费用。

迁移一:完整过滤路径把安装费从6改5,应换HP。迁移二:将容量改5,HP也不可用,应保留NL。迁移三:把48当作已经在旧NL上付过的费用再免收是不成立的;旧计划从未启动过哈希后缀。

五、交出拒绝与反例证书 ​

在COLLECTING时申请选择、向已关闭的B追加行、把另一快照的P送进来、交重复出现ID、要求未实现的排序合同,都应拒绝而不安装候选。一个输入生产者真正失败后,整个检查点FAILED,不能通过close把它补成正常END。

选择后进入READY;开始输出进入RUNNING。实际读出第一对后再次请求替换,应被拒绝;继续原后缀仍只输出17对。若错误地把第一对接在完整重启的17对前,结果会成为18,给出重复输出证据。

另把P换成新快照并增加一份键7,真连接会多四对,成为21。这说明快照变化造成的是输入语义变化,不能称为对原17对查询的安全重优化。本任务不包含输出补偿或跨快照恢复。

最终记录至少包括:统计质量和两端见证,五个摘要事件,六个候选及假阳性,全部17对,容量与费用决定,以及明确的拒绝轨迹。程序的有限枚举支持这些合同和实现自查;它不是某个商业数据库、网络传输或全SQL优化器的认证。