すべてのプロダクト
Search
ドキュメントセンター

PolarDB:統計収集ポリシーの指定

最終更新日:Nov 13, 2024

このトピックでは、統計の収集に使用できるポリシーについて説明し、統計の収集を設定する方法について提案します。

SQLクエリ実行プランの品質は、データベースのパフォーマンスに大きく影響します。 コストベースのオプティマイザ (CBO) が最適な実行計画を生成するための正確な統計を提供するために、PolarDB-Xはバックグラウンドで統計を収集します。

統計収集ポリシー

次の表に、PolarDB-Xでサポートされている統計収集ポリシーを示します。

ポリシー

コレクション周波数

SQL文のタイプ

パラメーター

自動分析

週に1回、特定の日の02:00から05:00の間に予定されています。

  1. WHERE (RAND() < 3.9623395E-4) 句を含むSQL文。

  2. コメントでIPアドレスがnullとして指定されているSQL文。

  3. HYPERLOGLOG関数を含むSQL文。

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. テーブルのデータ量が大きすぎます。 その結果、統計収集タスクは、1つの論理テーブルからデータを収集するために過度に長い時間を必要とする。 統計収集タスクは、指定された時間から指定されていない時間まで実行されます。

    2. リアルタイムの統計収集が実行されています。 過度に大量のデータが更新され、システムが更新されたデータをインポートするのに過度に長い時間を必要とする場合、リアルタイムの統計収集がトリガーされます。

提案事項

  1. 早朝に統計情報を収集しない場合は、PolarDB-Xコンソールの [パラメーター設定] ページで、ENABACKGROUND_STATISTIC_COLLECTIONパラメーターをFalseに設定します。 この設定では、スケジュール統計収集機能とリアルタイム統計収集機能が無効になります。 2つの機能が無効になっている場合は、analyze table [table_name]; ステートメントを定期的に手動で実行して、オフピーク時に統計を収集することをお勧めします。

  2. 収集タスクを直ちに停止するには、次の手順を実行します。

    1. show full physical_processlist where info like '% rand %'; ステートメントを実行して、データノードで実行されているSQLステートメントを表示します。

    2. killステートメントを実行して、統計を収集するために実行されるSQLクエリを終了します。 たとえば、kill '0-0-222 '; を実行して、対応するSQLクエリを終了できます。 「0-0-222」では、最初の0はデータノードのIDを示し、2番目の0はデータベースシャードのIDを示し、222は実行を終了するSQLステートメントのIDを示します。