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_containsjson_contains_pathencode/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/resignHTTP インターフェースを使用して 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 倍優れています。
読み取りパフォーマンスを確保するために、連続ロールバック レコードを折りたたむ
UnsafeDestroyRangeAPI を追加して、削除するテーブル/インデックス用のスペースの収集をサポートします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 操作が完了するまで待ってから、更新をロールします。