Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TiFlashの紹介

 TiFlashの紹介

ウェビナー開催日:2023年3月24日

このビデオでは、分散データベースTiDBのHTAPにおける"A"、Analytics (分析) を支えるTiFlash (タイ・フラッシュ) について紹介します。TiFlashは、TiKV (TiDBを構成するコンポーネントの1つでストレージレイヤー) からのデータをほぼリアルタイムで更新し、データを列単位で保存します。TiKVでは不得意なオンライントランザクションで更新された直後のデータの分析クエリを実現します。また、TiFlashは50億以上のGitHubイベントの情報を可視化するサイト「OSSInsight (オー・エス・エス・インサイト) 」の裏側を支える重要なコンポーネントです。

昨年末にリリースされたTiDB 6.5 LTSでもTiFlashに関する新機能が追加されています。このビデオでは、TiFlashをTiDB Cloudで利用する方法についても説明します。

トピック:

・HTAPとは何か (おさらい)
・TiFlashがどのようにTiKVとデータを同期しているのか
・TiFlashのMPPモードの紹介
・TiDB 6.5 LTSでのTiFlashに関する新機能 (Pushdown, TiFlashへのinsert等) の紹介
・TiFlashをTiDB Cloudで使うには

アーカイブ動画:https://youtu.be/tyvna9ZiOdQ

PingCAP-Japan

March 24, 2023
Tweet

More Decks by PingCAP-Japan

Other Decks in Technology

Transcript

  1. TiFlashの紹介

    本多康夫
    Technical support engineer at PingCAP Japan

    View Slide

  2. これまでのウェビナースケジュール
    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/

    View Slide

  3. 次回以降のウェビナースケジュール
    https://pingcap.co.jp/event/
    
 

    2023年4月13日(木) 14:00-15:00 TiDBにおけるSQLチューニング - SQL Bindingの紹介

    View Slide

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

    View Slide

  5. HTAPとはなにか

    View Slide

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

    View Slide

  7. TiFlashとはなにか

    View Slide

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

    TiFlashとは何か
    TiFlash

    View Slide

  9. TiFlashを利用する方法

    View Slide

  10. ● 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を利用する方法(インフラ視点)

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  14. ● 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を利用する方法(アプリケーション)

    View Slide

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

    View Slide

  16. TiFlashのデータの同期

    View Slide

  17. ● 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のデータ同期

    View Slide

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

    View Slide

  19. TiFlash MPPの紹介

    View Slide

  20. ● 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

    View Slide

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

    View Slide

  22. TiDB 6.5でのTiFlashの新機能

    View Slide

  23. ● 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の新機能

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. TiFlashをTiDB Cloudで利用する方法

    View Slide

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

    View Slide

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

    View Slide

  30. ● 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で利用する方法

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. Thank You!

    https://www.pingcap.com/

    [email protected]

    View Slide