このトピックでは、統計の収集に使用できるポリシーについて説明し、統計の収集を設定する方法について提案します。
SQLクエリ実行プランの品質は、データベースのパフォーマンスに大きく影響します。 コストベースのオプティマイザ (CBO) が最適な実行計画を生成するための正確な統計を提供するために、PolarDB-Xはバックグラウンドで統計を収集します。
統計収集ポリシー
次の表に、PolarDB-Xでサポートされている統計収集ポリシーを示します。
ポリシー | コレクション周波数 | SQL文のタイプ | パラメーター |
自動分析 | 週に1回、特定の日の02:00から05:00の間に予定されています。 |
| ENABLE_BACKGROUND_STATISTIC_COLLECTION |
INFORMATION_SCHEMAのクエリ | 1日1回、02:00から05:00に予定されています。 | SELECT table_schema, table_name, table_rows FROM information_schema.tables WHERE table_schema IN (xxx,xxx,xxx ....) AND table_name IN (yyy、yyy、yyy...) | 非該当 |
リアルタイムフィードバック収集 | 挿入または削除されたデータ行の数が、以前にテーブルに格納されていたデータ行の数の20% を超えると、統計の収集がトリガーされます。 | 要件は、自動分析ポリシーの要件と同じです。 | 非該当 |
問題
テーブルのデータ量が多い場合、データノードのIOPSは、統計収集のために指定された時間内に増加します。
指定されていない統計収集時間中にIOPSが増加すると、次の問題が発生する可能性があります。
テーブルのデータ量が大きすぎます。 その結果、統計収集タスクは、1つの論理テーブルからデータを収集するために過度に長い時間を必要とする。 統計収集タスクは、指定された時間から指定されていない時間まで実行されます。
リアルタイムの統計収集が実行されています。 過度に大量のデータが更新され、システムが更新されたデータをインポートするのに過度に長い時間を必要とする場合、リアルタイムの統計収集がトリガーされます。
提案事項
早朝に統計情報を収集しない場合は、PolarDB-Xコンソールの [パラメーター設定] ページで、ENABACKGROUND_STATISTIC_COLLECTIONパラメーターをFalseに設定します。 この設定では、スケジュール統計収集機能とリアルタイム統計収集機能が無効になります。 2つの機能が無効になっている場合は、
analyze table [table_name];
ステートメントを定期的に手動で実行して、オフピーク時に統計を収集することをお勧めします。収集タスクを直ちに停止するには、次の手順を実行します。
show full physical_processlist where info like '% rand %';
ステートメントを実行して、データノードで実行されているSQLステートメントを表示します。killステートメントを実行して、統計を収集するために実行されるSQLクエリを終了します。 たとえば、
kill '0-0-222 ';
を実行して、対応するSQLクエリを終了できます。 「0-0-222」では、最初の0はデータノードのIDを示し、2番目の0はデータベースシャードのIDを示し、222は実行を終了するSQLステートメントのIDを示します。