TiDB User Day 2024のアーカイブ動画を公開中!詳細を見る
PR_TiDB 6.2_3600x1200

より良い可観測性、より速いパフォーマンス、強化されたディザスタリカバリ

2022年8月24日、HTAP (Hybrid Transactional and Analytical Processing)データベースの最新版TiDB 6.2がリリースされました。TiDB 6.2は、可観測性、パフォーマンス、安定性、エコシステムツール、MySQLとの互換性が改善されています。このリリースには、以下のようなニーズの高い機能が盛り込まれています。

  • データ定義言語(DDL)並列実行フレームワーク 
  • ポイントインタイムリカバリ(PITR)
  • TiDB Dashboard用の監視ページ 
  • TiFlash用FastScan

この投稿では、これらの改善点について紹介します。詳細はTiDBリリースノートをご覧ください。

マルチテナンシーシナリオのサポート強化 

以前のバージョンのTiDBでは、一度に1つのスキーマ変更しか実行できませんでした。しかし、SaaSやマルチテナント環境では、各テナントがそれぞれ異なるスキーマを持つテーブル群を持つ可能性があります。大規模なスキーマ変更を行うと、データベース全体のパフォーマンスにとって大きな障害となる可能性があります。

TiDB 6.2には、異なるテーブルオブジェクトに対してDDLを同時実行するための新しいデータ定義言語(DDL)並列実行フレームワークが含まれています。これにより、以前のバージョンで見られた異なるテーブル間でのDDLブロックの問題が解決されます。また、TiDB 6.2では、異なるテーブルオブジェクトに対するインデックスの追加やカラムタイプの変更など、複数のシナリオで並列実行を適用することができます。これにより、特にマルチテナンシーシナリオでのDDL実行効率が大幅に改善されます。

ディザスタリカバリの強化 

ビジネスにミッションクリティカルなタスクがある場合、クラスタを任意の時点にリストアできる必要があります。TiDB 6.2では、ポイントインタイムリカバリ(PITR)が導入され、変更ログやスナップショットデータを基にデータのバックアップとリカバリを行い、データの耐久性を確保できるようになりました。PITRにより、以下のことが可能になります。

  • ディザスタリカバリのRPO(Recovery Point Objective)を10分程度に短縮。
  • 書き込みエラーに対処するため、エラー発生前の時点にデータをロールバックする。
  • 履歴データの監査において、業界のコンプライアンス要件を満たすことができる。

Backup and Restore (BR)ツールで、ユーザーと権限のデータを復元できるようになりました。これにより、バックアップとリカバリがよりスムーズに行えるようになりました。ユーザーは、クラスタリカバリ後にユーザーと権限情報を別々に扱う必要がなくなりました。

また、TIDB 6.2では、変更データ取得ツールであるTiCDCにDDLフィルタリングメカニズムが導入されています。この機能により、TiCDCはDDLイベントをタイプ別にフィルタリングしたり、DMLイベントをSQLでフィルタリングしたりすることができます。また、TiDBのインクリメンタルデータ変更ログをフィルタリングしてDROP TABLEなどのリスクの高いDDL文を選別するなど、より多くのデータレプリケーションシナリオに適応できるようになりました。

TiDB Dashboardの可観測性の改善

TiDB 6.2では、TiDB Dashboardが視覚的な実行プランをサポートします。これまでは、テキスト版の実行プランを確認しなければ、TiDBの問題をトラブルシュートすることができませんでした。これは、単純なトランザクションSQL処理には適していますが、膨大な実行プランデータを生成する可能性のある分析用SQL文にはあまり適していません。TiDB 6.2では、DashboardのStatementsとSlow Queryのセクションで、基本的なトラブルシューティングのために実行プランを視覚的に確認できるようになりました。クエリプランの各ステップをグラフィカルに見ることができるので、実行プロセスをより直感的に理解することができます。これは、特に複雑で大規模なクエリを理解するのに役立ちます。

視覚的実行プラン

TiDB Dashboardには、パフォーマンス分析と最適化のための新しい監視インターフェイスも用意されています。このインターフェイスは、時間関連のメトリクスをグローバルまたはトップダウンの視点で分析し、レスポンスのボトルネックがデータベースにあるかどうかを確認するのに役立ちます。この場合、データベースタイムビューとSQLレイテンシーのレイテンシーブレイクダウンビューを使用することで、ボトルネックを迅速に特定し、それに応じて最適化を実行することができます。

TiDB Dashboardでのパフォーマンス分析

iDB 6.2のロックビューでは、楽観的なトランザクションのブロック状態を表示できるようになりました。ロック競合の位置を特定することは、主要なロック競合におけるパフォーマンス低下のトラブルシューティングの方法の一つです。TiDB 6.2以前では、ユーザーはINFORMATION_SCHEMA.DATA_LOCK_WAITSのシステムビューを通じてのみロック競合を確認することができました。しかし、この方法では、悲観的なロックによってブロックされた楽観的なトランザクションに関する情報は含まれていません。TiDB 6.2.0では、この状況をカバーするためにDATA_LOCK_WAITSビューが拡張されました。この拡張により、ユーザーはロック競合の場所を素早く特定し、ビジネス改善の方向性を示すことができるほか、ロック競合の頻度を減らしてシステムパフォーマンスを向上させることもできます。

