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;