tencent cloud

TDSQL-C for MySQL

ドキュメントTDSQL-C for MySQL操作ガイドパラレルクエリ概要サポートされるステートメントシナリオと制限シナリオ

サポートされるステートメントシナリオと制限シナリオ

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2025-12-30 16:39:26
本稿は並列クエリ機能でサポートされるステートメントシナリオと制限シナリオを紹介します。

サポートされるステートメントシナリオ

TDSQL-C for MySQL は、以下の特徴を備えた SQL文 のパラレルクエリ処理をすでに実現しました。そして、より多くの機能シナリオを徐々に充実させています。
機能シナリオ
サポート対象のTXSQLエンジンカーネルバージョン
説明
単一テーブルスキャン
TXSQL 8.0 3.1.15.001以上
フルテーブルスキャン、インデックススキャン、インデックス範囲スキャン、インデックスREFクエリなどのスキャンタイプにおける順方向・逆方向スキャンをサポートしています。
複数テーブル結合
Nested Loop JoinアルゴリズムおよびSemi Join、Anti Join、Outer Joinなどの結合タイプをサポートします。
データ型
複数のデータ型を含むクエリをサポートします。整数型データ、文字列型データ、浮動小数点型データ、日時型データ、および(ランタイムサイズ制限のある)オーバーフロー型データなどが含まれます。
一般的な演算子と関数
一般的な演算子と関数は原則として制限されません。
集計関数
COUNT/SUM/AVG/MIN/MAX/STD/VARIANCE/VAR_SAMP/STDDEV_SAMPをサポートします。
UNION/UNION ALL
UNION/UNION ALLクエリをサポートします。
EXPLAIN
traditional(デフォルトフォーマット)、json、および tree の3種のEXPLAINフォーマットをサポートします。
PSモードの並列実行
PSモードの並列実行をサポートします。PREPARE STATEMENTにより、ステートメントは構文解析を1回のみ行い、複数回実行することが可能です。前処理されたPrepareステートメントは、変数の値を変更するだけで使用可能になり、パフォーマンスの向上をもたらします。
Hash join(in memory)の並列実行
ハッシュ結合(インメモリ)の並列実行をサポートします。
サブクエリの派生テーブルの個別並列実行
サブクエリの派生テーブルを個別に並列実行することをサポートし、メインクエリとは独立して実行されます。
ROLL UPの並列実行
ROLL UPの並列実行をサポートします。
EXPLAIN ANALYZEの並列実行
EXPLAIN ANALYZEの並列実行をサポートします。
パーティションテーブルを並列クエリの並列テーブルとして
パーティションテーブルを並列クエリの並列テーブルとしてサポートします。
グローバル集約最適化
グローバル集約最適化をサポートします。
having条件のプッシュダウン並列化
having条件のプッシュダウン並列化をサポートします。
対応するステートメントのパフォーマンス向上 SF=100、Dop=16設定で、高速化比率は以下の通りです。
SUM/AVG/COUNTなどの集計関数。
SELECT l_returnflag, l_linestatus,
Sum(l_quantity) AS sum_qty,
Sum(l_extendedprice) AS sum_base_price,
Sum(l_extendedprice * (1 - l_discount)) AS sum_disc_price,
Sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) AS sum_charge,
Avg(l_quantity) AS avg_qty,
Avg(l_extendedprice) AS avg_price,
Avg(l_discount) AS avg_disc,
Count(*) AS count_order FROM
lineitem WHERE l_shipdate <= date '1998-12-01' - INTERVAL '93' day
GROUP BY l_returnflag, l_linestatus ORDER BY l_returnflag, l_linestatus ;
パラレルクエリを有効にしていない場合の実行時間は1376.96秒で、有効にした場合の実行時間は107.25秒です。高速化倍率は最大12.84倍に達します。
order by/group by グループ化/ソート文。
SELECT l_returnflag, l_linestatus,
Sum(l_quantity) AS sum_qty,
Sum(l_extendedprice) AS sum_base_price,
Sum(l_extendedprice * (1 - l_discount)) AS sum_disc_price,
Sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) AS sum_charge,
Avg(l_quantity) AS avg_qty,
Avg(l_extendedprice) AS avg_price,
Avg(l_discount) AS avg_disc,
Count(*) AS count_order FROM
lineitem WHERE l_shipdate <= date '1998-12-01' - INTERVAL '93' day
GROUP BY l_returnflag, l_linestatus ORDER BY l_returnflag, l_linestatus ;
パラレルクエリを有効にしていない場合の実行時間は1376.96秒で、有効にした場合の実行時間は107.25秒です。高速化倍率は最大12.84倍に達します。
Join/Between/In 文
select
sum(l_extendedprice* (1 - l_discount)) as revenue
from
lineitem,
part
where
(
p_partkey = l_partkey
and p_brand = 'Brand#12'
and p_container in ('SM CASE', 'SM BOX', 'SM PACK', 'SM PKG')
and l_quantity >= 6
and l_quantity <= 6 + 10
and p_size between 1 and 5
and l_shipmode in ('AIR', 'AIR REG')
and l_shipinstruct = 'DELIVER IN PERSON'
)
or
(
p_partkey = l_partkey
and p_brand = 'Brand#13'
and p_container in ('MED BAG', 'MED BOX', 'MED PKG', 'MED PACK')
and l_quantity >= 10 and l_quantity <= 10 + 10
and p_size between 1 and 10
and l_shipmode in ('AIR', 'AIR REG')
and l_shipinstruct = 'DELIVER IN PERSON'
)
or
(
p_partkey = l_partkey
and p_brand = 'Brand#24'
and p_container in ('LG CASE', 'LG BOX', 'LG PACK', 'LG PKG')
and l_quantity >= 21
and l_quantity <= 21 + 10
and p_size between 1 and 15
and l_shipmode in ('AIR', 'AIR REG')
and l_shipinstruct = 'DELIVER IN PERSON'
);
パラレルクエリを有効にしていない場合のクエリ時間は20.55秒で、有効にした後の高速化時間は1.87秒です。高速化倍率は最大11倍に達します。

