Slide 1

Slide 1 text

TiFlashの紹介
 本多康夫 Technical support engineer at PingCAP Japan

Slide 2

Slide 2 text

これまでのウェビナースケジュール https://pingcap.co.jp/event/ 
 
 2022年12月9日(金) 14:00-15:00 PingCAP Education:TiDB Data Migrationのご紹介 2022年12月22日(木) 14:00-15:00 PingCAP Education:TiDBでの索引設計 2023年1月13日(金) 14:00-15:00 PingCAP Education : インデックスに基づいたチューニング 2023年1月20日(金) 14:00-15:00 PingCAP Education : TiCDC、Dumpling、Lightningの紹介 2023年2月3日(金) 14:00-15:00 TiDB 6.5 LTS新機能の紹介 2023年2月17日(金) 14:00-15:00 PingCAP Education: TiDB CloudのIntegration機能の紹介 - Datadog、 Prometheus、Vercelとの統合 2023年3月2日(木) 14:00-15:00 ハンズオン TiDB Cloud Serverless TierとChatGPTのSQL生成を試してみ よう! ※過去開催アーカイブ : https://pingcap.co.jp/event-video/

Slide 3

Slide 3 text

次回以降のウェビナースケジュール https://pingcap.co.jp/event/ 
 
 2023年4月13日(木) 14:00-15:00 TiDBにおけるSQLチューニング - SQL Bindingの紹介

Slide 4

Slide 4 text

アジェンダ ● HTAPとはなにか ● TiFlashとは何か ● TiFlashを利用する方法 ● TiFlashのデータの同期 ● TiFlash MPPの紹介 ● TiDB 6.5でのTiFlashの新機能 ● TiFlashをTiDB Cloudで利用する方法 ● Q&A, アンケートのお願い

Slide 5

Slide 5 text

HTAPとはなにか

Slide 6

Slide 6 text

● HTAP : Hybrid Transactional and Analytical Processing の略 ● OLTP(トランザクション処理 )とOLAP(分析処理)を同時に処理する HTAPとはなにか

Slide 7

Slide 7 text

TiFlashとはなにか

Slide 8

Slide 8 text

● TiDBクラスタ、TiDB Cloudを構成する列指向のストレージコンポーネント ○ TiFlashは、少数の列、多数の行からの集約などの処理に向く ○ TiKVは「行指向」のストレージコンポーネント : 多く(または全て)の列の更新、少数の行の処理に向 く TiFlashとは何か TiFlash

Slide 9

Slide 9 text

TiFlashを利用する方法

Slide 10

Slide 10 text

● tiupまたはKubernetesとTiDB Operatorを利用する場合 ● ハードウェア要件(Production) ○ https://docs.pingcap.com/tidb/stable/hardware-and-software-requirements ○ CPU : 48コア以上 ○ メモリー : 128GB以上 ○ ストレージ ○ TiKVに比べて求められるハードウェア要件が高い ● CPU要件の変更 ○ CPU が AVX2 命令セットをサポートしている必要があります ■ 2013年のコードネームHaswellより利用可能 ○ cat /proc/cpuinfo | grep avx2 でAVX2サポートの有無が確認可能 ● TiDBクラスタ構築時にはTiFlashサーバーはオプションです ○ 初期構築時に追加、またはあとから scale out、scale inが可能です TiFlashを利用する方法(インフラ視点)

Slide 11

Slide 11 text

● TiFlashのデータはTiKVからレプリカとして作成されます ● レプリカの作成単位 ○ レプリカはテーブルごと、あるいはデータベースごとに作成可能です ■ ALTER TABLE <テーブル名> SET TIFLASH REPLICA <レプリカ数>; ■ ALTER DATABASE <データベース名> SET TIFLASH REPLICA <レプリカ数>; ● TiFlashサーバーを追加しただけでは、テーブルのレプリカは作成されません ● レプリカ数の上限はTiFlashのノード数です ● 各TiFlashサーバーのレプリカの内容は同一です TiFlashを利用する方法(利用者視点)

Slide 12

Slide 12 text

