OceanBaseデータベースは、DBMS_STATSパッケージに関連するストアドプロシージャを呼び出して、内部テーブルに収集された統計情報を削除します。
現在、統計情報を削除する方法は以下の3種類がサポートされています:
ストアドプロシージャ
delete_table_statsを使用して、テーブルレベルの統計情報を削除します。ストアドプロシージャ
delete_column_statsを使用して、列レベルの統計情報を削除します。ストアドプロシージャ
delete_schema_statsを使用して、Schema内のすべてのテーブルの統計情報を削除します。ストアドプロシージャ
delete_index_statsを使用して、インデックスの統計情報を削除します。
各ストアドプロシージャの定義は以下のとおりです:
PROCEDURE delete_table_stats (
ownname VARCHAR2,
tabname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
cascade_parts BOOLEAN DEFAULT TRUE,
cascade_columns BOOLEAN DEFAULT TRUE,
cascade_indexes BOOLEAN DEFAULT TRUE,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE
);
PROCEDURE delete_column_stats (
ownname VARCHAR2,
tabname VARCHAR2,
colname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
cascade_parts BOOLEAN DEFAULT TRUE,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE,
col_stat_type VARCHAR2 DEFAULT 'ALL'
);
PROCEDURE delete_schema_stats (
ownname VARCHAR2,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
force BOOLEAN DEFAULT FALSE
);
PROCEDURE delete_index_stats(
ownname VARCHAR2,
indname VARCHAR2,
partname VARCHAR2 DEFAULT NULL,
stattab VARCHAR2 DEFAULT NULL,
statid VARCHAR2 DEFAULT NULL,
cascade_parts BOOLEAN DEFAULT TRUE,
statown VARCHAR2 DEFAULT NULL,
no_invalidate BOOLEAN DEFAULT FALSE,
stattype VARCHAR2 DEFAULT 'ALL',
force BOOLEAN DEFAULT FALSE,
tabname VARCHAR2 DEFAULT NULL
);
パラメータの説明は以下の表のとおりです。
パラメータ |
説明 |
|---|---|
| ownname |
|
| tabname | テーブル名。 |
| indname | インデックス名。 |
| partname | パーティション名。 |
| colname | 列名。 |
| stattab | このパラメータは実装されておらず、使用できません。 |
| statid | このパラメータは実装されておらず、使用できません。 |
| cascade_parts | パーティションレベルとサブパーティションレベルの統計情報を同時に削除するかどうか。デフォルトはTRUEです。 |
| cascade_columns | 列レベルの統計情報を同時に削除するかどうか。デフォルトはTRUEです。 |
| cascade_indexes | このパラメータは実装されておらず、使用できません。 |
| statown | このパラメータは実装されておらず、使用できません。 |
| no_invalidate | このパラメータは実装されておらず、使用できません。 |
| force | ロックの状態を無視して強制的に削除するかどうか。デフォルトはFALSEです。 |
| col_stat_type | 列レベルの統計情報を削除する際のタイプ。
|
統計情報の削除機能の例は以下のとおりです:
ユーザー
user1のテーブルtbl1のすべての統計情報を削除します。CALL dbms_stats.delete_table_stats('user1', 'tbl1');ユーザー
user1のテーブルtbl1のcol1列のすべての統計情報を削除します。CALL dbms_stats.delete_column_stats('user1', 'tbl1', 'col1');ユーザー
user1のすべてのテーブルの統計情報を削除します。CALL dbms_stats.delete_schema_stats('user1');ユーザー
user1のテーブルtbl1のidx1インデックスのすべての統計情報を削除します。CALL DBMS_STATS.DELETE_INDEX_STATS('user1', 'tbl1', 'idx1');