TiDB2.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実行エンジン
- チャンクアーキテクチャを使用してすべての演算子をリファクタリングし、分析クエリの実行パフォーマンスを向上させ、メモリ使用量を削減します。 TPC-Hベンチマークの結果に大幅な改善が見られます。
- ストリーミング集計オペレーターのプッシュダウンをサポートする
Insert Into Ignore
のステートメントを最適化して、パフォーマンスを10倍以上向上させますInsert On Duplicate Key Update
のステートメントを最適化して、パフォーマンスを10倍以上向上させますLoad Data
を最適化して、パフォーマンスを10倍以上向上させます- より多くのデータ型と関数をTiKVにプッシュダウンします
- 物理オペレーターのメモリー使用量の計算をサポートし、メモリー使用量がしきい値を超えた場合の構成ファイルとシステム変数での処理動作の指定をサポートします
- OOMのリスクを軽減するために、単一のSQLステートメントによるメモリ使用量の制限をサポート
- CRUD操作での暗黙的なRowIDの使用のサポート
- ポイントクエリのパフォーマンスを向上させる
- サーバ
- プロキシプロトコルをサポートする
- 監視メトリックをさらに追加し、ログを改善します
- 構成ファイルの検証をサポート
- HTTPAPIを介した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 DeleteRange
のAPIを追加しますGetMetric
のAPIを追加しますRaw Batch Put
をRaw Batch Delete
Raw Batch Scan
Raw Batch Get
- RawKV APIの列ファミリーオプションを追加し、特定の列ファミリーでの操作の実行をサポートします
- コプロセッサーでのストリーミングとストリーミング集計のサポート
- コプロセッサーの要求タイムアウトの構成をサポート
- リージョンハートビートでタイムスタンプを運ぶ
block-cache-size
などの一部のRocksDBパラメーターのオンライン変更をサポート- 警告またはエラーが発生した場合のコプロセッサーの動作の構成をサポート
- データインポートプロセス中の書き込み増幅を減らすために、データインポートモードでの開始をサポート
- リージョンを手動で半分に分割することをサポート
- データ回復ツールの改善
tikv-ctl
- コプロセッサーでより多くの統計を返し、TiDBの動作をガイドします
- SSTファイルをインポートするための
ImportSST
をサポート[実験的] - TiKVImporterバイナリを追加してTiDBLightningと統合し、データをすばやくインポートします[実験的]
- パフォーマンス
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.0GAです。 TiSpark 1.0のコンポーネントは、ApacheSparkを使用したTiDBデータの分散コンピューティングを提供します。
- TiKVからデータを読み取るためのgRPC通信フレームワークを提供する
- TiKVコンポーネントデータと通信プロトコルのエンコードとデコードを提供します
- 以下を含む計算プッシュダウンを提供します。
- 集約プッシュダウン
- 述語プッシュダウン
- TopNプッシュダウン
- プッシュダウンを制限する
- インデックス関連のサポートを提供する
- 述語をリージョンキー範囲またはセカンダリインデックスに変換します
Index Only
のクエリを最適化-リージョンごとにインデックススキャンをテーブルスキャンに適応的にダウングレードします
- コストベースの最適化を提供する
- サポート統計
- インデックスを選択
- ブロードキャストテーブルのコストを見積もる
- 複数のSparkインターフェースのサポートを提供する
- SparkShellをサポートする
- ThriftServer/JDBCをサポートする
- SparkとSQLの相互作用をサポートする
- PySparkシェルをサポートする
- SparkRをサポートする