tencent cloud

TDSQL-C for MySQL

動向とお知らせ
製品アップデート
製品お知らせ
初心者ガイド
製品概要
プロダクト概要
製品の強み
適用シーン
製品アーキテクチャ
製品仕様
インスタンスタイプ
製品機能一覧
データベースのバージョン
リージョンとアベイラビリティゾーン
基本概念
利用制限
利用ガイドの推奨事項
自社開発カーネル
カーネル概要
カーネルバージョンのアップデート情報
カーネル最適化バージョン
機能特性
パフォーマンス関連機能
セキュリティカテゴリの機能
安定性機能
分析エンジン特性
カーネル問題のチェックと修復
購入ガイド
課金概要
製品価格
クラスタを作成する
構成変更説明
未払いについての説明
継続支払いの説明
返金ポリシー
従量課金から年/月単位サブスクリプションへの変換
従量課金からServerlessへの変換
付加価値サービスの課金説明
料金請求書の確認
クイックスタート
データベース監査
概要
監査インスタンス一覧
監査サービスを有効化する
監査ログの確認
ログ配信
事後アラーム設定
監査ルールの変更
監査サービスを変更する
監査サービスを停止する
監査ルールテンプレート
監査タスクの照会
サブユーザーへのデータベース監査利用権限付与
Serverlessサービス
Serverless入門
サーバーレス版クラスタの作成と管理
伸縮性スケーリング管理ツール
Serverlessリソースパック
マルチAZデプロイ
設定を変更する
よくあるご質問
Serverlessコスト見積ツール
操作ガイド
操作概要
コンソールでのクラスタページビューの切り替え
データベース接続
インスタンス管理
設定を変更する
インスタンス形態管理
クラスタ管理
読み取り専用インスタンス管理 
データベースプロキシ
アカウント管理
DMC
DMC(データベース管理ツール)
パラメータ設定
マルチAZデプロイ
グローバルデータベース
バックアップとリストア
操作ログ
データマイグレーション
パラレルクエリ
列ストレージインデックス CSI
分析エンジン
データベースセキュリティと暗号化
モニタリングとアラーム
SQLの基本操作
以下のコマンドを実行して、TDSQL-C for MySQLに接続してログインします
Tag
実践チュートリアル
TDSQL-C for MySQL データベース監査の等級保護実践
非InnoDBテーブル問題のワンクリック移行検出処理方法
DTSによるデータベースバージョンのアップグレード MySQL 5.7から8.0へ
TDSQL-C for MySQL 使用規範
新版コンソール
データベースプロキシの複数接続アドレスによる複数ROグループの実現
データベースプロキシのメリット
ストレージの課金モードの選び方
DTSによるリモートディザスタリカバリの構築
クラスタ用VPCの作成
データ復旧の方法
CPU使用率の高騰問題の解決方法
サブユーザーへの監視データ閲覧権限付与方法
ホワイトペーパー
セキュリティホワイトペーパー
性能ホワイトペーパー
トラブルシューティング
接続関連
性能関連
よくあるご質問
基本概念
購入と課金
サポートされるフォーマット
接続とネットワーク
機能特性
コンソールの操作
データベーステーブル
パフォーマンスとログ
データベース監査
TDSQL-C for MySQLとTencentDB for MySQLの違い
関連契約
SLA
利用規約
TDSQL-C ポリシー
プライバシーポリシー
データ処理と安全プロトコル
汎用参考
標準と認証
用語一覧
お問い合わせ

SQLの実行と実行計画の確認

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-12-30 16:46:24
読み取り専用分析エンジンはMySQLプロトコルおよび構文と互換性があります。ユーザーはMySQLクライアントまたは開発言語のMySQLコネクタを使用して読み取り専用分析エンジンにアクセスし、SQL文を実行することができます。
読み取り専用分析エンジンは読み取り専用インスタンスであるため、実行可能なSQL文は主にSELECT文となり、DMLおよびDDL文を実行できません。また、クエリはオブジェクト権限によって厳密に制限され、アクセスアカウントが特定のオブジェクトに対するSELECT権限を持たない場合、当該オブジェクトの参照も行えません。
SQLを実行する際、MySQLの構文を直接使用して構文を編集し、読み取り専用分析エンジンで実行できます。しかし、実行結果が期待通りにならない場合も頻繁に発生します。そのような場合は、EXPLAIN機能で実行計画を確認できます。

EXPLAIN 機能および使用方法

