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

ApsaraDB for OceanBase:SQL の基本情報

最終更新日:Jan 21, 2025

このトピックでは、SQL 統計、パフォーマンス監視、テナントレベルのリクエスト分析、パフォーマンス監視、SQL リストなど、SQL Insights ページの基本情報について説明します。

クラスタ統計

[統計] タブでは、現在のクラスタ内の疑わしい SQL の数と SlowSQL の数、および各テナントの対応する数を確認できます。 テナント名をクリックすると、[SQL Insights] ページの下部にテナントの診断の詳細が表示されます。

image

クラスタパフォーマンス監視

[パフォーマンス監視] タブでは、クラスタの SQL パフォーマンスを確認できます。

image

テナントリクエスト分析

ページの中央にある [リクエスト分析の表示] ボタンをクリックして、[経過時間の分布][リクエスト統計リスト] を表示します。image

テナントパフォーマンス監視

ページの中央部にある [パフォーマンス監視の表示] をクリックすると、テナントのパフォーマンス監視データが表示されます。image

テナント診断情報

[テナント] ドロップダウンリストからテナントを選択し、そのテナントの TopSQL、SlowSQL、疑わしい SQL、高リスク SQL、および新規 SQL に関する診断情報を表示できます。 また、次の操作を実行することもできます。

説明

現在、システムには Standard Edition(Key-Value)クラスタインスタンスに関して次の制限があります。

  • バージョン番号が 4.2.4 以上 4.3.0 未満の KV クラスタインスタンスの場合、TopSQL と SlowSQL の診断情報を表示できます。

  • その他のバージョンの KV クラスタインスタンスの場合、SlowSQL の診断情報のみを表示できます。

  • [データベース][ノード][期間][SQL ID][SQL テキスト]、または [クイックフィルター] で SQL 診断情報をフィルタリングします。

    • [期間] オプションを使用すると、過去 5 分間、過去 30 分間、過去 1 時間、および過去 6 時間のデータを表示できます。 期間をカスタマイズすることもできますが、次の制限事項に注意してください。

      • 最大範囲制限: 選択した時間範囲は 24 時間を超えてはなりません。

      • 最小範囲制限:

        • 3 日以内のデータの場合: 選択した時間範囲は 1 分以上である必要があります。

        • 3 ~ 7 日のデータの場合: 選択した時間範囲は 5 分以上である必要があります。

        • 7 日を超えるデータの場合: 選択した時間範囲は 20 分以上である必要があります。

    • [クイックフィルター] オプションは、[フルテーブルスキャン][複数パーティションスキャン][複数リモート実行][ハード解析][エラー実行]、および [再試行実行] をサポートしています。

    • デフォルトのフィルターがニーズを満たしていない場合は、[追加] をクリックして条件を追加できます。

  • 列の image.png アイコンをクリックすると、その列でリストをソートできます。

  • [列の管理] をクリックして、リストに表示する列を選択します。

  • 右上隅の [エクスポート] をクリックして、リストをダウンロードします。

  • SQL 文をクリックすると、その詳細ページに移動します。 [概要] ページでは、SQL テキスト、物理実行プラン、SQL 実行履歴、テーブル情報、および SQL 文の高度な設定を表示できます。

  • [集計] を有効にします。 この機能は、統計に影響を与えることなく IN クエリの結果を集計します。 [集計済み] で識別される SQL 文の SQL ID にポインターを移動すると、他の集計された SQL 文の SQL ID を表示できます。

    内容が異なる数の単純な定数である IN 句を含む SQL 文の場合、[集計] 機能が有効になっていないと、SQL 診断機能はそれらを異なるタイプの SQL 文と見なします。 [集計] 機能が有効になっている場合、SQL 診断機能はそれらを同じタイプの SQL 文と見なし、これらの SQL 文の統計を同じ行に集計します。

    image

TopSQL

TopSQL とは、選択した時間範囲内で全体的な応答時間が最も長い SQL 文を指します。 TopSQL に関連して次の操作を実行できます。

image

  • [フルテーブルスキャン][複数パーティションスキャン][複数リモート実行] などのクイックフィルターで TopSQL をフィルタリングして、最適化する必要がある SQL 文をすばやく特定します。

  • [操作] 列の [サンプルの表示] をクリックして、SQL 文を表示します。

  • SQL テキストの前にあるプラス記号 (+) をクリックすると、統計期間中の最後のエラーとエラーの概要が表示されます。image

  • 右上隅の [最適化推奨事項の表示] をクリックして、最適化センターに移動し、最適化の推奨事項を表示します。

  • 右上隅の [topsql 比較] をクリックして、同じノードの異なる期間または異なるノードの同じ期間における同じ SQL 文のステータスとパフォーマンスを比較します。

    • 異なる期間の比較: ベースライン期間と比較期間を指定します。 [比較分析] をクリックして、[詳細の比較][パフォーマンストレンドの比較] を表示します。image

    • 異なるノードの比較: ベースラインノードと比較ノードを指定します。 [比較分析] をクリックして、[詳細の比較][応答時間トレンドの比較] を表示します。

      説明
      • 同じデータベース内の同じ SQL ID を持つ 2 つの SQL 文は同じと見なされます。

      • 異なるノードの比較は、同じ SQL 文が異なるノードで実行された場合にのみ実行されます。 それ以外の場合、比較結果は表示されません。

  • 指定したテナントまたはクラスタ内のすべてのテナントの TopSQL を診断できます。image

  • ホストの CPU 使用率が高すぎる場合は、データベースとノードで TopSQL をフィルタリングし、これらの SQL 文を CPU 時間の降順でソートして、最適化する必要がある SQL 文を特定できます。

    image

