全链路追踪采样与下盘参数

在oceanbase的全链路追踪中,有采样频率sample_pct和下盘策略record_policy两个参数。下盘参数record_policy如果设置为SAMPLE_AND_SLOW_QUERY,那么有一定概率会打印到日志文件中。

关于这两个参数,我有个疑问。如果一个query命中了采样频率,但是没有命中SAMPLE_AND_SLOW_QUERY,那么这条query只会被采样,但是不会被打印到日志中。这么设计的意义是什么呢?因为query的trace只保留在内存里,但是无法通过 obdiag等工具进行分析,存储在内存里有什么意义呢?

record_policy有3种策略,分别是all,only_slow_query和sample_and_slow_query。3种策略的具体说明就不再赘述,官方文档中有。
其中,您关注的sample_and_slow_query策略,您可以理解为是另外两种策略的中间状态,主要用于即关注slow_query,又适当关注其他非slow query的场景。
考虑到该场景在实际应用中,会存在一定的需求,因此做出了这样的设计。

3 个赞

再请教一下呢,针对only_slow_query场景,请问slow_query是如何采集的呢?因为slow query是请求结束后才判别的,在判别前,在其他节点上生成的span怎么决定是否要写入日志呢?