EXPLAINを使用すると、読み取り専用分析エンジンでクエリ文を実行する際に選択された実行計画を確認できます。これは内部オプティマイザによる複数段階の最適化を経て最終的に選択された最適なクエリプランです。実行計画を確認する際、実際にSQLを実行することはなく、実行計画のみを出力します。
EXPLAIN 例:
EXPLAIN <SELECT_STATMENT>

explain select * from t1 left join t2 on t1.id = t2.id;
返却結果は以下の通りです:
+---------------------------------------------------------------------------------+
| query plan |
+---------------------------------------------------------------------------------+
| ============================================ |
| |ID|OPERATOR |NAME|EST.ROWS| |
| -------------------------------------------- |
| |0 |HASH JOIN | |12500.00| |
| |1 |├─TABLE FULL SCAN (B) |t2 |10000.00| |
| |2 |└─TABLE FULL SCAN (P) |t1 |10000.00| |
| -------------------------------------------- |
| Details: |
| ------------------------------------- |
| 0 - JOIN TYPE: left outer join, EQUAL: [eq(singleton.t1.id, singleton.t2.id)] |
| 1 - STORAGE: LIBRASTORE, BLOCK OFFSET: 1 |
| 2 - STORAGE: LIBRASTORE, BLOCK OFFSET: 1 |
+---------------------------------------------------------------------------------+

EXPLAIN結果の解釈

EXPLAINの返却結果は以下のフィールドを含みます:
IDはプラン内でオペレータが表示される番号であり、0から始まり下位レベルに向かって増加していきます。これによりユーザーが詳細を確認しやすくなります。
OPERATORはオペレータ名を表し、SQL実行プロセスにおける各ステップで実行される操作を表します。
NAMEは、クエリでアクセスされたテーブルやパーティションなどの情報を表示します。
EST.ROWSは、読み取り専用分析エンジンが統計情報に基づいて推定した各オペレータの処理行数を表示します。統計情報がない場合、デフォルト値に基づいて計算された値が表示されます。

オペレータ紹介

オペレータはクエリ結果を返すために実行される特定のステップです。下表に、読み取り専用分析エンジンが現在サポートする各種オペレータ名とその機能説明を示します:
オペレータ名称
オペレータ紹介
SORT
SORTオペレータは入力データをソートするために使用されます。
TOPN
ORDER BY 句の後に LIMIT 句が続く場合、オプティマイザは実行計画をさらに最適化し、TOP-N SORT オペレータを生成してヒープソートによってTOP-Nデータを選択できます。
LIMIT
LIMITオペレータはデータ出力の行数を制限するために使用され、これはMySQLのLIMITオペレータと同じ機能を持っています。
FILTER
FILTERオペレータは、指定された述語条件に基づいてデータをフィルタリングするために使用され、通常はWHERE/HAVING/ON句に現れます。
HASH JOIN
HASH JOINを利用して大規模データセットのJOIN操作を行います。オプティマイザは2つのデータセットテーブルを使用し、小さい方のテーブルをメモリ内でJOIN条件に基づいてハッシュテーブルを構築します。その後、データベースはより大きなデータセットをスキャンし、ハッシュテーブルをプローブして関連条件を満たす行を見つけます。
COLUMN READ
遅延マテリアライゼーションオペレータは、読み取り専用分析エンジンが部分的なフィルタ条件をTableScanオペレータにプッシュダウンすることをサポートします。つまり、まずフィルタ条件に関連する列データをスキャンし、条件を満たす行をフィルタリングした後、これらの行の他の列データを再スキャンし、後続の計算を続行します。これにより、IOスキャンとデータ処理の計算量を削減します。
TABLE FULL SCAN
対象テーブルに対してフルテーブルスキャンを実行します。
UINION
UNIONオペレータは、2つのクエリ結果セットに対して和集合演算を行うために使用されます。
WINDOW FUNCTION
WINDOW FUNCTIONオペレータは、SQLの分析関数(ウィンドウ関数とも呼ばれる)を実装するために使用され、ウィンドウ内の関連行の結果を計算します。ウィンドウ関数は各グループで複数行を返すことができ、グループ内の各行はウィンドウに基づく論理計算の結果です。
HASH GROUP BY
GROUP BYオペレータは、主にSQLでグループ集計計算操作を行うために使用されます。一般的な集計関数(SUM/MAX/MIN/AVG/COUNT/STDDEV)は、すべてGROUP BYオペレータを割り当てることで実行されます。
PROJECTION
射影オペレータは、SQL文のSELECTリストに対応し、各入力データを新しい出力データにマッピングする機能を担います。
EXCHANGE RECEIVER
データ受信オペレータは、MPPクエリ実行時に各計算ノード間でデータを交換する際にデータを受信するために使用されます。
EXCHAGE SENDER
データ送信オペレータは、MPPクエリ実行時に各計算ノード間でデータを交換する際にデータを送信するために使用されます。

