结论先给:共用额度下不要按“谁先提需求谁先查”排队,而应按“决策截止时间×结果可替代性”分三层——临近截止且没有替代数据源的查询先跑,能靠抽样或缓存回答的排后,纯探索性、结论不影响本周动作的查询放到额度低谷。这个顺序成立的前提是你能看到各团队的待办截止时间;如果看不到,任何优先级表都会退化成先到先得。
把待查项按两个维度过一遍:一是“不做这次查询,下一步动作是否会停”,二是“结果能否用更小成本近似”。只有同时满足“会停”和“不能近似”的查询,才进入第一层。例如某团队要在当天给客户回复某组页面的收录状态,缺这次查询就无法回复,且没有其他数据源,这属于第一层。反过来,想摸清一批长尾词整体趋势的查询,即使晚两天做也不影响任何排期,属于第三层。
这个划分的用处是:它让“额度给谁”变成可解释的决定,而不是部门话语权的比拼。执行时建议把每个待查项写成一行,包含负责人、截止时间、不做会阻塞什么动作、能否抽样替代,然后只对第一层做实时调度。
提交顺序排队的隐患是:早上提交的探索性查询会占住额度,下午临近截止的阻塞性查询反而排不上。改成按截止时间倒排后,调度规则可以简化为:
需要说明的是,截止时间必须由提出方自己填,调度方不代为估计。代估会让所有查询都变成“很急”,规则随即失效。
如果多个团队的查询其实指向同一批对象,只是指标或时间范围略有差异,那么按截止时间排队就是错的。此时更省额度的做法是先合并成一次查询,再各自从结果里取所需部分。假设A团队要查某目录近7天的页面状态,B团队要查同一目录近30天的状态,分开跑是两次查询,合并成一次30天查询后A团队截取近7天即可,前提是两者对“状态”的定义一致。若定义不一致,合并会产出双方都不认的结果,这时宁可分开。
判断能否合并的证据是:查询对象、指标口径、时间粒度三项中至少两项相同。只有时间范围不同,通常可以合并;指标口径不同,不要合并。
看不到全部额度消耗记录时,仍可做一件事:让每个团队在提交查询前,用一行文字记录“本次查询要回答的问题”和“答案会改变哪个动作”。一周后回看这些记录,通常能发现相当一部分查询的答案并没有改变任何动作,这部分就是可以砍掉的额度占用。
但要注意不能从这份记录推出的结论:某团队查询次数少不等于其需求不重要,可能只是它的查询被合并进了别人的批次;某类查询被砍掉也不等于它没有价值,只说明在当前额度约束下它排不进前三层。把“没改变动作”直接等同于“不该查”,会误伤那些为下个周期做准备的查询。
先做一次为期两周的试运行:只对第一层查询保留实时调度,其余全部进入固定批次,并记录每次额度被占满时正在跑的是哪一层。如果占满时刻大多发生在第三层查询上,说明批次时段需要挪到低谷;如果第一层查询仍频繁等待,说明额度总量或合并程度需要重新评估。试运行结束后再决定是否把规则固化,不要在第一周就下结论。