制限シナリオ

TDSQL-C for MySQLのパラレルクエリ機能がサポートしていないシナリオは以下の通りです。
制限項目
制限の説明
ステートメント互換性の制限
非クエリ文はパラレルクエリをサポートしていません。INSERT ... SELECT および REPLACE ... SELECT を含みます。
ストアドプログラム内のクエリ文は並列化できません。
シリアライザブル分離レベルのトランザクション内のクエリ文は並列化できません。
ロック付き読み取り文は並列化できません。例:select for update/share lock。
CTEは並列化できません。
テーブル/インデックス互換性の制限
クエリ対象がシステムテーブル/一時テーブル/非Innodbテーブルの場合、並列化できません。
空間インデックスは並列化できません。
全文検索インデックスは並列化できません。
スキャン方式がindex_mergeであるテーブルは並列化できません。
式/Fieldの互換性制限
Generated Column、BITおよびGEOMETRYフィールドを含むSQLクエリは並列化できません。
説明:
BLOB、TEXT、JSONフィールドを含むSQLクエリは、TXSQL 8.0エンジンのカーネルバージョンが3.1.14以上の場合、並列化をサポートします。前提条件として、パラメータtxsql_parallel_lob_enabledの実行値をONに設定する必要があります。操作方法については、インスタンスパラメータの設定を参照してください。
BIT_AND、BIT_XOR、BIT_ORタイプの集約関数は並列化できません。
aggregation(distinct)を伴う集約関数(例:SUM(DISTINCT), COUNT(DISTINCT)など)は並列化できません。
GIS関連関数(例:SP_WITHIN_FUNC、ST_DISTANCEなど)は並列化できません。
ユーザー定義関数は並列化できません。
json関連の関数は並列化できません(例:json_length、json_type、JSON_ARRAYAGGなど)。
XMLに関連する関数は並列化できません(xml_str)。
ユーザーロック関連の関数は並列化できません(is_free_lock、is_used_lock、release_lock、release_all_locks、get_lock)。
sleep関数、random関数、GROUP_CONCAT関数、set_user_var関数、weight_string関数は並列化できません。
ウィンドウ関数は並列化できません。
パラレルクエリ互換ステートメントシナリオ</1>を通じてステートメントがパラレルクエリ実行されたかどうかを確認できるだけでなく、パラレルクエリ実行計画の参照やスレッドの作業状態を参照することで確認することも可能です。詳細はパラレルクエリの参照をご覧ください。

ヘルプとサポート

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

フィードバック