Detail情報

上記の結果テーブルに表示されている情報以外に、下部にはDetail項目が表示されます。Detail項目には各オペレータに付随する追加情報が表示され、その形式は n - detail info となります。ここで、n は各オペレータのIDを表し、その後ろには各オペレータの具体的な情報が続きます。以下の表に、各オペレータに表示される具体的な情報をリストアップします。
オペレータ名称
Detail情報
SORT
ORDER BY KEY:ソートオペレータが採用するソートキーを指します。
TOPN
ORDER BY KEY:ソートオペレータが採用するソートキーを指します。
OFFSET:Limit操作で指定されるオフセット。
COUNT:Limit操作で指定される保持行数。
LIMIT
OFFSET:Limit操作で指定されるオフセット。
COUNT:Limit操作で指定される保持行数。
FILTER
CONDITIONS:FILTERオペレータがデータをフィルタリングする際に採用する述語条件を指します。
HASH JOIN
JOIN TYPE:現在のJOINのタイプ(例:インナージョイン、レフトアウタージョイン、セミジョインなど)。
NON EQUAL:現在のJOINがデカルト積かどうかを示します。このフィールドがない場合、デカルト積ではないことを意味します。
EQUAL:2つのテーブルがJOINを行う際に採用される等価条件を表示します。
OTHER COND:2つのテーブルがJOINを行う際の非等価条件を表示します。
さらに、上記のEXPLAIN結果でIDが1と2のオペレータ名の後にそれぞれ(B)と(P)のフラグが付いていることが確認できます。これらのフラグはHASH JOIN操作時のビルド側とプローブ側を示しており、Bはビルド、Pはプローブを表します。
COLUMN READ
COLUMN READ:遅延マテリアライゼーションで読み取られるカラム名。
TABLE FULL SCAN
STORAGE:読み取られる基盤ストレージタイプで、現在LIBRASTOREとTDSQLの2種類をサポートしています。
BLOCK OFFSET:現在のテーブルが全体のSQLにおけるクエリブロック番号であり、ヒントの使用を補助するために用いられます。
UINION
なし。
WINDOW FUNCTION
WINDOW FUCN DESCS:ウィンドウ関数の名称。
PARTITION BY:パーティションキー。
ORDER BY: ソートキー。
FRAME:ウィンドウ関数のウィンドウ定義。
HASH GROUP BY
GROUP BY:集約関数を実行する際に指定されるグループ化キー。
AGG FUNCS:SQLで指定された集計関数。
PROJECTION
EXPRS:プロジェクションオペレータが実行する式のリストであり、主に実行されるキャストおよび様々なスカラー関数です。
EXCHANGE RECEIVER
なし。
EXCHAGE SENDER
ExchangeType:データ交換に使用される方式。
PASS:複数のノードのデータを1つのノードに送信する。
BCJ: 1つのノードのデータを複数のノードにブロードキャストする。例として、JOIN時にビルドテーブルのデータを各ノードにブロードキャストし、JOIN操作を実行できるようにします。
HASH:データをハッシュ関数で分散させ、各ノードに配布する。例として、JOIN時に左右のテーブルデータを分散・再配置するために使用されます。
HASH (BY PARTITION):2つのテーブルをJOINする際、一方のテーブルの結合キーがパーティションキーである場合、もう一方のテーブルを結合キーがパーティションキーであるテーブルの分散方式に従ってシャッフルアウトします。
ランタイムフィルタオペレータが有効で、かつプランにハッシュ結合が存在する場合、ハッシュ結合オペレータの両側に以下の二種類の特殊な詳細情報が付随することがあります。
Probe Runtime Filters:オペレータにこの情報が存在する場合、現在のオペレータが冗長データをフィルタリングするためにランタイムフィルタを適用していることを示します。
Build Runtime Filters:この情報はJOINオペレータにのみ表示され、現在のJOINオペレータのビルド側でランタイムフィルタが生成され、プローブ側の冗長データを事前にフィルタリングするためです。具体的なランタイムフィルタの使用方法、チューニング、および表示情報の役割については、Runtime Filter 使用手順を参照してください。
EXPLAINを実行すると、異なるオペレータが異なる情報を返します。オプティマイザの動作を制御するためにOptimizer Hintsを使用することで、物理オペレータの選択を制御できます。
/*+ HASH_JOIN_PROBE(t1) */ は、オプティマイザがt1テーブルをhash joinのprobeテーブルとして強制的に採用することを示します。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック