GaussDB解读:Partial Result Cachev缓存中间结果对算子进行加速( 三 )


执行期间的最小命中率 。 如果命中率低于该值 , PTRC将被动态关闭
rds_partial_result_cache_hit_ratio_frequency
执行期间检查命中率的频率 。 如果不能命中的次数达到了该值 , PTRC将会触发检查命中率是否低于最小命中率 。 如果低于最小命中率 , PTRC将自动失效 。
PTRC性能测试
下面是我们使用TPCH的Q17来测试不同数据量下启用PTRC前后的性能变化 。
由于PTRC是一个cache , 所以命中率越高性能提升就会越高 。 当然如果PTRC相关的算子执行代价越高的话 , 那么PTRC获取的性能提升也是越高的 。
MariaDB的subquerycache是对重复扫描算子correlatedsubquery进行加速引入的一个特性 , 我们参照MariaDB的subquerycache测试样例 , 同样基于dbt-3scale1数据集 , 测试PTRC对于correlatedsubquery的加速效果 。
由于MySQL和MariaDB索引创建的不同 , 执行时间与MariaDB不同 , 这里只需要关注相对时间即可 。 测试结果如下表所示:
examplecacheoncacheoffgainhitmisshitrate10.5sec22min3.98sec2,647x1499752599.98%20.26sec1.2sec4.6x628522096.6%30.11sec0.14sec1.27x233777975%41.42sec1.43sec0x02000%examplecacheoncacheoffgainhitmisshitrate0.5sec22min3.98sec2,647x1499752599.98%0.26sec1.2sec4.6x628522096.6%0.11sec0.14sec1.27x233777975%1.42sec1.43sec0x2000%
可以看出:上表中最后一行命中率为0的情况下 , PTRC默认值检查如果miss了200条之后 , 会触发检查命中率 , 发现命中率太低了 , 所以PTRC自动失效了 , 所以可以看到miss列里只有200条 。
MariaDB的测试样例和结果请参考:mariadb.com/kb/en/subqu…
PTRC对于参数化的重复扫描都可以进行适配 , 只要命中率足够 , 就可以加速执行 。 对于查询中的多种算子包括CorrelatedSubquery,NestedLoopJoin,Semijoin,Antijoin都有加速作用 。 PTRC已经正式上线 , 欢迎大家使用 。 返回搜狐 , 查看更多
GaussDB解读:Partial Result Cachev缓存中间结果对算子进行加速】责任编辑: