※このブログは2023年1月18日に公開された英語ブログ「Announcing TiDB 6.5 LTS Release – Major Leap into 2023 with a Mature Enterprise Database」の拙訳です。
TiDB 6.5 Long-Term Support (LTS) リリースについてお知らせします。TiDB 6.1 LTSリリースと比較して、TiDB 6.5では30以上の新機能と60以上の機能強化および修正が追加されています。このリリースには、以下を含むエンタープライズ向けのデータベースに要求される機能が含まれています:
- 継続的かつ成熟したカーネル機能の提供
- ユーザビリティの向上
- 開発者エクスペリエンスの向上
この記事では、これらの機能および拡張のいくつかを紹介します。詳細を知りたい方は、TiDB 6.5のリリースノートをご覧ください。
継続的かつ成熟したカーネル機能
TiDB 6.5では、カーネル機能に高い優先順位をつけています。これにより、TiDBは品質と安定性において進化し続けることができます。
高速化されたDDL
TiDBの中核的な強みの1つは、オンラインのデータ定義言語 (DDL) のサポートです。この1年間で、TiDBは並列DDLのサポートを追加し、Software as a Service(SaaS)のようなマルチテナントシナリオで逐次DDL実行が互いにブロックされないようにしました。また、TiDB 6.5ではメタデータロックが導入され、DDLがDMLと干渉する問題が大幅に軽減されました。さらに、このリリースでは、フルデータのインデックス作成モード、データ転送、および並列インポートの最適化により、インデックス作成が大幅に改善されました。この強化により、DDL実行が10倍高速化されました。
下記のSysbenchの結果にあるように、TiDB 6.5はTiDB 6.1と比較してDDL実行が10倍高速化されました。また、CockroachDB v22.2やAWS Auroraの現行バージョンと比べても2~3倍高速化されています。
Comparing the acceleration ratios of fast DDLs
JSONのサポート強化
JSONデータタイプは、強いリアルタイムのデータ分析要件のあるWeb3やゲームなどのアジャイルビジネスで広く採用されています。しかし、その複雑さゆえに、JSONデータの解析は非常に困難です。TiDBは6.2以降、JSONのインデックスサポートを含むMySQL 5.7互換機能、およびその他のJSON関連ツールを継続的に導入しています。TiDB 6.5では、`->`、`->>`、`JSON_EXTRACT()`などのJSON関数のTiFlashへのプッシュダウンをサポートしています。このアプローチにより、JSONデータの分析がより効率的になるだけでなく、TiDBのリアルタイム分析の適用シーンが広がります。
グローバルメモリ制御の強化
TiDB 6.5から、メインメモリの消費量を追跡することができます。グローバルメモリ消費量がTiDB Serverで定義されたメモリのしきい値に達すると、TiDBはガベージコレクションやSQL操作のキャンセルによってメモリ使用量を制限しようとします。これにより、TiDBの安定性が確保され、メモリの使用効率が向上します。
悲観ロックによるパフォーマンスの低下を抑制
一部のトランザクションシステム、特に銀行業務では、アプリケーションはSELECT FOR UPDATEを使用して、悲観的なトランザクションで最初にレコードをロックすることにしています。これにより、データの一貫性を保護し、操作に失敗する可能性を低減します。しかし、ある行に対してSELECT FOR UPDATEを繰り返し使用すると、このレコードのクエリパフォーマンスが低下する可能性があります。ロックマークを記録することで、TiDB 6.5は繰り返された悲観的ロックがクエリ性能に与える影響を大幅に軽減します。また、1秒あたりのクエリー数(QPS)を10倍以上向上させることができます。
ユーザビリティの向上
TiDBは、MySQLのシャーディングの煩わしさに対処するためのソリューションとして開発されました。そのため、ユーザビリティは、TiDBの開発哲学の不変の部分でもあります。新しいバージョンでは、この分野でより多くの機能を継続的に提供しています。
Flashback Clusterの一般提供
オンライン環境でのデータ操作 (DML) の誤操作は、本番環境での障害につながりやすいものです。TiDB 6.5で導入されたFLASHBACK CLUSTER TO TIMESTAMP機能では、ガベージコレクションのライフタイム期間内の指定した時点にクラスタ全体をすばやくロールバックすることができます。
Flashback Clusterは、バックアップを必要とせず、数分以内の高速なクラスタロールバックをサポートします。また、DMLの誤操作によるデータリスクを最小限に抑えるため、タイムライン上で複数のロールバックを行うことができます。
大規模なトランザクションの分割をサポート
データベースが大規模データを処理している場合、大きなトランザクションを伴う単一のSQLステートメントがパフォーマンスを低下させ、クラスタを不安定にさせる可能性があります。TiDB 6.5は、大規模なトランザクションを自動的に分割することをサポートしています。これには、非トランザクションステートメントでのDELETE
、INSERT
、REPLACE
、UPDATE
を完全にサポートを含んでいます。分割されたステートメントは、トランザクションの原子性と分離を損なうかもしれませんが、クラスタ性能を大幅に向上させます。
グローバルな単調増加主キーのサポート
TiDB 6.5では、グローバルな単調増加の主キーをサポートするようになりました。このモードでは、TiDBは集中型の主キー割り当て方法を採用し、主キーの単調増加を保証します。このモードでは、TiDBインスタンス間のアクセスシナリオにおいても、IDの値が小さくることはありません。また、書き込みは数万トランザクション/秒 (TPS) に容易に到達することができます。
TTLによる行レベルのライフサイクル制御 (実験的)
TiDB 6.5のTTL (Time to Live) 機能により、ユーザーは行レベルのライフサイクル制御ポリシーを設定することができます。テーブルのTTL属性を設定することで、TiDBは自動的にテーブル内の期限切れデータをチェックし、クリーンアップすることができます。
多様化するディザスタリカバリ
以前のバージョンでは、TiDBは主に静的なバックアップとリカバリのためにBackup and Restore (BR) に依存していました。しかし、これには複数の時点への復元を可能にするために、継続的なフルバックアップが必要です。これは高価であり、オンラインビジネスに影響を与える可能性があります。TiDB 6.2では、ポイントインタイムリカバリ (PITR) が導入されました。TiDB PITRでは、フルバックアップとインクリメンタルなバックアップを組み合わせて、任意の時点までデータを復元することができます。これにより、継続的なフルバックアップが不要になりました。TiDB 6.5では、PITRのバックアップファイルのサイズと数を削減し、安定性とパフォーマンスを大幅に向上させました。ログリカバリフェーズでは、1台のTiKVノードで30GiB/hに達することができ、TiDB 6.2よりも150%高速化されています。一般的なシナリオにおけるリカバリポイント目標 (RPO) は、5分と短くなっています。
TiDB PITR architecture
また、本リリースでは、変更データ取り込みツールTiCDCのスループットが数倍向上しています。ダウンストリームがKafkaクラスタの場合、TiCDCノード1台でQPS35,000行/秒、スループットは最大50MB/s、レイテンシは2秒以内を可能にします。メモリ使用量は旧バージョンの約50%にとどまります。アクティブスタンバイクラスタのクロスリージョン障害復旧シナリオでは、TiCDCノードのスループットは30MB/秒に達することができ、遅延は2秒以内を維持しています。新バージョンでは、TiCDCはダウンストリームに書き込む際に特別なタイムスタンプを生成することができます。ダウンストリームクラスタは、自動的にこのタイムスタンプを使用して一貫した読み取りを行います。
デベロッパーエクスペリエンスの深堀り
開発者のエクスペリエンスを向上させることは、常にTiDBの重要な目標でした。TiDB 6.5では、アプリケーション開発に必要なエコシステムを大幅に強化しました。Savepoint、User Level Lock、Multiple Schema Changeなどの機能追加により、TiDBはDjangoやPrismaなどのアプリケーションフレームワークをより包括的にサポートするようになりました。同時に、PingCAPは、Vercel社、Hashicorp社、Retool社など、より多くのパートナーとの協力関係を広げています。
開発者向けのもう一つの特徴は、オブジェクトストレージへの書き込みをサポートしていることです。これは、TiCDCがオブジェクトストレージに直接データを同期できることを意味します。このサポートにより、ユーザーはTiDBでデータの長期保存やリージョンをまたいだレプリケーションを容易に実現できるようになります。また、TiDBはクラウド環境におけるデータウェアハウスやデータレイクに直接接続することも可能です。開発者は、TiDBを使ったアプリケーションを構築する際に、より多くの自由度と柔軟性を手に入れることができるようになりました。
まとめ
TiDB 6.5 LTSのリリースにより、ユーザーはより使いやすく、より成熟したエンタープライズ向けのデータベースを手に入れることができます。これらの改善により、より多くの開発者がTiDB上でアプリケーションを構築するきっかけになることを期待しています。
TiDB 6.5を体験するには、コミュニティエディションまたはTiDB Cloud無料トライアルをお試しください。日本語ドキュメントのTiDBクイックスタートガイド、またはTiDB Cloudワークショップガイドのご利用をお勧めします。ご不明な点などございましたら、お問い合わせフォームよりご連絡ください。SlackやTiDBフォーラムでコミュニティに参加し、フィードバックやアイディアの共有をお願いします。また、GitHubにて問題を報告することもできます。
TiDB Cloud Dedicated
TiDB Cloudのエンタープライズ版。
専用VPC上に構築された専有DBaaSでAWSとGoogle Cloudで利用可能。
TiDB Cloud Serverless
TiDB Cloudのライト版。
TiDBの機能をフルマネージド環境で使用でき無料かつお客様の裁量で利用開始。