Slide 1

Slide 1 text

TiDB 7.5 LTS新機能の紹介 本多康夫 Technical support engineer at PingCAP Japan

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

次回以降のウェビナースケジュール https://pingcap.co.jp/event/ 
 
 2024年2月29日(木) 14:00 - 15:00 TiDB Cloud APIとTerraform TiDB Cloud Providerの紹介

Slide 4

Slide 4 text

アジェンダ ● TiDB 7.5 LTSの位置づけ ● 分散実行フレームワークの導入 ● リソースコントロール機能の拡充 ● その他の新機能 ● TiDB 7.5をTiDB Cloudで利用する方法 ● Q&A, アンケートのお願い ● お知らせ

Slide 5

Slide 5 text

TiDB 7.5 LTSの位置づけ

Slide 6

Slide 6 text

● 新機能を頻繁にリリースするサイクルと、比較的安定したリリースするサイクルの両立を図る ● 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とは何か(おさらい)

Slide 7

Slide 7 text

これまでの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/

Slide 8

Slide 8 text

● 2023年12月1日にリリース ● TIDB 7.1 LTS(2023年5月31日)以来のLTSリリース ● https://docs.pingcap.com/tidb/dev/release-6.5.0 TiDB 7.5 LTS

Slide 9

Slide 9 text

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/ ● スケーラビリティーとパフォーマンスの向上 ● 安定性、可用性の向上 ● データベース操作と可観測性の向上 ○ 本ウェビナーの説明内容

Slide 10

Slide 10 text

分散実行フレームワークの導入

Slide 11

Slide 11 text

分散実行フレームワークの導入 ● Distributed eXecution Framework (DXF) / 分散実行フレームワークの頭文字 ● バックグラウンドを分散の TiDBサーバーで分散して実行可能 ○ ADD INDEX と IMPORT INTO(Lightning相当の機能をSQLで実装)に対応 ○ 従来、DDL等のバックグラウンドタスクは、単一 TiDBノード(例: DDL owner)のみで実施

Slide 12

Slide 12 text

複数インデックス作成の高速化(例) ● 一つのテーブルに複数のインデックスを作成する場合 ● 従来の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%向上)

Slide 13

Slide 13 text

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” (存在しない場合は起動時に自動的に作成 )

Slide 14

Slide 14 text

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タスクが分散実行されます

Slide 15

Slide 15 text

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)す る

Slide 16

Slide 16 text

グローバルソート ● ADD INDEXやIMPORT INTOなどソート一時的なディスク容量を共有の外部ストレージに保存し、ソート の効率化を図る ● 従来のソートはTiDBサーバー単体のローカルストレージ ● Note: ○ 現在はAmazon S3のみ対応 ○ TiDB 7.5時点では実験的(experimental)な機能

Slide 17

Slide 17 text

グローバルソート ● グローバルソートは2段階で行われます ● ステップ1: データのスキャンと準備 ○ Key-Valueペアを作成しS3にアップロード ○ Key-Valueペアの統計情報もS3にアップロード ● ステップ2: データの分類と配布 ○ S3から統計情報を利用 ○ データを各TiDBサーバーに再分割 ● https://docs.pingcap.com/tidb/stable/tidb-global-sort

Slide 18

Slide 18 text

グローバルソートを利用するには ● 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からのアクセス制御は別途行う必要があります

Slide 19

Slide 19 text

リソースコントロール機能の拡充

Slide 20

Slide 20 text

バックグラウンドタスクにリソースコントロールを適用 ● リソースコントロールをバックグラウンドタスクに対して適用可能になりました ● 従来のTiDB ○ TiDB 7.1で導入された時点では、リソースコントロールの対象はユーザーが実行するフォアグラウ ンドプロセス(DML、SELECT)に限られていた ● TiDB 7.5以降 ○ リソースコントロールの適用範囲をバックグラウンドタスクにも拡充し、フォアグラウンドプロセスへ の影響を抑えることが可能 ○ バックグラウンドタスクの優先度が設定可能 ■ Auto analyze, バックアップとリストア、オンライン DDLなど ■ 将来はすべてのDDLに対して拡張予定 ○ TiDB 7.5時点では実験的(experimental)な機能です

Slide 21

Slide 21 text

バックグラウンドタスクにリソースコントロールを適用 ● リソースコントロールの 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".;

Slide 22

Slide 22 text

Runaway(暴走)クエリー ● 一定時間を超えるクエリーに対して制御が可能になりました ● 従来のTiDB ○ リソースグループ「全体」に対してのリソース制御 ○ 個々のクエリに対しての実行時間の制御ができなかった ● TiDB 7.5以降 ○ 個々のクエリーに対して、一定の実行時間を超えるクエリー (Runaway)を制御することが可能にな りました ○ 一定時間を超えたクエリーに対して、優先度を下げたり、 KILLしたりすることが可能です

Slide 23

Slide 23 text

Runaway(暴走)クエリーを制御するには ● リソースコントロールの QUERY_LIMITに下記3つのパラメータが追加されました ○ EXEC_ELAPSED : 実行時間 ○ ACTION : EXEC_ELAPSEDを超えたクエリーに対するアクション ○ WATCH : 「同一クエリー」の判断基準 ● ACTION に設定できる値と意味 ○ DRYRUN : information_schema.runaway_watches テーブルにクエリーを記録するのみ ○ COOLDOWN : 該当クエリーの優先度を一番低くする ○ KILL : 該当クエリーをKILLする

Slide 24

Slide 24 text

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として扱う ■ 大文字小文字の違いは無視されます

Slide 25

Slide 25 text

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 ;

Slide 26

Slide 26 text

その他の新機能

Slide 27

Slide 27 text

その他の新機能 ● 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統計の生成が改善されました ○ 利用するメモリサイズが削減されています

Slide 28

Slide 28 text

TiDB 7.5をTiDB Cloudで利用する方法

Slide 29

Slide 29 text

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をご利用いただけません

Slide 30

Slide 30 text

Q&A

Slide 31

Slide 31 text

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