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

TiDB 7.5 LTS新機能の紹介

TiDB 7.5 LTS新機能の紹介

ウェビナー開催日:2024年1月25日

本スライドでは、2023年12月にリリースされた分散型データベースTiDB 7.5 LTSの新機能を紹介いたします。

TiDB 7.5は2023年12月のウェビナーで紹介するMySQL 8.0互換対応の他にも、複数インデックス作成の高速化、分散実行フレームワークの導入、リソースコントロール機能の拡充などの多くの新機能が追加されています。

TiDB 7.5は、TiDB 7.1に続くLTS (Long Term Support) リリースであり、TiDB 7.5で新たに追加された機能だけでなく、TiDB 7.2から7.4 DMRまでの新機能を全て含む、本番環境での利用を推奨するバージョンです。また、TiDBの新しいバージョンをTiDB Cloudで利用する方法についても説明します。

トピック
・TiDB 7.5 LTSの位置づけ
・複数インデックス作成の高速化
・分散実行フレームワークの導入
・リソースコントロール機能の拡充
・TiDB 7.5をTiDB Cloudで利用する方法

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

PingCAP-Japan

January 26, 2024
Tweet

More Decks by PingCAP-Japan

Other Decks in Technology

Transcript

  1. これまでのウェビナースケジュール https://pingcap.co.jp/event/ 
 
 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新機能の紹介 2023年6月15日(木) 14:00 - 15:00 【TiDB Serverless GA直前】TiDB新章。Serverless + Data API + AIによる新 たな活用 2023年7月27日(木) 14:00-15:00 TiDB Cloud最新状況の紹介 2023年9月14日(木) 14:00-15:00 TiDBとMySQLの互換性改善アップデート 2023年11月1日(木) 14:00-15:00 TiDB Operatorの紹介 2023年12月21日(木) 14:00-15:00 TiDB 7.4:MySQL 8.0互換性対応の紹介 2024年1月25日(木) 14:00-15:00 TiDB 7.5 LTS新機能の紹介 ※過去開催アーカイブ:https://pingcap.co.jp/event-video/
  2. アジェンダ • TiDB 7.5 LTSの位置づけ • 分散実行フレームワークの導入 • リソースコントロール機能の拡充 •

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

    ◦ 新機能が追加されます ◦ 不具合の修正を含むパッチリリース (例: TiDB v7.1.3)も提供されます • DMR - Development Milestone Releaseの略 ◦ 約2ヶ月間隔でリリースされます ◦ 新機能が追加されます ◦ 不具合の修正を含むパッチリリース (例 v7.4.1)は提供されません ▪ DMRで発生した不具合の修正は次の DMRまたはLTSに含まれます ▪ DMRのパッチリリースバージョンは常に 0となります(v7.2.0, v7.3.0, v7.4.0) • LTS、DMRはTiDB 6.0.0から導入されました ◦ TiDB 5以前のバージョンは全て LTSと同等の扱いとなります TiDB LTS、DMRとは何か(おさらい)
  4. これまでのLTSと主な新機能 • TiDB 6.5 LTS ◦ 2022年12月リリース ◦ TiDB 6.1と比べて10倍のインデックス作成の高速化

    ◦ TiDBサーバーレベルメモリコントロール ◦ 詳細はウェビナー“TiDB 6.5 LTS新機能の紹介”へ ▪ https://pingcap.co.jp/event-webinar-tidb-6-5-lts-thank-you/ • TiDB 7.1 LTS ◦ 2023年5月リリース ◦ リソースコントロール機能の改善 ◦ リモートストレージからの LOAD DATA ◦ 詳細はウェビナー“TiDB 7.0 DMR新機能の紹介”へ(TiDB 7.1 LTSの機能紹介を含んでいます ) ▪ https://pingcap.co.jp/event-webinar-tidb-7-0-dmr-new-feature-thank-you/
  5. TiDB 7.5 LTSの特徴 • MySQL 8.0互換 ◦ 詳細は”TiDB 7.4:MySQL 8.0互換性対応の紹介”ウェビナーへ

    ◦ https://pingcap.co.jp/webinar-tidb-7-4-mysql-8-0-compatibility/ • スケーラビリティーとパフォーマンスの向上 • 安定性、可用性の向上 • データベース操作と可観測性の向上 ◦ 本ウェビナーの説明内容
  6. 分散実行フレームワークの導入 • Distributed eXecution Framework (DXF) / 分散実行フレームワークの頭文字 • バックグラウンドを分散の

    TiDBサーバーで分散して実行可能 ◦ ADD INDEX と IMPORT INTO(Lightning相当の機能をSQLで実装)に対応 ◦ 従来、DDL等のバックグラウンドタスクは、単一 TiDBノード(例: DDL owner)のみで実施
  7. 複数インデックス作成の高速化(例) • 一つのテーブルに複数のインデックスを作成する場合 • 従来のTiDB ◦ インデックス毎にテーブルレコードを複数回スキャン ◦ 同時に作成できるインデックスは一つ ◦

    Note: 単一インデックスの作成高速化は TiDB 6.5で実現 • TiDB 7.5以降 ◦ 複数のインデックス分のテーブルレコードを一回スキャン ◦ 同時に1つのテーブル複数のインデックスを作成可能 • https://docs.pingcap.com/tidb/stable/release-7.5.0 より > Especially in scenarios with wide tables, internal test data shows that performance can be improved by up to 94%. (列幅の大きいテーブルに対して、社内のテストでインデックス作成速度が 94%向上)
  8. DXFを利用するには • 前提 : Fast Online DDLが有効であること (TiDB 6.5 LTSで導入)

    ◦ tidb_ddl_enable_fast_reorg ▪ ”TiDB 6.1と比べて10倍のインデックス作成の高速化 ”の基盤となるFast Online DDL設定 ▪ デフォルト値: true ◦ tidb_ddl_disk_quota ▪ デフォルト値: 107374182400 (100GiB) ▪ 設定可能な範囲は100GiBから1 PiB ▪ Fast Online DDLに利用するTiDBディスクサイズの上限 ◦ temp-dir ▪ Fast Online DDLで利用する一時的なディスクへのパス ▪ デフォルト値: ”/tmp/tidb” (存在しない場合は起動時に自動的に作成 )
  9. DXFを利用するには(続) • tidb_enable_dist_task ◦ DXFを有効にするかどうかを制御 ◦ デフォルト値: OFF mysql> select

    @@global.tidb_enable_dist_task; +--------------------------------+ | @@global.tidb_enable_dist_task | +--------------------------------+ | 0 | +--------------------------------+ mysql> SET GLOBAL tidb_enable_dist_task = ON; mysql> select @@global.tidb_enable_dist_task; +--------------------------------+ | @@global.tidb_enable_dist_task | +--------------------------------+ | 1 | +--------------------------------+ • デフォルトでは、TiDBクラスタ内に存在する全ての TiDBサーバーでDXFタスクが分散実行されます
  10. DDLノード • TiDBサーバーに役割を持たせることが可能になりました ◦ DXFタスク(background)を実行するTiDBサーバーを指定できます • tidb_service_scope ◦ デフォルト値: “”

    (空文字) ◦ 指定可能な値: ””(空文字)またはbackground • 設定例 ◦ 「すべての」TiDBサーバーのtidb_service_scopeがデフォルトの空文字だった場合 ▪ すべてのTiDBサーバーでDXFタスクが分散して実行されます ◦ 「いずれかの」TiDBサーバーのtidb_service_scope が backgroundの場合 ▪ backgroundが指定されたTiDBサーバーのみでDXFタスクが実行されます • ユースケース ◦ 大きなインデックスを追加するときに、アドホックに DDL処理用のTiDBノードを追加(scale out)し、 tidb_service_scopeをbackgroundとして、インデックス追加後 TiDBノードを削除(scale in)す る
  11. グローバルソート • グローバルソートは2段階で行われます • ステップ1: データのスキャンと準備 ◦ Key-Valueペアを作成しS3にアップロード ◦ Key-Valueペアの統計情報もS3にアップロード

    • ステップ2: データの分類と配布 ◦ S3から統計情報を利用 ◦ データを各TiDBサーバーに再分割 • https://docs.pingcap.com/tidb/stable/tidb-global-sort
  12. グローバルソートを利用するには • tidb_enable_dist_task ◦ デフォルト値: OFF mysql> SET GLOBAL tidb_enable_dist_task

    = ON; mysql> select @@global.tidb_enable_dist_task; +--------------------------------+ | @@global.tidb_enable_dist_task | +--------------------------------+ | 1 | +--------------------------------+ • tidb_cloud_storage_uri ◦ デフォルト値: “”(空文字) ◦ 設定例 SET GLOBAL tidb_cloud_storage_uri = 's3://my-bucket/test-data?role-arn=arn:aws:iam::888888888888:role/my-role' • Amazon S3のbucketとTiDBからのアクセス制御は別途行う必要があります
  13. バックグラウンドタスクにリソースコントロールを適用 • リソースコントロールをバックグラウンドタスクに対して適用可能になりました • 従来のTiDB ◦ TiDB 7.1で導入された時点では、リソースコントロールの対象はユーザーが実行するフォアグラウ ンドプロセス(DML、SELECT)に限られていた •

    TiDB 7.5以降 ◦ リソースコントロールの適用範囲をバックグラウンドタスクにも拡充し、フォアグラウンドプロセスへ の影響を抑えることが可能 ◦ バックグラウンドタスクの優先度が設定可能 ▪ Auto analyze, バックアップとリストア、オンライン DDLなど ▪ 将来はすべてのDDLに対して拡張予定 ◦ TiDB 7.5時点では実験的(experimental)な機能です
  14. バックグラウンドタスクにリソースコントロールを適用 • リソースコントロールの TASK_TYPESにバックグラウンドタスクが追加されました ◦ どのバックグラウンドタスクをリソースコントロールで制御するか ◦ デフォルトは”” (空文字) (バックグラウンドタスクはリソースコントロールで制御しない

    ) ◦ 設定可能な値: lightning, br, ddl, stats,background • 設定例 ◦ br(Backup & Recovery)とDDL実行をdefaultリソースグループに追加 mysql> ALTER RESOURCE GROUP `default` BACKGROUND=(TASK_TYPES='br,ddl') ; ◦ defaultリソースグループからバックグラウンドタスクを削除 mysql> ALTER RESOURCE GROUP `default` BACKGROUND=(TASK_TYPES="") ; • tidb_request_source_type セッション変数 ◦ セッション単位でタスクタイプを設定 mysql> SET @@tidb_request_source_type = "background".;
  15. Runaway(暴走)クエリー • 一定時間を超えるクエリーに対して制御が可能になりました • 従来のTiDB ◦ リソースグループ「全体」に対してのリソース制御 ◦ 個々のクエリに対しての実行時間の制御ができなかった •

    TiDB 7.5以降 ◦ 個々のクエリーに対して、一定の実行時間を超えるクエリー (Runaway)を制御することが可能にな りました ◦ 一定時間を超えたクエリーに対して、優先度を下げたり、 KILLしたりすることが可能です
  16. Runaway(暴走)クエリーを制御するには • リソースコントロールの QUERY_LIMITに下記3つのパラメータが追加されました ◦ EXEC_ELAPSED : 実行時間 ◦ ACTION

    : EXEC_ELAPSEDを超えたクエリーに対するアクション ◦ WATCH : 「同一クエリー」の判断基準 • ACTION に設定できる値と意味 ◦ DRYRUN : information_schema.runaway_watches テーブルにクエリーを記録するのみ ◦ COOLDOWN : 該当クエリーの優先度を一番低くする ◦ KILL : 該当クエリーをKILLする
  17. Runaway(暴走)クエリーを制御するには • WATCHに設定できる値と意味 ◦ EXACT : 全く同じ文字列のSQLのみを同一として扱う ◦ SIMILAR :

    Plan digestが同一であれば同一 SQLとして扱う ▪ 大文字小文字、where句に指定されたリテラルの違いは無視されます ▪ 例: 下記2つのSQL digestは同一です SELECT * FROM employee WHERE id IN (1, 2, 3) AND salary BETWEEN 1000 AND 2000; select * from EMPLOYEE where ID in (4, 5) and SALARY between 3000 and 4000; ◦ PLAN : Plan digestが同一であれば同一 SQLとして扱う ▪ 大文字小文字の違いは無視されます
  18. Runaway(暴走)クエリーを制御するには • 設定例 ◦ 実行時間が60秒を超えたクエリーの優先度を最も低くする (COOLDOWN) mysql> CREATE RESOURCE GROUP

    IF NOT EXISTS rg1 RU_PER_SEC = 500 QUERY_LIMIT=( EXEC_ELAPSED='60s', ACTION=COOLDOWN ); ◦ 実行時間が60秒を超えたクエリーを KILLし、以後10分間類似するクエリーは即座に KILLする mysql> ALTER RESOURCE GROUP rg1 QUERY_LIMIT=(EXEC_ELAPSED='60s', ACTION=KILL, WATCH=SIMILAR DURATION='10m') ; ◦ Runawayクエリーの設定を無効にする mysql> ALTER RESOURCE GROUP rg1 QUERY_LIMIT=NULL ;
  19. その他の新機能 • TiDB Lightningの物理インポートがIMPORT INTO SQL文で実施可能になりました ◦ TiDB Lightningのインストールが不要となりました •

    DDLの一時停止と再開機能が一般公開 (GA)となりました mysql> ADMIN PAUSE DDL JOBS 1,2; mysql> ADMIN RESUME DDL JOBS 1,2; • BR(Backup & Recovery)で統計情報のバックアップとリストアが可能になりました ◦ --ignore-stats オプションで設定可能です • TiDBダッシュボードでTiKVのヒーププロファイルが取得可能になりました • パーティション表での global stats統計の生成が改善されました ◦ 利用するメモリサイズが削減されています
  20. TiDB 7.5をTiDB Cloudで利用する方法 • TiDB Dedicated ◦ 2024年1月3日以降に作成された TiDB Dedicatedのデフォルトバージョンが

    7.5.0となりました ◦ https://docs.pingcap.com/tidbcloud/tidb-cloud-release-notes#january-3-2024 ◦ それ以前のバージョンをご利用で、 TiDB 7.5.0へのアップグレードを希望されるお客様は弊社テク ニカルサポート宛てにチケットを起票ください • TiDB Serverless ◦ 現在TiDB ServerlessではTiDB 7.5をご利用いただけません
  21. Q&A