● レプリカの作成状況の確認方法 ○ information_schema.tiflash_replica でレプリカの作成状況を確認できます ● REPLICA COUNT : 設定したTiFlashのレプリカ数 ● AVAILABLE : TiFlashのレプリカが利用可能なら 1、使用不可の場合は 0 ● PROGRESS : 値は0から1の小数点でレプリカの進行状況を示します TiFlashを利用する方法(利用者視点)

Slide 13

Slide 13 text

● レプリカの削除 ○ レプリカを削除するには、レプリカ数に 0を設定します ■ ALTER TABLE <テーブル名> SET TIFLASH REPLICA 0; ■ ALTER DATABASE <データベース名> SET TIFLASH REPLICA 0; ● TiFlashサーバーを完全に削除する場合は、すべてのレプリカ数を 0にします ○ scale in(TiFlashサーバー数を減らす )場合も、レプリカ数を scale in後のTiFlashサーバー数まで変 更する必要があります TiFlashを利用する方法(利用者視点)

Slide 14

Slide 14 text

● TiFlashからデータを検索する ○ TiFlashにあるテーブルもTiKVにあるテーブル名も同じです ● SQLの実行 ○ “スマートセレクション ”による自動選択 ■ フルスキャンなどTiFlashに適したSQLの場合、TiFlashが自動的に選択されます ■ ANALYZE TABLEを事前に実行される (または自動ANALYZE)を推奨します ○ セッション単位でTiFlashを強制することも可能です ■ set SESSION tidb_isolation_read_engines = "tiflash"; ■ tidb_isolation_read_enginesのデフォルト値は”tikv, tiflash, tidb”です ○ SQLのヒント ■ READ_FROM_STORAGE(TIFLASH[テーブル名]) ヒントでSQLのテーブルごとに、TiFlash からデータを読み取るようにすることが可能です ■ select /*+ READ_FROM_STORAGE(TIFLASH[t1], TIKV[t2]) */ t1.a from t t1, t t2 where t1.a = t2.a; TiFlashを利用する方法(アプリケーション)

Slide 15

Slide 15 text

● TiDBからTiFlashにpushdownされる関数の一覧 ● https://docs.pingcap.com/tidb/stable/tiflash-supported-pushdown-calculations#push-down-expressio ns ● SUM() など、列数が少なく、行数が多いものから 1行の結果を返す場合特に有効 TiFlashを利用する方法(アプリケーション)

Slide 16

Slide 16 text

TiFlashのデータの同期

Slide 17

Slide 17 text

● TiFlashのデータはTiKVの「レプリカ」として作成されます ● (参考) TiKV ○ Raftのleader : followerとしてトランザクションと同期的に更新されます ● TiFlash ○ Raftのlearnerとして、トランザクションとは非同期的に更新されます ○ Raftインデックスを利用して、検索時に snapshot isolationを担保します ■ デフォルトでは、Raft logの適用が完了し、整合性のある結果になるまで selectの結果を返す のを待ちます ● もし、TiFlashがfollowerとして参加してしまうと ... ○ TiKV(Raft)の投票に参加するため、 TiKVのcommitの時間に影響してしまう ○ TiKVからTiFlashからの応答を待っている時間分、 TiKVへのコミット時間が長くなってしまう ○ 「仮に」の話なので、実際に TiFlashがRaftのleaderまたはfollowerとして参加することはできません TiFlashのデータ同期

Slide 18

Slide 18 text

● tiflash_fastscan システム変数(デフォルトではOFF,また現在は実験的な機能 ) ● TiFlashからの検索時にMVCCなどの処理を省略することで、 TiKVとのデータの整合性は保たれないもの の、より高速な検索を実現しています。 ○ set session tiflash_fastscan=ON; TiFlashのデータ同期

Slide 19

Slide 19 text

TiFlash MPPの紹介

Slide 20

Slide 20 text

● MPPとは : massively parallel processing の略 ● 日本語では「超並列」 ● TiFlashサーバー数を増やし、同じテーブルのレプリカを複数の TiFlashサーバーから並列に読み取ること で性能向上を狙う ○ TiFlashノード間ででデータを交換し、効率的な並列コンピューティングを可能にしています ○ 従来は、単一TiFlashサーバーからTiDB Serverへのデータ転送のみ可能でした TiFlash MPPの紹介 TiDB-server TiKV/TiFlash TiKV/TiFlash TiKV/TiFlash TiKV/TiFlash TiDB-server TiKV/TiFlash TiKV/TiFlash

