重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

HTAPクラスターを使用する

HTAPは、ハイブリッドトランザクション/分析処理を意味します。 TiDB CloudのHTAPクラスタは、トランザクション処理用に設計された行ベースのストレージエンジンであるTiKVと、分析処理用に設計された列型ストレージであるTiFlashで構成されています。アプリケーションデータは最初にTiKVに保存され、次にRaftコンセンサスアルゴリズムを介してTiFlashに複製されます。つまり、行ストアから列ストアへのリアルタイムレプリケーションです。

TiDB Cloudを使用すると、HTAPワークロードに応じて1つ以上のTiFlashノードを指定することで、HTAPクラスタを簡単に作成できます。クラスタの作成時にTiFlashノード数が指定されていない場合、またはTiFlashノードをさらに追加する場合は、ノード数をクラスタのスケーリングずつ変更できます。

ノート:

開発者層クラスタにはデフォルトで1つのTiFlashノードがあり、その数を変更することはできません。

デフォルトでは、TiKVデータはTiFlashに複製されません。次のSQLステートメントを使用して、TiFlashに複製するテーブルを選択できます。

ALTER TABLE table_name SET TIFLASH REPLICA 1;

レプリカ数は、TiFlashノードの数を超えてはなりません。レプリカの数を0に設定すると、TiFlashでレプリカが削除されます。

レプリケーションの進行状況を確認するには、次のコマンドを使用します。

SELECT * FROM information_schema.tiflash_replica WHERE TABLE_SCHEMA = '<db_name>' and TABLE_NAME = '<table_name>';

TiDBを使用してTiFlashレプリカを読み取る

データがTiFlashに複製された後、次の3つの方法のいずれかを使用してTiFlashレプリカを読み取り、分析コンピューティングを高速化できます。

スマートセレクション

TiFlashレプリカを含むテーブルの場合、TiDBオプティマイザは、コスト見積もりに基づいてTiFlashレプリカを使用するかどうかを自動的に決定します。例えば:

explain analyze select count(*) from test.t;
+--------------------------+---------+---------+--------------+---------------+----------------------------------------------------------------------+--------------------------------+-----------+------+
| id                       | estRows | actRows | task         | access object | execution info                                                       | operator info                  | memory    | disk |
+--------------------------+---------+---------+--------------+---------------+----------------------------------------------------------------------+--------------------------------+-----------+------+
| StreamAgg_9              | 1.00    | 1       | root         |               | time:83.8372ms, loops:2                                              | funcs:count(1)->Column#4       | 372 Bytes | N/A  |
| └─TableReader_17         | 1.00    | 1       | root         |               | time:83.7776ms, loops:2, rpc num: 1, rpc time:83.5701ms, proc keys:0 | data:TableFullScan_16          | 152 Bytes | N/A  |
|   └─TableFullScan_16     | 1.00    | 1       | cop[tiflash] | table:t       | time:43ms, loops:1                                                   | keep order:false, stats:pseudo | N/A       | N/A  |
+--------------------------+---------+---------+--------------+---------------+----------------------------------------------------------------------+--------------------------------+-----------+------+

cop[tiflash]は、タスクが処理のためにTiFlashに送信されることを意味します。クエリでTiFlashレプリカが選択されていない場合は、 analyze tableステートメントを使用して統計を更新してから、 explain analyzeステートメントを使用して結果を確認してください。

エンジンの分離

エンジンの分離とは、 tidb_isolation_read_enginesの変数を構成することにより、すべてのクエリが指定されたエンジンのレプリカを使用するように指定することです。オプションのエンジンは、「tikv」、「tidb」(一部のTiDBシステムテーブルを格納し、ユーザーがアクティブに使用できないTiDBの内部メモリテーブル領域を示します)、および「tiflash」です。

set @@session.tidb_isolation_read_engines = "engine list separated by commas";

手動ヒント

手動ヒントにより、TiDBは、エンジンの分離を満たすことを前提として、1つ以上の特定のテーブルに指定されたレプリカを使用するように強制できます。手動ヒントの使用例を次に示します。

select /*+ read_from_storage(tiflash[table_name]) */ ... from table_name;

TiFlashの詳細については、ドキュメントここを参照してください。