OceanBaseデータベースV4.xでは、インデックス監視機能がデフォルトで有効になっています。ビューCDB_INDEX_USAGE(システムテナント)またはDBA_INDEX_USAGE(ユーザーテナント)を使用して、ユーザーテナントのインデックス使用状況を照会できます。
インデックス監視はクラスタ起動時にデフォルトのサンプリング(SAMPLED)モードを採用しているため、このモードではすべてのインデックス使用データが内部テーブルに記録されるわけではありません。その結果、ビューCDB_INDEX_USAGE(システムテナント)またはDBA_INDEX_USAGE(ユーザーテナント)のクエリ結果が空になる場合があります。正確な情報が必要な場合は、インデックスを使用する前に、現在のテナントのインデックス監視情報統計モードをALLに変更してから、インデックスの使用状況を照会します。
インデックス監視情報統計モードを変更するステートメントは以下のとおりです:
MySQL モード
Oracle モード
MySQL モードのユーザーテナントでは、以下のステートメントを実行して設定を変更します。
obclient(root@mysql001)[(none)]> ALTER SYSTEM SET _iut_stat_collection_type='ALL';
Oracle モードのユーザーテナントでは、以下のステートメントを実行して設定を変更します。
obclient(SYS@oracle001)[SYS]> ALTER SYSTEM SET "_iut_stat_collection_type"='ALL';
設定変更後、以下のステートメントを使用してインデックスの使用状況を確認します。
システムテナントの場合
システムテナントでは、以下のステートメントで確認できます。
obclient(root@sys)[(none)]> SELECT OBJECT_ID, NAME, OWNER, TOTAL_ACCESS_COUNT, TOTAL_EXEC_COUNT, LAST_USED FROM oceanbase.CDB_INDEX_USAGE;ユーザーテナントの場合
MySQL モードのユーザーテナントでは、以下のステートメントで確認できます。
obclient(root@mysql001)[(none)]> SELECT OBJECT_ID, NAME, OWNER, TOTAL_ACCESS_COUNT, TOTAL_EXEC_COUNT, LAST_USED FROM oceanbase.DBA_INDEX_USAGE;Oracle モードのユーザーテナントでは、以下のステートメントで確認できます。
obclient(SYS@oracle001)[SYS]> SELECT OBJECT_ID, NAME, OWNER, TOTAL_ACCESS_COUNT, TOTAL_EXEC_COUNT, LAST_USED FROM SYS.DBA_INDEX_USAGE;