一次完整的语法解析、语义分析、查询改写、查询优化、代码生成的 SQL 编译流程称为一次“硬解析”,硬解析生成执行计划的过程比较耗时(一般为毫秒级),这对于OLTP用户来说是很难接受的。
OceanBase 通过计划缓存(Plan Cache)来避免 SQL 硬解析,Cache 预热后命中率可达到100%,是 OceanBase 数据库高性能的关键技术之一。
计划缓存的匹配机制除了考虑参数的个数和出现位置之外,还需考虑参数类型、优化器参数、计划的调度类型等复杂场景。总体来说,OceanBase 的计划缓存机制其具有如下特性:
租户+Server级的 cache,即不同租户在不同 Server 上会有对应不同的 PlanCache,同一个 Server 同一个租户的不同用户可共用一个 Plan Cache
支持自动参数化,不同参数的 SQL 可共用同一执行计划
支持执行计划自动淘汰及更新
支持租户级内存使用限制
支持以不同维度(Server级/租户级/Server+租户级)手动清空缓存的计划