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 ポリシー
プライバシーポリシー
データ処理と安全プロトコル
汎用参考
標準と認証
用語一覧
お問い合わせ

ETLライトバックの高速化

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-12-30 16:46:24
TDSQL-C for MySQLは読み取り専用分析エンジンによるデータクエリの高速化と読み書きインスタンスへのライトバックを実現します。この機能により、INSERT…SELECT… ステートメント内のSELECTクエリを列ストレージで高速化し、結果を内部ネットワーク経由で読み書きインスタンスに転送して対象テーブルに書き込むことが可能です。詳細な機能説明はETLライトバックの高速化をご参照ください。

使用シナリオ

注意:
読み取り専用分析エンジンは非同期レプリケーションモードであるため、読み取り専用分析エンジンに遅延が発生している場合、クエリ結果と読み書きインスタンスの間には一定の時間差が生じます。この機能はデータ遅延の影響を受けないシナリオにのみ適用されます。
現在、INSERT...SELECT...の高速化のみサポートしており、UPDATE...SELECT...およびDELETE...SELECT...などのシナリオの高速化はサポートしていません。
この機能の使用が推奨されるシナリオは以下の通りです:クエリ条件が複雑でSQL文の実行時間が長いが、クエリ結果セットのデータ量が小さい場合。このようなシナリオでは、読み取り専用分析エンジンがSELECTクエリの実行効率を加速するため、本機能を使用することでパフォーマンスを大幅に向上させることができます。
この機能を使用しても、すべてのシナリオでパフォーマンスの向上をもたらすわけではなく、特定の状況ではパフォーマンスが低下する場合があります。例:
INSERT…SELECT…文のSELECTクエリが比較的単純な場合、読み取り専用分析エンジンからデータを読み取って読み書きインスタンスにライトバックすると、追加のネットワークオーバーヘッドが発生します。読み書きインスタンスから直接データを読み取る場合と比較して、その利点はあまり顕著ではありません。
INSERT…SELECT…文のSELECTクエリ結果セットのデータ量が大きい場合、主なパフォーマンスボトルネックは結果セットがネットワーク経由で転送され、読み書きインスタンスに書き込まれるプロセスにあります。このシナリオでは、本機能を使用してパフォーマンスを最適化することはできません。

前提条件

読み取り専用分析エンジンインスタンスと読み書きインスタンスの稼働状態は、いずれも正常に稼働中です。
実行ユーザーは対応するオブジェクトに対するINSERT権限を所有している必要があります。
INSERT…SELECT… のSQL実行シナリオのみサポートしています。

機能パラメータ説明

パラメータ名
パラメータ説明
既定値
パラメータ値
libra_etl_to_rw
ライトバック機能を有効にするかどうかを制御します。
off
on:ライトバック機能を有効にします。実行を意味します。
off:ライトバック機能を無効にします。値がoffの場合、INSERT…SELECT…文を実行すると権限が不足しているというエラーが発生します。
libra_concurrent_etl
読み書きインスタンスへのライトバック時に並行書き込みを有効にするかどうかを制御します。
off
on: 並行ライトバックを有効にします。並行ライトバックは結果のライトバック効率を向上させますが、マルチスレッド間での書き込みのトランザクション一貫性は保証できません。
off:コンカレントライトバックを無効にします。この値に設定すると、読み書きインスタンスへのライトバックデータは単一のトランザクション内で実行されます。
libra_etl_concurrency
読み書きインスタンスへのライトバックにおけるコンカレントスレッド数を制御します。libra_concurrent_etl が on に設定されている場合にのみ有効になります。
1
設定可能な範囲:[1 - 読み書きインスタンスのCPUコア数]。整数値で設定可能で、最大値は読み書きインスタンスのCPUコア数です。
注意:
マルチコンカレントライトバックを使用すると実行速度が向上しますが、コンカレント数が過度に高いと読み書きインスタンスが書き込み負荷に耐えられず、インスタンスのパフォーマンスが低下する可能性があります。

実行サンプル

1. クライアントツールを使用して読み取り専用分析エンジンにログインします。例:MySQLクライアントを使用し、データベースアカウントとパスワードで読み取り専用分析エンジンにログインします。
2. 以下のSQLを実行すると、ETLライトバック機能(読み取り専用分析エンジンによる読み書きインスタンスへのライトバック機能)が有効になります。
seesion内でパラメータを設定することによって実行します:
set libra_etl_to_rw=on;
set libra_concurrent_etl=on;
set libra_etl_concurrency=4;
INSERT INTO database1.table1 select a.t1,b.t2,a.t2,b.t3 from a,b where a.t1=b.t1 and a.t5='x';
set libra_concurrent_etl=off;
set libra_etl_to_rw=off;
SQLにHintパラメータを追加することによって実行します:
INSERT /*+ SET_VAR(libra_etl_to_rw=ON) SET_VAR(libra_concurrent_etl=ON) SET_VAR(libra_etl_concurrency=4)*/ INTO database1.table1 select a.t1,b.t2,a.t2,b.t3 from a,b where a.t1=b.t1 and a.t5='x';
注意:
MySQLクライアントで「ヒントパラメータを追加する方法で実行」する場合、読み取り専用分析エンジンにログインする際に-cパラメータを追加する必要があります。そうでないと、ヒントが機能しません。