Slide 21

Slide 21 text

● MPPに関する設定 ○ 実行計画がMPPを考慮することを許可する (デフォルトはON) ■ tidb_allow_mpp=on(default) ○ 実行計画がMPPを強制する(デフォルトはOFF) ■ tidb_enforce_mpp=off (default) ● TiFlashのノード数を増やし、 REPLICAの数を増やすことで、複数の TiFlashサーバーを生かす TiFlash MPPの紹介

Slide 22

Slide 22 text

TiDB 6.5でのTiFlashの新機能

Slide 23

Slide 23 text

● INSERT INTO SELECT (実験的) ○ insert into selectでselect部分にTiFlashを利用することが可能になりました ■ 従来はinsert into selectのselectはTiKVからのみデータが取得可能でした ○ システム変数 tidb_enable_tiflash_read_for_write_stmt で制御可能(デフォルトは無効) ○ insertされる先はTiKVです ■ その後に通常通りLeanerプロセスを経てTiFlashにデータが伝播されます TiDB 6.5でのTiFlashの新機能

Slide 24

Slide 24 text

● 新機能の動作例 TiDB 6.5でのTiFlashの新機能

Slide 25

Slide 25 text

● tidb_enable_tiflash_read_for_write_stmt = OFF TiDB 6.5でのTiFlashの新機能 ● tidb_enable_tiflash_read_for_write_stmt = ON

Slide 26

Slide 26 text

● Pushdown可能になる関数の追加 ○ 下記のJSON関連の関数がTiFlashにpushdown可能になりました ○ -> ○ ->> ○ JSON_EXTRACT() TiDB 6.5でのTiFlashの新機能

Slide 27

Slide 27 text

TiFlashをTiDB Cloudで利用する方法

Slide 28

Slide 28 text

● TiFlashは、 TiDB Cloud Dedicated Tier、Serverless Tierのどちらでも利用可能です ● Serverless Tier ○ クラスタ作成時にTiFlashサーバーがデフォルトで利用可能です TiFlashをTiDB Cloudで利用する方法

Slide 29

Slide 29 text

● Serverless Tier ○ クラスタ作成時にTiFlashサーバーがデフォルトで利用可能です ○ github_eventsテーブルがデフォルトでレプリカとして作成されています TiFlashをTiDB Cloudで利用する方法

Slide 30

Slide 30 text

● Dedicated Tier ○ クラスタ作成時 ■ TiFlashサーバーはオプションで追加可能です ○ クラスタ作成後 ■ スケールアウト(0台から1台以上に) ■ スケールイン(n台からn-1以下に減らす) ■ スケールアップ(8 vCPU 64GiBから16 vCPU 128GiGに) ■ スケールダウン(16 vCPU 128GiGから8 vCPU 64GiBに) ■ ディスクサイズの増加 ○ ディスクサイズ(Node Storage)を減らすことはできません ○ スケールイン時には、レプリカ数が TiFlashサーバー数を下回るように事前に変更ください TiFlashをTiDB Cloudで利用する方法

Slide 31

Slide 31 text

● Dedicated Tier : クラスター作成時 ○ TiFlashはオプション ○ 0台以上で構築可能 TiFlashをTiDB Cloudで利用する方法

Slide 32

Slide 32 text

● ノードスペック、ストレージサイズが調整可能 TiFlashをTiDB Cloudで利用する方法

Slide 33

Slide 33 text

● スケールアウト、スケールアップなどは右上の Connect から Modify を選びます TiFlashをTiDB Cloudで利用する方法

Slide 34

Slide 34 text

● スケールイン時には、レプリカ数がスケールイン後の TiFlashサーバー数を下回る必要があります ● “Node_quantity(0) of the node_type(COMPONENT_TYPE_TIFLASH) is less than the number of replicas for tables(1)” TiFlashをTiDB Cloudで利用する方法

Slide 35

Slide 35 text

Q&A、アンケートのお願い

Slide 36

Slide 36 text

Thank You!
 https://www.pingcap.com/
 [email protected]