SlowSQL

SlowSQL とは、実行時間が 500 ミリ秒を超える SQL 文を指します。

image

  • SlowSQL に関連して次の操作を実行できます。

    • [フルテーブルスキャン][複数パーティションスキャン][複数リモート実行] などのクイックフィルターで SlowSQL をフィルタリングします。

    • [操作] 列の [サンプルの表示] をクリックして、SQL 文を表示します。

疑わしい SQL

疑わしい SQL とは、パフォーマンスの問題を引き起こす可能性のある SQL 文であり、ルールとアルゴリズムに基づいて除外されます。 次の表に、一般的な診断結果とトラブルシューティングの推奨事項を示します。

診断結果

トラブルシューティングの推奨事項

効果のないヒント

これは異常な SQL 文を示しており、データベース管理者(DBA)はアウトラインを使用して実行計画を修正するかどうかを判断する必要があります。

パフォーマンスの低いフルテーブルスキャン

実行計画とテーブル構造を分析して、SQL に適切なインデックスが使用可能であることを確認します。

インデックスを使用してもパフォーマンスが低い

ビジネスシナリオでパフォーマンスが許容できるかどうかを確認します。 許容できない場合は、ビジネスロジックを改善するか、インデックスを最適化します。

パフォーマンスの低下

データ分布の変更、リクエストの急増、および実行計画の変更を確認します。

パフォーマンスの低下を伴う計画の変更

DBA に確認してください。 アウトラインを使用して実行計画を修正し、SQL 文が異常かどうかを確認できます。

実行の急増

ビジネスボリュームを確認します。 SQL 文の実行数の急増により、全体的なパフォーマンスが低下する可能性があります。

CPU 負荷が高すぎる

ビジネスシナリオ、データ分布の変更、リクエストの増加、および実行計画の変更を確認します。

ロックの競合の疑い

SQL が再試行されています。これは、ロックの競合が原因である可能性があります。 ビジネスロジックを調査して、ロックの競合シナリオが存在するかどうかを判断してください。

DML 文によってアクセスされるパーティションが多すぎる

パーティションプルーニングをサポートするように SQL 文を書き直します。

バッファーテーブルの疑い

関連するテーブルが頻繁に更新されているかどうかを確認します。

大小のアカウント番号が存在する可能性があります

データスキューの問題があるかどうかを確認します。

実行計画の不安定性

計画の回帰に関する問題があるかどうかを確認します。

計画の生成時間が長すぎる

計画のヒット率が低いなどの問題があるかどうかを確認します。

[疑わしい SQL] タブには、[SQL テキスト][SQL ID][データベース][診断結果] などが表示されます。

image

リスク SQL

高リスク SQL とは、システムのパフォーマンス、セキュリティ、およびデータに損害を与える可能性のある SQL 文を指します。

次の表に、識別できる高リスク SQL のタイプを示します。

操作

リスクタイプ

説明

列の追加または削除

  • alter table test drop column id

  • alter table test add new_id int not null comment 'New ID'

スキーマの変更 - 列が追加または削除される

-

テーブルまたはデータベースの削除

  • drop table test

  • drop database test

テーブルまたはデータベースが削除される

-

テーブルを空にする

truncate table test

データテーブルがクリアされる

-

条件なしの更新

update test set new_id =1

条件なしの更新

-

常に真の条件での更新

update test set new_id =1 where 1 = 1

常に真の条件での更新

-

条件なしの削除

delete from test

条件なしの削除

-

常に真の条件での削除

delete from test where 1=1

常に真の条件での削除

-

返される行が多すぎる

max_return_rows >= 50000

返される行が多すぎる

max_return_rows パラメーターは、SQL 文で許可される最大戻り行数を指定します。 戻り行数がこの値を超えると、SQL 文は高リスクと見なされます。

影響を受ける行が多すぎる

max_affected_rows >= 50000

影響を受ける行が多すぎる

max_affected_rows パラメーターは、SQL 文で許可される最大影響行数を指定します。 影響を受ける行数がこの値を超えると、SQL 文は高リスクと見なされます。

関係するパーティションが多すぎる

max_partition_cnt >2000

関係するパーティションが多すぎる

max_partition_cnt パラメーターは、SQL 文で許可される最大関係パーティション数を指定します。 関係するパーティション数がこの値を超えると、SQL 文は高リスクと見なされます。

IN 条件が多すぎる

where id in (1,2,3,4,5.....)

IN 条件が多すぎる

-

インデックスの変更

drop index idx2 on test_high_risk2

高リスクの変更 - インデックスの変更

-

[高リスク SQL] タブには、[SQL テキスト][データベース][リスクの原因] などが表示されます。

image

新規 SQL

新規 SQL とは、クエリ間隔より前の一定期間(デフォルトでは 7 日間)実行されていなかったが、クエリ間隔内に実行レコードがある SQL 文を指します。

image

[SQL の追加] タブには、[SQL テキスト][SQL ID][データベース][合計実行数] などが表示されます。