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. これまでのウェビナースケジュール 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/
  2. アジェンダ • HTAPとはなにか • TiFlashとは何か • TiFlashを利用する方法 • TiFlashのデータの同期 •

    TiFlash MPPの紹介 • TiDB 6.5でのTiFlashの新機能 • TiFlashをTiDB Cloudで利用する方法 • Q&A, アンケートのお願い
  3. • HTAP : Hybrid Transactional and Analytical Processing の略 •

    OLTP(トランザクション処理 )とOLAP(分析処理)を同時に処理する HTAPとはなにか
  4. • 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を利用する方法(インフラ視点)
  5. • TiFlashのデータはTiKVからレプリカとして作成されます • レプリカの作成単位 ◦ レプリカはテーブルごと、あるいはデータベースごとに作成可能です ▪ ALTER TABLE <テーブル名>

    SET TIFLASH REPLICA <レプリカ数>; ▪ ALTER DATABASE <データベース名> SET TIFLASH REPLICA <レプリカ数>; • TiFlashサーバーを追加しただけでは、テーブルのレプリカは作成されません • レプリカ数の上限はTiFlashのノード数です • 各TiFlashサーバーのレプリカの内容は同一です TiFlashを利用する方法(利用者視点)
  6. • レプリカの作成状況の確認方法 ◦ information_schema.tiflash_replica でレプリカの作成状況を確認できます • REPLICA COUNT : 設定したTiFlashのレプリカ数

    • AVAILABLE : TiFlashのレプリカが利用可能なら 1、使用不可の場合は 0 • PROGRESS : 値は0から1の小数点でレプリカの進行状況を示します TiFlashを利用する方法(利用者視点)
  7. • レプリカの削除 ◦ レプリカを削除するには、レプリカ数に 0を設定します ▪ ALTER TABLE <テーブル名> SET

    TIFLASH REPLICA 0; ▪ ALTER DATABASE <データベース名> SET TIFLASH REPLICA 0; • TiFlashサーバーを完全に削除する場合は、すべてのレプリカ数を 0にします ◦ scale in(TiFlashサーバー数を減らす )場合も、レプリカ数を scale in後のTiFlashサーバー数まで変 更する必要があります TiFlashを利用する方法(利用者視点)
  8. • 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を利用する方法(アプリケーション)
  9. • 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のデータ同期
  10. • 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
  11. • MPPに関する設定 ◦ 実行計画がMPPを考慮することを許可する (デフォルトはON) ▪ tidb_allow_mpp=on(default) ◦ 実行計画がMPPを強制する(デフォルトはOFF) ▪

    tidb_enforce_mpp=off (default) • TiFlashのノード数を増やし、 REPLICAの数を増やすことで、複数の TiFlashサーバーを生かす TiFlash MPPの紹介
  12. • 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の新機能
  13. • TiFlashは、 TiDB Cloud Dedicated Tier、Serverless Tierのどちらでも利用可能です • Serverless Tier

    ◦ クラスタ作成時にTiFlashサーバーがデフォルトで利用可能です TiFlashをTiDB Cloudで利用する方法
  14. • 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で利用する方法