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

TiDB 7.0 DMR新機能の紹介

TiDB 7.0 DMR新機能の紹介

ウェビナー開催日:2023年5月18日

このスライドでは、2023年3月末にリリースされた分散型データベースTiDB 7.0 DMRの新機能を紹介いたします。TiDB 7.0では、リソースコントロール機能の改善、非prepared statementの実行計画のキャッシュ、TiFlashのcompute nodeとstorage nodeを分離し、storage nodeにAmazon S3を利用可能になるなど、メジャーバージョンアップとして新機能を積極的に追加しています。また、TiDB 6.5 LTS以降にリリースされた、TiDB 6.6 DMRで追加されたPartitioned Raft KVストレージエンジン、外部キーのサポートについても紹介いたします。

TiDB 7.0、6.6のDMRバージョンで追加された新機能は、2023年半ばに予定されている次のLTSでも利用可能となります。将来のITSで予定されている新機能を事前に知っていただく機会としてご利用ください。

トピック
・TiDB 7.0 DMR新機能の紹介
・TiDB 6.6 DMR新機能の紹介
・TiDB 7.0 DMRをTiDB Cloudで利用するには

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

PingCAP-Japan

May 18, 2023
Tweet

More Decks by PingCAP-Japan

Other Decks in Technology

Transcript

  1. これまでのウェビナースケジュール https://pingcap.co.jp/event/ 
 
 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生成を試してみ よう! 2023年3月24日(木) 14:00 - 15:00 TiFlashの紹介 2023年4月13日(木) 14:00 - 15:00 TiDBにおけるSQLチューニング SQL bindingのご紹介 2023年5月18日(木) 14:00 - 15:00 TiDB 7.0 DMR新機能の紹介
  2. アジェンダ • TiDBのLTS、DMRとは何か • TiDB 7.0 DMR新機能の紹介 • TiDB 6.6

    DMR新機能の紹介 • TiDB 7.0 DMRをTiDB Cloudで利用するには • 次のLTSの予定 • Q&A, アンケートのお願い • お知らせ
  3. • 新機能を頻繁にリリースするサイクルと、比較的安定したリリースするサイクルの両立を図る • LTS - Long Term Supportの略 ◦ 約6ヶ月間隔でリリースされます

    ◦ 新機能が追加されます ◦ 不具合の修正を含むパッチリリース (例: TiDB 6.1.3やTiDB 6.5.2)も提供されます ◦ 最新のLTSはTiDB 6.5.2 • DMR - Development Milestone Releaseの略 ◦ 約2ヶ月間隔でリリースされます ◦ 新機能が追加されます ◦ 不具合の修正を含むパッチリリースは提供されません ▪ DMRで発生した不具合の修正は次の DMRまたはLTSに含まれます ▪ DMRのパッチリリースバージョンは常に 0となります(v6.2.0, v6.3.0, v6.4.0) • LTS、DMRはTiDB 6.0.0から導入されました ◦ TiDB 5以前のバージョンは全て LTSと同等の扱いとなります TiDB LTS、DMRとは何か
  4. • 次のTiDB LTSでは、これまでのDMRの新機能が累積して含まれます • DMR自体を導入しなくても、その新機能について前もって知っていただく機会となります • DMR自体をお試しいただき、フィードバックをいただくことで次の LTSでの機能が改善される可能性もあり ます •

    次のLTSには、前回のTiDB 6.5以降にリリースされた TiDB 6.6と7.0の機能が含まれるため、本ウェビ ナーでは、TiDB 7.0 DMRの新機能に加えて、 TiDB 6.6についても説明します DMRについて知る意義
  5. • リソースコントロール機能の改善 • Non-prepared statementの実行計画のキャッシュ • TiFlashのcompute nodeとstorage nodeを分離 •

    PiTRとインデックス高速化の非互換性の解消 • リモートストレージからの LOAD DATA • その他の新機能 TiDB 7.0 DMR新機能の紹介
  6. リソースコントロール機能の改善 1. 3つの業務が同時に稼働しており、 OLTP(緑)がピーク負荷になっている 2. OLTP業務(緑)がアイドルタイムに入り、 OLTPピーク負荷が終了し、バッチ (青)業 務がバーストされる 3.

    OLTP業務(緑)がビジータイムに戻り、 OLTPピーク負荷に切り替わる (HR業務(黄色)は常に制限されたリソースのみを利用している ) > CREATE RESOURCE GROUP oltp RU_PER_SEC=4000 BURSTABLE; > CREATE RESOURCE GROUP batch RU_PER_SEC=400 BURSTABLE; > CREATE RESOURCE GROUP hr RU_PER_SEC=400; After ワークロードをクォータで制限可能とし、また必要に応じてバースト可 能となる • クリティカルなワークロードへの影響を最小化する • 場合によってクォータを超えた利用 (バースト)を許可する Before 予想できないワークロードによって、他の処理の妨げになることが ある
  7. • RU ◦ Request Unitの略 ◦ CPU、IOPS、IO帯域を抽象化した単位 ◦ RU_PER_SECで設定する ◦

    クラスターのキャパシティを CALIBRATE RESOURCE 文で算出し、それを元に割り当てる • BURSTABLE ◦ リソースグループに割り当てられた RU(Request Unit)以上の空きリソースがクラスターにある場 合、それを利用可能にする (デフォルトは無効) • リソースコントロールに関する設定 ◦ TiDB tidb_enable_resouce_control ▪ リソースコントロールを有効にするかどうか ▪ デフォルトは`ON`(有効) ◦ TiKV: resource-control.enabled ▪ TiKVでリソースコントロールを有効にするかどうか ▪ デフォルトは`true` (有効) リソースコントロール機能の改善
  8. • Before: TiDBにおける実行計画のキャッシュは Prepared statementのみ対応していた ◦ 明示的にPrepared statementとして PREPARE、SET、EXECUTEする必要がありました ◦

    例 : PREPARE `books_query` FROM 'SELECT * FROM `books` WHERE `id` = ?' ; SET @id = 1; EXECUTE `books_query` USING @id; • After : TiDBにおける実行計画のキャッシュする範囲を拡張しました ◦ Prepared statementを明示的に実行しなくても、下記のような SQLを実行するだけ ◦ SELECT * FROM `books` WHERE `id` = 1 ; • リテラル部分( `id` = 1 )を内部的にパラメータ化して置き換えた実行計画をキャッシュ可能に ◦ SELECT * FROM `books` WHERE `id` = ? ; • Non-prepared statement実行計画のキャッシュにより期待できる効果 ◦ 実行計画を作成する CPU時間の削減をアプリケーション改修なしで可能に ◦ 実行計画をキャッシュするメモリが必要となります (設定については後述 ) • Oracleデータベースでの CURSOR_SHARING = FORCE に設定した動作と類似しています Non-prepared statementの実行計画のキャッシュ
  9. • Non-prepared statement実行計画のキャッシュに関する設定 ◦ tidb_enable_non_prepared_plan_cache ▪ Non-prepared statementの実行計画をキャッシュするかどうか ▪ デフォルトは`OFF`(無効)

    ◦ tidb_non_prepared_plan_cache_size ▪ Non-prepared statementの実行計画をキャッシュする数 ▪ デフォルトは100で、1から100000(10万)の範囲で設定可能 • Note ◦ 実行計画のキャッシュは connection単位で行われ、TiDBサーバー単位ではありません ◦ 現在は実験的(experimental)な機能となっています Non-prepared statementの実行計画のキャッシュ
  10. After • Computeとstorageノードをそれぞれスケーリング 可能 ◦ 高速なスケーリング ◦ 安価なインフラコスト • 分離

    - Write Node, Compute Nodeの分離 • オブジェクトストレージ (Amazon S3)利用可能 Before • TiFlash の利用コストが問題になる • スケーリングが難しい • 書き込みと読み込みが干渉する可能性がある TiFlashのcompute nodeとstorage nodeを分離
  11. After • Lightningの機能を`LOAD DATA`に統合しました • Amazon S3から直接 LOAD DATA INFILEが可

    能になっています Before リモートソースからのインポートやインポートジョブの管理には、 Lightningを使用する必要がありました リモートストレージからのLOAD DATA LOAD DATA INFILE 's3://bucket-name/test.csv?access_key=XXX&secret_access_key=XXX' INTO TABLE my_db.my_table FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\n' WITH detached;
  12. • TiDB 7.0をリリース:信頼性の高いパフォーマンスと運用のしやすさを実現 - PingCAP株式会社 • TiFlashのSpill to Diskによる分析ワークロード安定化 •

    TTLテーブルによるデータの自動期限切れと削除 • KEYパーティショニングでスケーラビリティを向上 • REORGANIZEパーティションで変化する要件に対応 その他の新機能
  13. Partitioned Raft KVストレージエンジン After • スケールイン、アウトの高速化 • 読み取り増幅の削減 • Compactionでの干渉の軽減

    • 大きなリージョンサイズ (15GB) Before • TiKVノードの書き込みはシングルスレッド • ワークロードの干渉 • スケールイン、スケールアウトに時間がかかる Notes • 書き込みのワークロード (I/O)が多いほ ど、得られる性能向上が大きい • TiKVサーバーに必要なメモリサイズは 増える TiKVノード単位から、リージョン単位でRocksDBを起動
  14. After • 外部キーを導入している環境からの移行 • データの整合性と一貫性 Before • foreign keyのSQLは無視されていた (SQLエラーとならな

    いようにしていた ) 外部キーのサポート Product PK ProductID Name Price Order PK OrderID FK ProductID Quantity FK CustomerID Customer PK CustomerID FirstName LastName 複数テーブルのデータに参照整合性を導入し、論理的なデータ破壊を防ぐ
  15. • 外部キーに関する設定 ◦ foreign_key_checks ▪ 外部キーによる整合性の確認を行うかどうか ▪ デフォルトは`YES`(有効) • Note

    ◦ TiDB 6.5以前は、create tableでのforeign keyは構文レベルではサポートされていましたが、実際の整合性の 確認は行っていませんでした ◦ TiDB 6.5以前からTiDB 6.6以降にアップグレードをおこなっても /* FOREIGN KEY INVALID */ のコメントが付与さ れ、外部キーによる整合性の確認は行われません ◦ 一度外部キーを削除し、再度外部キーを作成することで、実際の整合性の確認を行うようになります mysql> SHOW CREATE TABLE child\G *************************** [ 1. row ]*************************** Table | child Create Table | CREATE TABLE `child` ( `id` int(11) DEFAULT NULL, `pid` int(11) DEFAULT NULL, KEY `idx_pid` (`pid`), CONSTRAINT `fk_1` FOREIGN KEY (`pid`) REFERENCES `test`.`parent` (`id`) ON DELETE CASCADE /* FOREIGN KEY INVALID */ ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin 外部キーのサポート
  16. • Dedicated Tierの場合 ◦ 各LTSバージョンまたはメンテナンスバージョンリリース後、デフォルトの TiDBバージョンが更新され ます ◦ Dedicated TierではDMRリリースはデフォルトの

    TiDBバージョンに選択されません • お客様のTiDBクラスタのDMRへのバージョンアップにより実施可能です ◦ PoCや新機能の検証のために TiDB CloudでDMRをご利用になりたい場合は、テクニカルサポート 宛てにチケットの起票をお願いいたします • Serverless Tierの場合 ◦ 現在ご利用いただけるバージョンは TiDB 6.6.0となり、TiDB 7.0は現在Serverless Tierではご利用 いただけません TiDB 7.0をTiDB Cloudで利用する方法
  17. • GA(General Availability)になる予定の機能 ◦ リソースコントロール ◦ Multi-valued index ◦ Generated

    columns • 7.1 で追加される予定の新機能 ◦ Load base replica read ◦ DDL pause and resume (experimental) • RCのため、LTSまでに予告なく変更される可能性があります。 TiDB 7.1 新機能の紹介
  18. Q&A

  19. PingCAP Education トレーニング トレーニング全体リンク   https://en.pingcap.com/education/ 無償コース(推奨)   TiDB Technical Essentials 101:

    内容   - TiDB全体のアーキテクチャ   - TiDBの各コンポーネントのアーキテクチャ   - HTAP Overview & TiFlashのアーキテクチャ   - TiDB Cloudの始め方   - TiDB 6.0情報 Course: TiDB Essentials 101 トレーニングを通じ、TiDBの理解を深めることができます。
  20. 告知 『TiDB Cloud 検証支援キャンペーン』 今すぐ試そう! TiDB Cloud PoC 3,000USD (40万円相当) デポジット

    
 キャンペーン期間 2023年4月1日〜2023年9月30日 (最大10社) キャンペーン内容 TiDB Cloud 3,000USD (40万円相当) デポジット 対象・適用条件 下記条件を満たすお客様 (最大10社)  - TiDB Cloud Dedicated Tierを使用したことがない - 導入を検討したいプロジェクトがある - 検討事例/プロモーションへのご協力 ※フォームにご入力の上、キャンペーンにお申し込みください。審査結果およびキャンペーンの詳細について担当者より連絡いたします。
  21. OSS Insight : 活発度が分かる分析サービス 46億を超えるGitHub上のイベント分析するデータベースとしてTiDB (TiFlash)を活用 https://ossinsight.io/ ①各イベント発生の推移 ①GitHubイベント データを1分おきに同期

    +TiFlash https://ossinsight.io/ ②Pull requests地域の表示 ②分析クエリを TiFlash(カラムストア ) で高速処理 ③ジャンル内での比較(人気言語等) etc…