HTAP機能の強化

TiDB 6.2では、データベースのHTAP機能がさらに強化されました。

まず、新しいストレージフォーマットであるPageStorage V3のサポートがTiDB 6.2で一般的に利用できるようになりました。このフォーマットは、高い同時実行性とガベージコレクションにおける高い作業負荷によって引き起こされる高いCPU使用率の問題を大幅に緩和します。PageStorage V3形式でデータを保存すると、バックグラウンドタスクのI/Oトラフィックを大幅に削減でき、高連動性シナリオでのシステムの安定性が向上します。TiDB 6.2以降、PageStorage V3がデフォルトのストレージ形式となりました。

これまでは、データの整合性を確保するために、 TiFlashはデータスキャン中に何度も整合性をチェックし、複数のバージョンから必要なデータを探し出していました。しかし、この処理はクエリの速度を低下させるため、オフライン分析など厳密な精度を必要としないアプリケーションでは必要ありません。TiDB 6.2では、TiFlashはFast Scan読み込みモードを提供します。このモードでは、ユーザーはある程度の精度と高速なスキャンをトレードすることができます。Fast Scanを有効にすると、TiFlashはMVCC (Multiversion Concurrency Control)情報を無視し、最大で3倍の速度でデータをスキャンすることができます。

Note:

この機能は実験的なものであり、デフォルトでは無効になっています。

演算エンジンについては、TiFlashがfine-grained shuffleをサポートするようになりました。TiFlashにプッシュダウンされたウィンドウ機能は、マルチスレッドの並列コンピューティングを活用し、クエリの応答時間を大幅に短縮し、典型的なシナリオでは4~5倍高速化することができます。データスキューの低減により、分析エンジンはCOUNT(DISCINT)による重複排除計算の効率を向上させます。

安定性の向上

TiDB 6.2には安定性の向上も盛り込まれています。

データベース管理者は、いくつかの長期的な問題に直面してきました。バックグラウンドとフロントエンドの運用のリソースのオーバーヘッドをどのようにバランスさせればいいのか?通常のパフォーマンスに影響を与えることなく、より効率的に情報を収集するにはどうすればよいのか?TiDB 6.2以降、TiDBはTiKV設定ファイルによるバックグラウンドリクエストのCPU使用率の設定をサポートしています。これにより、自動統計収集などのバックグラウンド操作のCPU使用率が制限され、極端な場合、リソースの競合を回避することができます。また、TiDBはCPU使用率の自動調整もサポートしています。さらに、TiKVはインスタンスのCPU使用率に基づいてバックグラウンド要求のCPU使用率を動的に調整することができます。この機能はデフォルトでは無効になっています。

これにより、TiFlashは大容量データをより適切に処理できるようになりました。分散トランザクション処理におけるメモリ増幅を抑制するため、バージョン6.1以前の最適な使用シナリオと比較して、ピーク時のメモリ使用量を50%以上削減することができます。これにより、大規模な分析シナリオにおいて、同時実行タスクのメモリ競合のリスクを最小化することができます。

MySQLの互換性向上 

このリリースでは、SAVEPOINTメカニズムを追加することで、MySQLとの互換性を向上させました。TiDB 6.2は、単一のALTER TABLEステートメントを使用して、複数のカラムやインデックスの追加、削除、変更を行うこともサポートしています。

複雑なビジネスシナリオでは、トランザクション内で多数の操作を管理する必要があり、時にはトランザクション内の操作のいくつかにフォールバックする必要がある場合があります。

SAVEPOINTでは、セーブポイントを指定することで、トランザクション内のフォールバックノードを柔軟に制御することができます。この機能により、複雑なトランザクションやより多様なビジネス設計を管理することができます。

まとめ

本稿では、新機能や改善点、バグフィックスを含むDevelopment Milestone Release (DMR)であるTiDB 6.2のハイライトを紹介しました。詳細については、TiDBリリースノートを参照してください。TiDB 6.2は、TiDB Cloud Developer Tierで既に利用可能です。

TiDBを使い始めるには、コミュニティエディションまたはTiDB Cloud無料トライアルをお試しください。日本語ドキュメントのTiDBクイックスタートガイド、またはTiDB Cloudワークショップガイドのご利用をお勧めします。ご不明な点などございましたら、お問い合わせフォームに入力してご連絡ください。

PingCAPについて

PingCAPは、エンタープライズ向けのソフトウェアサービスプロバイダーとして2015年に設立され、オープンソースでクラウドネイティブなワンストップのデータベースソリューションを提供することにコミットしています。PingCAPの社名は、ネットワークの疎通を確認するために使用されるコマンド「Ping」とCAP定理の「CAP」の2つの単語を組み合わせています。3つのうち2つを選ばなければならないとされるCAP定理のC (Consistency – 一貫性)、A (Availability – 可用性)、P (Partition Tolerance – ネットワーク分断への耐性) ですが、この3つの全てに接続したい (Ping) という思いが込められています。PingCAPの詳細については https://pingcap.co.jp をご覧ください。

本件に関するお問合わせ先 

PingCAP株式会社 広報部 

Email:pingcapjp@pingcap.com