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句が空の場合は、Stream 集計演算子を使用します
    • 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 DeleteRangeの API を追加
    • GetMetricの API を追加
    • Raw Batch PutRaw Batch GetRaw Batch DeleteRaw Batch Scanを足す
    • RawKV API のカラムファミリー オプションを追加し、特定のカラムファミリーでの操作の実行をサポートします。
    • コプロセッサーでのストリーミングおよびストリーミング集計のサポート
    • コプロセッサーの要求タイムアウトの構成をサポート
    • リージョンのハートビートでタイムスタンプを運ぶ
    • block-cache-sizeなど、いくつかの RocksDB パラメーターをオンラインで変更することをサポートします。
    • 警告またはエラーが発生したときのコプロセッサーの動作の構成をサポート
    • データ インポート プロセス中の書き込み増幅を減らすために、データ インポート モードでの開始をサポート
    • リージョンを半分に手動で分割することをサポート
    • データ復旧ツールの改善tikv-ctl
    • Coprocessor でより多くの統計を返し、TiDB の動作をガイドします
    • SST ファイルをインポートするImportSSTの API をサポート [実験的]
    • 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 のバージョンは 1.0 GA です。 TiSpark 1.0 のコンポーネントは、Apache Spark を使用して TiDB データの分散コンピューティングを提供します。

  • TiKV からデータを読み取るための gRPC 通信フレームワークを提供する
  • TiKV コンポーネント データと通信プロトコルのエンコードとデコードを提供
  • 以下を含む計算プッシュダウンを提供します。
    • 集計プッシュダウン
    • 述語のプッシュダウン
    • TopN プッシュダウン
    • リミット プッシュダウン
  • インデックス関連のサポートを提供する
    • 述語をリージョンキー範囲またはセカンダリ インデックスに変換する
    • 最適化Index Onlyクエリ -リージョンごとにインデックス スキャンをテーブル スキャンに適応的にダウングレードする
  • コストベースの最適化を提供
    • サポート統計
    • インデックスを選択
    • ブロードキャスト テーブルのコストを見積もる
  • 複数の Spark インターフェイスのサポートを提供する
    • スパークシェルをサポート
    • ThriftServer/JDBCをサポート
    • Spark-SQL インタラクションをサポート
    • PySpark シェルをサポート
    • SparkR をサポート
エコシステム
TiDB
TiKV
TiSpark
Chaos Mesh
© 2022 PingCAP. All Rights Reserved.