性能対比

テスト環境

読み書きインスタンス:16コア・64GB。
読み取り専用分析エンジン:16コア64GB。

テストデータ

TPC-H 10GBデータセットを使用します。

複雑なSQLのテストと結果

set libra_etl_to_rw=on;
set libra_concurrent_etl=off;
set libra_etl_concurrency=1;

create table t1 (
supp_nation VARCHAR(50),
cust_nation VARCHAR(50),
l_year INT,
revenue DECIMAL
);

INSERT INTO t1 SELECT
supp_nation, cust_nation, l_year, sum(volume) as revenue
from (select n1.n_name as supp_nation, n2.n_name as cust_nation,
extract(year from l_shipdate) as l_year,
l_extendedprice * (1 - l_discount) as volume
from supplier, lineitem, orders, customer, nation n1, nation n2
where s_suppkey = l_suppkey
and o_orderkey = l_orderkey
and c_custkey = o_custkey
and s_nationkey = n1.n_nationkey
and c_nationkey = n2.n_nationkey
and ((n1.n_name = 'JAPAN' and n2.n_name = 'INDIA')
or (n1.n_name = 'INDIA' and n2.n_name = 'JAPAN'))
and l_shipdate between '1995-01-01' and '1996-12-31') as shipping
group by supp_nation, cust_nation, l_year
order by supp_nation, cust_nation, l_year;
クエリ結果が4行の場合、テスト結果は以下の通りです(単位:秒)。
読み取り専用インスタンスにおけるSELECTの時間
ライトバック機能が有効になっていません。
読み書きインスタンスでのINSERT…SELECT…の実行時間
ライトバック機能を有効にする
読み取り専用分析エンジンにおけるINSERT…SELECT…の実行時間
0.57
232.77
0.61
set libra_etl_to_rw=on;
set libra_concurrent_etl=off;
set libra_etl_concurrency=1;

CREATE TABLE t2
(
p_brand VARCHAR(10),
p_type VARCHAR(25),
p_size INTEGER,
supplier_cnt INTEGER
);

INSERT INTO t2 SELECT
p_brand,
p_type,
p_size,
count(distinct ps_suppkey) as supplier_cnt
from
partsupp,
part
where
p_partkey = ps_partkey
and p_brand <> 'Brand#45'
and p_type not like 'MEDIUM POLISHED%'
and p_size in (49, 14, 23, 45, 19, 3, 36, 9)
and ps_suppkey not in (
select
s_suppkey
from
supplier
where
s_comment like '%Customer%Complaints%'
)
group by
p_brand,
p_type,
p_size
order by
supplier_cnt desc,
p_brand,
p_type,
p_size;
クエリ結果が27840行の場合、テスト結果は以下の通りです(単位:秒)。
読み取り専用インスタンスにおけるSELECTの時間
ライトバック機能が有効になっていません。
読み書きインスタンスでのINSERT…SELECT…の実行時間
ライトバック機能を有効にする
読み取り専用分析エンジンにおけるINSERT…SELECT…の実行時間
0.15
8.77
0.61

シンプルなSQLのテストおよび結果

set libra_etl_to_rw=on;
set libra_concurrent_etl=on;
set libra_etl_concurrency=8;

CREATE TABLE IF NOT EXISTS lineitem ( L_ORDERKEY INTEGER NOT NULL,
L_PARTKEY INTEGER NOT NULL,
L_SUPPKEY INTEGER NOT NULL,
L_LINENUMBER INTEGER NOT NULL,
L_QUANTITY DECIMAL(15,2) NOT NULL,
L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL,
L_DISCOUNT DECIMAL(15,2) NOT NULL,
L_TAX DECIMAL(15,2) NOT NULL,
L_RETURNFLAG CHAR(1) NOT NULL,
L_LINESTATUS CHAR(1) NOT NULL,
L_SHIPDATE DATE NOT NULL,
L_COMMITDATE DATE NOT NULL,
L_RECEIPTDATE DATE NOT NULL,
L_SHIPINSTRUCT CHAR(25) NOT NULL,
L_SHIPMODE CHAR(10) NOT NULL,
L_COMMENT VARCHAR(44) NOT NULL , primary key(L_ORDERKEY, L_LINENUMBER));

INSERT INTO lineitem_t SELECT
*
from
lineitem;
クエリ結果が59986051行の場合、テスト結果は以下の通りです(単位:秒)。
コンカレンシーの実行をする
ライトバック機能が有効になっていません。
読み書きインスタンスでのINSERT…SELECT…の実行時間
ライトバック機能を有効にする
読み取り専用分析エンジンにおけるINSERT…SELECT…の実行時間
コンカレンシーの有効化しません。
622.7
1441.02
コンカレンシー数:8
259.20
コンカレンシー数:16
181.79
コンカレンシー数:32
185.64

ヘルプとサポート

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

フィードバック