OceanBase数据库的fuse命中率过低(41.0%)可能是由多种因素导致的。一种可能的原因是plan cache分配资源过少,这可能导致plancache命中率降低。并发量大导致内存快速写满也可能会引发同样的问题。此外,业务量或会话增加,导致内存不足的情况也可能会导致planche命中率下降。
另一种可能的原因是相似语句参数随机,这可能会导致计划缓存命中率降低。例如,通过主键去查找表里某一行具体的数据,如果主键在表中的每一个值都是不同的,那么它们都无法共享计划,每一个主键值都要重新生成一次计划,这就导致计划的命中率非常低。
为了解决这个问题,你可以考虑优化你的SQL语句,使其更加高效。快速参数化就是解决这类问题的一种有效方法。同时,你也可以考虑增加plan cache的资源分配,以减少内存快速写满的可能性。对于业务量或会话增加导致的内存不足问题,你可能需要增加系统资源或优化你的业务流程来提高内存使用效率。
OceanBase数据库中fus命中率过低表示缓存命中率下降,可能会影响系统性能。命中率过低可能是由于plan cache分配资源过少、并发量大导致内存快速写满、业务量或会话增加,导致内存不足等情况引起的。SQL执行流程中,SQL发送到OBServer后,会先由OBServer对其进行快速参数化,参数化后的SQL进入Plan Cache尝试命中计划缓存。如果找到一个可以使用的计划,则直接将计划交由SQL的执行引擎去执行,并将执行完成后的结果返回给用户;如果没有找到可以使用的计划,则会重新为此SQL生成计划。
要解决这个问题,首先需要定位业务性能问题,排除集群环境不稳定因素。OceanBase集群有强一致和高可用能力,其次才是高性能。用户容易理解高性能,可能不理解强一致和高可用背后的要付出的成本。如集群节点间要保持时间同步误差和网络延时最小。集群节点之间的网络延时太大、时间同步延时太大会影响集群的性能甚至稳定性。然后可以通过运行指定语句查看PLANCACHE命中率,例如:obclient > SELECT hit_count , executions , ( hit_count / executions ) as hit_ratio FROM V$OB_PLAN_CACHE_PLAN_STAT WHERE ( hit_count / executions ) < 0.9。根据查询结果,可以进一步优化配置或调整系统参数以提高命中率。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。