首批通过分布式安全可靠测评,为关键业务系统打造
统计信息和估行机制概述
更新时间:2026-04-01 15:22:18
在数据库中,优化器针对每一个输入的 SQL 查询都会尝试生成最优的执行计划,而生成最优的执行计划往往需要实时有效的统计信息和准确的行数估计。统计信息实际上指的是优化器统计信息(optimizer statistics),它是一个描述数据库中表和列信息的数据集合,是代价模型选取最优执行计划的非常关键的部分。优化器代价模型(optimizer cost model)依赖于查询中涉及到的表、列、谓词等对象的统计信息来选取计划、优化计划的选择。准确有效的统计信息能够帮助优化器选择到最优的执行计划。
优化器中的估行,顾名思义即估算当前查询的输出行数,准确的行数估计可以使得优化器代价模型计算出更准确的代价,从而选择到最优的执行计划。OceanBase 数据库的优化器目前会有两种方式进行行数估算,一种方式基于统计信息计算出相关的选择率,然后基于选择率估算行数;另一种方式是优化器会在在计划生成时候根据基表路径的 QUERY RANGE 提前在存储层进行行数估计,获得一个实时准确的行数。
综上所述,本文将从 SQL 调优的角度展开介绍 OceanBase 数据库优化器的统计信息和估行机制。