TiDB 2.0 リリースノート
2018 年 4月 27日に、TiDB 2.0 GA がリリースされました。TiDB 1.0 と比較して、このリリースでは、MySQL 互換性、SQL オプティマイザ、エグゼキューター、安定性が大幅に向上しています。
TiDB
- SQLオプティマイザ
- よりコンパクトなデータ構造を使用して、統計情報のメモリ使用量を削減します。
- tidb-server プロセスを起動するときに統計情報の読み込みを高速化します
- 統計情報の動的な更新をサポート [実験的]
- コストモデルを最適化して、より正確なクエリコスト評価を提供します
Count-Min Sketchを使用すると、ポイントクエリのコストをより正確に見積もることができます。- インデックスを最大限に活用するために、より複雑な条件の分析をサポート
STRAIGHT_JOIN構文を使用してJoin順序を手動で指定することをサポートしますGROUP BY句が空の場合は、パフォーマンスを向上させるためにストリーム集計オペレーターを使用します。MAX/MIN関数のインデックスの使用をサポート- 相関サブクエリの処理アルゴリズムを最適化し、より多くの種類の相関サブクエリの非相関化をサポートし、それらを
Left Outer Joinに変換します。 IndexLookupJoinを拡張し、インデックスプレフィックスのマッチングに使用できるようにする
- SQL実行エンジン
- Chunkアーキテクチャを使用してすべてのオペレーターをリファクタリングし、分析クエリの実行パフォーマンスを向上させ、メモリ使用量を削減しました。TPC-Hベンチマークの結果は大幅に改善されました。
- ストリーミング集計オペレーターのプッシュダウンをサポート
Insert Into Ignoreステートメントを最適化すると、パフォーマンスが10倍以上向上しますInsert On Duplicate Key Update文を最適化すると、パフォーマンスが10倍以上向上しますLoad Dataを最適化してパフォーマンスを10倍以上向上- より多くのデータ型と関数を TiKV にプッシュダウン
- 物理オペレーターのメモリ使用量を計算し、メモリ使用量がしきい値を超えた場合の処理動作を設定ファイルとシステム変数で指定することをサポートします。
- OOM のリスクを軽減するために、単一の SQL 文によるメモリ使用量の制限をサポートします。
- CRUD 操作で暗黙的な RowID の使用をサポート
- ポイントクエリのパフォーマンスを向上
- サーバー
- プロキシプロトコルをサポートする
- 監視メトリックを追加し、ログを改良する
- 設定ファイルの検証をサポート
- HTTP API 経由で TiDB パラメータの情報を取得する機能をサポート
- バッチモードでロックを解決してガベージコレクションを高速化します
- マルチスレッドガベージコレクションをサポート
- TLSをサポート
- 互換性
- より多くのMySQL構文をサポート
- OGGデータレプリケーションツールをサポートするために、設定ファイル内の
lower_case_table_namesシステム変数を変更することをサポートします。 - Navicat管理ツールとの互換性を向上
- テーブル作成時刻を
Information_Schemaで表示できるようになりました - 一部の関数/式の戻り値の型がMySQLと異なる問題を修正しました
- JDBCとの互換性を向上
- より多くのSQLモードをサポート
- DDL
Add Index操作を最適化して、いくつかのシナリオで実行速度を大幅に向上させます。- オンラインビジネスへの影響を軽減するために、
Add Index操作の優先度を下げます。 - DDLジョブのより詳細なステータス情報を
Admin Show DDL Jobsで出力します Admin Show DDL Job Queries JobIDを使用して現在実行中のDDLジョブの元のステートメントを照会する機能をサポート- 災害復旧のために
Admin Recover Indexを使用してインデックスデータの復旧をサポート Alter文を使用してテーブルオプションを変更することをサポートします
PD
- データを削除した後に空のリージョンを結合する
Region Mergeをサポート [実験的] Raft Learnerをサポート [実験的]- スケジューラを最適化する
- スケジューラをさまざまなリージョンサイズに適応させる
- TiKV 障害時のデータ復元の優先度と速度を向上
- TiKVノードを削除する際のデータ転送を高速化
- TiKVノードのスペースが不足しているときにディスクがいっぱいにならないようにスケジュールポリシーを最適化します。
- バランスリーダースケジューラのスケジューリング効率を向上
- バランスリージョンスケジューラのスケジューリングオーバーヘッドを削減する
- ホットリージョンスケジューラの実行効率を最適化する
- 操作インターフェースと構成
- TLSをサポート
- PDリーダーの優先順位付けをサポート
- ラベルに基づいてスケジュールポリシーを構成することをサポート
- 特定のラベルを持つストアに Raft リーダーをスケジュールしないように構成することをサポートします
- 単一のリージョン内のホットスポットを処理するために、手動でリージョンを分割することをサポートします。
- 場合によっては、指定されたリージョンを分散して手動でリージョン分布を調整できるようにサポートします。
- 設定パラメータのチェックルールを追加し、設定項目の有効性チェックを改善します。
- デバッグインターフェース
Drop Regionデバッグインターフェースを追加する- 各PDのヘルスステータスを列挙するためのインターフェースを追加します
- 統計
- 異常なリージョンに関する統計情報を追加する
- リージョン分離レベルに関する統計情報を追加する
- スケジュール関連の指標を追加する
- パフォーマンス
- 書き込みパフォーマンスを向上させるために、PDリーダーとetcdリーダーを同じノードにまとめます。
- リージョンハートビートのパフォーマンスを最適化
TiKV
- 機能
- 重要な構成を誤った変更から保護する
Region Mergeをサポート [実験的]Raw DeleteRangeAPIを追加するGetMetricAPIを追加するRaw Batch Put、Raw Batch Get、Raw Batch Delete、Raw Batch Scanを追加- RawKV API にカラムファミリ オプションを追加し、特定のカラムファミリでの操作の実行をサポートします。
- コプロセッサーでのストリーミングとストリーミング集計をサポート
- コプロセッサーのリクエストタイムアウトの設定をサポート
- リージョンハートビートでタイムスタンプを伝送
- RocksDBパラメータの一部をオンラインで変更することをサポートします。例:
block-cache-size - 警告やエラーが発生した場合のコプロセッサーの動作の構成をサポートします
- データのインポートプロセス中の書き込み増幅を削減するために、データのインポートモードでの起動をサポートします。
- 手動でリージョンを半分に分割する機能をサポート
- データ復旧ツール
tikv-ctlを改善 - TiDBの動作をガイドするためにコプロセッサーでより多くの統計を返す
- SST ファイルをインポートするための
ImportSSTAPI をサポート [実験的] - TiKV Importer バイナリを追加してTiDB Lightningと統合し、データを素早くインポートします [実験的]
- パフォーマンス
ReadPoolを使用して読み取りパフォーマンスを最適化し、raw_get/get/batch_getを30%増加させます- メトリクスのパフォーマンスを向上させる
- Raftスナップショットプロセスが完了したらすぐにPDに通知して、バランス調整を高速化します。
- RocksDBのフラッシュによって発生するパフォーマンスジッターを解決する
- データを削除した後のスペース回収メカニズムを最適化
- サーバーの起動時にガベージクリーンアップを高速化
DeleteFilesInRangesを使用してレプリカ移行中のI/Oオーバーヘッドを削減
- 安定性
- PDリーダーが切り替わったときにgRPC呼び出しが返されない問題を修正しました
- スナップショットによってノードがオフラインになる速度が遅くなる問題を修正しました
- レプリカの移行によって消費される一時スペースの使用を制限する
- 長期間にわたりリーダーを選出できないリージョンを報告する
- コンパクションイベントに応じてリージョンサイズ情報を随時更新します
- リクエストのタイムアウトを回避するためにスキャンロックのサイズを制限する
- OOMを回避するためにスナップショットを受信するときにメモリ使用量を制限する
- CIテストの速度を上げる
- スナップショットが多すぎることによるOOM問題を修正
- gRPCの
keepaliveを構成する - リージョン数の増加によって発生するOOM問題を修正
TiSpark
TiSpark は個別のバージョン番号を使用します。現在の TiSpark バージョンは 1.0 GA です。TiSpark 1.0 のコンポーネントは、Apache Spark を使用した TiDB データの分散コンピューティングを提供します。
- TiKVからデータを読み取るためのgRPC通信フレームワークを提供する
- TiKVコンポーネントデータと通信プロトコルのエンコードとデコードを提供します
- 以下を含む計算プッシュダウンを提供します:
- 集計プッシュダウン
- 述語プッシュダウン
- TopNプッシュダウン
- リミットプッシュダウン
- インデックス関連のサポートを提供する
- 述語をリージョンキー範囲またはセカンダリインデックスに変換する
Index Onlyクエリを最適化- リージョンごとにインデックススキャンをテーブルスキャンに適応的にダウングレード
- コストベースの最適化を提供する
- 統計をサポート
- インデックスを選択
- ブロードキャストテーブルのコストの見積もり
- 複数のSparkインターフェースのサポートを提供する
- Spark Shell をサポート
- ThriftServer/JDBC をサポート
- Spark-SQL の連携をサポート
- PySpark Shell をサポート
- SparkRをサポート