データベースにおける「統計情報」とは、オプティマイザー統計情報(Optimizer Statistics)を指し、データベース内のテーブルや列の情報を記述するデータ集合です。
オプティマイザーのコストモデル(Optimizer Cost Model)は、クエリに関与するテーブル、列、述語などのオブジェクトの統計情報に依存して計画を選択します。オプティマイザーは統計情報を利用して計画の選択を最適化できるため、統計情報はコストモデルにおいて最適な実行計画を選択する上で重要な要素となります。
OceanBaseデータベースのオプティマイザーでは、統計情報は通常のデータとして内部テーブルに格納され、またローカルで統計情報のキャッシュが維持されることで、オプティマイザーによる統計情報へのアクセス速度が向上します。
テーブルレベルの統計情報
テーブルの統計情報には主に以下の情報が含まれます:
テーブルの基本情報(
tenant_id、table_id、partition_idなど)テーブルの統計情報タイプ(情報レベルは
GLOBAL、PARTITION、SUBPARTITIONに分類されます)テーブルの行数
テーブルが占有するマクロブロック数
テーブルが占有するマイクロブロック数
テーブルの平均行長
テーブルの統計情報収集時間
テーブルの統計情報がロックされているかどうか
カラムレベルの統計情報
カラムの統計情報には主に以下の情報が含まれます:
カラムの基本情報(
tenant_id、table_id、partition_id、column_idなど)カラムの統計情報タイプ(情報レベルは
GLOBAL、PARTITION、SUBPARTITIONに分類されます)カラム内の異なる値の数(NDV:Number of Distinct Values)
カラム内の
NULL値の数カラムの最大値と最小値
カラムのサンプリングデータ量
カラムのヒストグラムの密度
カラムのヒストグラムのバケット数
ヒストグラムタイプ(頻度ヒストグラム / TopKヒストグラム / 混合ヒストグラム)
インデックスの統計情報
インデックスの統計情報には主に以下の情報が含まれます:
インデックスの基本情報(
owner、index_name、table_owner、table_nameなど)インデックスの統計情報タイプ(情報レベルは
INDEX、PARTITION、SUBPARTITIONに分類されます)インデックステーブルの行数
インデックステーブルのマクロブロック数
インデックステーブルのマイクロブロック数
インデックステーブルの平均行長
マテリアライズドビューのリフレッシュ統計情報
マテリアライズドビューのリフレッシュ統計情報には主に以下の情報が含まれます:
マテリアライズドビューのリフレッシュの基本情報(
owner、mview_name、container_ownerなど)リフレッシュ操作の現在の情報
リフレッシュ操作の履歴情報
実際のリフレッシュ実行時間