在Oracle数据库,如果两个执行计划各自消耗时间都基本相同时,可以通过逻辑读来判断一个执行计划是否比另外一个执行计划更好。
在Oceanbase中,是否可以同样这样来判断?
Oceanbase的逻辑读可以理解成是:ROW_CACHE_HIT + BLOOM_FILTER_CACHE_HIT + BLOCK_CACHE_HIT + BLOCK_INDEX_CACHE_HIT + DISK_READS 的总和? 如果不是这样,该如何 计算逻辑读次数?
在Oracle数据库,如果两个执行计划各自消耗时间都基本相同时,可以通过逻辑读来判断一个执行计划是否比另外一个执行计划更好。
在Oceanbase中,是否可以同样这样来判断?
Oceanbase的逻辑读可以理解成是:ROW_CACHE_HIT + BLOOM_FILTER_CACHE_HIT + BLOCK_CACHE_HIT + BLOCK_INDEX_CACHE_HIT + DISK_READS 的总和? 如果不是这样,该如何 计算逻辑读次数?
逻辑读的计算公式为:row_cache_hit * 2 + bloom_filter_cache_hit * 2 + block_cache_hit + block_index_cache_hit + disk_reads
物理读:disk_reads
存储层在提供读服务的时候,会优先走各种cache,包括row_cache, bloom_flter,block_cache,block_index_cache ,如果这些cache都不命中的时候会直接读盘。
最后:读缓存和读盘都是需要开销的,我们将这些统称为逻辑读。
谢谢! 明白了。
老师,为什么这里面有些cache 需要*2?