TiDB 2.1 GA リリースノート
2018 年 11 月 30 日に、TiDB 2.1 GA がリリースされました。このリリースの次の更新を参照してください。 TiDB 2.0 と比較すると、このリリースでは、安定性、パフォーマンス、互換性、および使いやすさが大幅に向上しています。
TiDB
SQL オプティマイザー
Index Join
の選択範囲を最適化して実行性能を向上外部表の選択を
Index Join
に最適化し、Row Count の推定値が小さい方の表を外部表として使用するJoin Hint
TIDB_SMJ
を最適化して、適切なインデックスがなくても Merge Join を使用できるようにする結合する内部テーブルを指定する最適化結合ヒント
TIDB_INLJ
相関サブクエリを最適化し、フィルターを押し下げ、インデックス選択範囲を拡張して、一部のクエリの効率を桁違いに改善します
UPDATE
ステートメントとDELETE
ステートメントでの Index Hint と Join Hint の使用のサポートより多くの関数を押し下げるサポート:
ABS
/CEIL
/FLOOR
/IS TRUE
/IS FALSE
組み込み関数
IF
およびIFNULL
の定数畳み込みアルゴリズムを最適化するEXPLAIN
ステートメントの出力を最適化し、階層構造を使用して演算子間の関係を示す
SQL エグゼキュータ
すべての集計関数をリファクタリングし、
Stream
番目とHash
番目の集計演算子の実行効率を改善します並列
Hash Aggregate
演算子を実装し、いくつかのシナリオで計算パフォーマンスを 350% 向上させます並列
Project
演算子を実装すると、一部のシナリオでパフォーマンスが 74% 向上しますHash Join
の内表と外表のデータを同時に読み込んで実行性能を向上させるREPLACE INTO
ステートメントの実行速度を最適化し、パフォーマンスを10倍近く向上させます時間データ型のメモリ使用量を最適化し、時間データ型のメモリ使用量を 50% 削減します。
ポイント選択のパフォーマンスを最適化し、Sysbench のポイント選択効率の結果を 60% 向上させます
幅の広いテーブルを挿入または更新する際の TiDB のパフォーマンスを 20 倍改善
構成ファイル内の単一ステートメントのメモリー上限の構成をサポート
ハッシュ結合の実行を最適化します。結合タイプが内部結合または半結合で、内部テーブルが空の場合、外部テーブルからデータを読み取らずに結果を返します
EXPLAIN ANALYZE
ステートメントを使用して実行時間と各演算子の返された行数を含むランタイム統計をチェックするサポート
統計
1 日の特定の期間のみ自動 ANALYZE 統計を有効にするサポート
クエリのフィードバックに従ってテーブル統計を自動的に更新するサポート
ANALYZE TABLE WITH BUCKETS
ステートメントを使用したヒストグラム内のバケット数の構成をサポート等値クエリと範囲クエリの混合クエリのヒストグラムを使用して行数推定アルゴリズムを最適化する
式
次の組み込み関数をサポートします。
json_contains
json_contains_path
encode/decode
サーバ
競合するトランザクションのパフォーマンスを最適化するために、tidb-server インスタンス内でローカルに競合するトランザクションのキューイングをサポート
サーバー側カーソルのサポート
HTTP APIを追加
TiKV クラスター内のテーブル リージョンの分布を分散させる
general log
を開くかどうかを制御しますログレベルのオンライン変更をサポート
TiDB クラスター情報を確認する
DDL
Add index ステートメントと他のステートメントの並列実行をサポートして、時間のかかる Add index 操作が他の操作をブロックするのを回避します。
ADD INDEX
の実行速度を最適化し、一部のシナリオで大幅に改善TiDB が
DDL Owner
かどうかの判断を容易にするselect tidb_is_ddl_owner()
のステートメントをサポートするALTER TABLE FORCE
構文をサポートALTER TABLE RENAME KEY TO
構文をサポートadmin show ddl jobs
の出力情報にテーブル名とデータベース名を追記ddl/owner/resign
HTTP インターフェースを使用して DDL 所有者を解放し、新しい DDL 所有者の選択を開始するサポート
互換性
より多くの MySQL 構文をサポート
BIT
集計関数がALL
パラメータをサポートするようにするSHOW PRIVILEGES
ステートメントをサポートLOAD DATA
ステートメントでCHARACTER SET
構文をサポートするCREATE USER
ステートメントでIDENTIFIED WITH
構文をサポートするLOAD DATA IGNORE LINES
ステートメントをサポートShow ProcessList
ステートメントはより正確な情報を返します
プレースメントDriver(PD)
可用性を最適化する
バージョン管理メカニズムを導入し、互換性のあるクラスターのローリング アップデートをサポートします。
ネットワーク分離後にネットワークが回復したときにリーダーの再選択を避けるため、PD ノード間で
Raft PreVote
有効にするデフォルトで
raft learner
を有効にして、スケジューリング中のマシン障害によってデータが使用できなくなるリスクを軽減しますTSO 割り当ては、システム クロックが逆行しても影響を受けなくなりました。
メタデータによってもたらされるオーバーヘッドを削減する
Region merge
つの機能をサポート
スケジューラを最適化する
ダウンストアの処理を最適化してレプリカの作成を高速化
ホットスポット スケジューラを最適化して、トラフィック統計情報が不安定になったときの適応性を向上させます
Coordinator の起動を最適化して、PD の再起動によって発生する不要なスケジューリングを減らします
Balance Scheduler が小さなリージョンを頻繁にスケジュールする問題を最適化します
リージョンマージを最適化して、 リージョン内の行数を考慮する
スケジューリング シナリオをシミュレートするための改善PDシミュレーター
API・運用ツール
GetPrevRegion
インターフェイスを追加してTiDB reverse scan
機能をサポートするBatchSplitRegion
インターフェイスを追加して、TiKVリージョン分割を高速化しますTiDB で分散 GC をサポートするには
GCSafePoint
インターフェイスを追加しますGetAllStores
インターフェイスを追加して、TiDB で分散 GC をサポートします
pd-ctl は以下をサポートしています:
- pd-回復は
max-replica
パラメーターを提供する必要はありません
指標
Filter
の関連指標を追加etcd Raftステート マシンに関するメトリクスを追加する
パフォーマンス
リージョンハートビートのパフォーマンスを最適化して、ハートビートによってもたらされるメモリ オーバーヘッドを削減します
リージョンツリーのパフォーマンスを最適化する
ホットスポット統計の計算パフォーマンスを最適化する
TiKV
コプロセッサー
組み込み関数をさらに追加する
時間関数の解析の問題とタイム ゾーン関連の問題を修正します。
プッシュダウン集計計算のメモリ使用量を最適化する
取引
スキャン操作のパフォーマンスを向上させるために MVCC の読み取りロジックとメモリ使用量を最適化し、フル テーブル スキャンのパフォーマンスは TiDB 2.0 よりも 1 倍優れています。
読み取りパフォーマンスを確保するために、連続ロールバック レコードを折りたたむ
UnsafeDestroyRange
API を追加して、削除するテーブル/インデックス用のスペースの収集をサポートしますGCモジュールを分離して書き込みへの影響を軽減
kv_scan
コマンドにupper bound
サポートを追加
ラフトストア
スナップショットの書き込みプロセスを改善して、RocksDB のストールを回避します
統計によると、I/O オーバーヘッドを削減するために
Region Split
をサポートキーの数に応じて
Region Split
をサポートし、インデックス スキャンの同時実行性を向上させますRegion Split
によってもたらされる不必要な遅延を回避するために、 Raftメッセージ プロセスを改善します。PreVote
つの機能をデフォルトで有効にして、サービスに対するネットワーク分離の影響を軽減します
ストレージ エンジン
RocksDB の
CompactFiles
のバグを修正し、Lightning を使用したデータのインポートへの影響を軽減しますRocksDB を v5.15 にアップグレードして、スナップショット ファイルが破損する可能性がある問題を修正します。
フラッシュが書き込みをブロックする可能性がある問題を回避するために
IngestExternalFile
を改善します。
tikv-ctl
compact
コマンドは、最下位レベルのデータを圧縮するかどうかの指定をサポートします
ツール
大量データの高速完全インポート: TiDB Lightning
新しいBinlogをサポート
アップグレードの注意事項
- 新しいストレージ エンジンが採用されているため、TiDB 2.1 は v2.0.x 以前へのダウングレードをサポートしていません。
並列 DDL は TiDB 2.1 で有効になっているため、TiDB バージョンが 2.0.1 より前のクラスターは、ローリング アップデートを使用して 2.1 にアップグレードできません。次の 2 つのオプションのいずれかを選択できます。
- クラスターを停止し、2.1 に直接アップグレードする
- 2.0.1 以降の 2.0.x バージョンにロール アップデートしてから、2.1 バージョンにロール アップデートします。
- TiDB 2.0.6 以前から TiDB 2.1 にアップグレードする場合、進行中の DDL 操作、特に時間のかかる
Add Index
の操作があるかどうかを確認してください。これは、DDL 操作によってアップグレード プロセスが遅くなるためです。進行中の DDL 操作がある場合は、DDL 操作が完了するまで待ってから、更新をロールします。