TiDB 2.1 GA リリース ノート
2018 年 11 月 30 日に、TiDB 2.1 GA がリリースされました。このリリースの次の更新を参照してください。 TiDB 2.0 と比較して、このリリースでは安定性、パフォーマンス、互換性、使いやすさが大幅に向上しています。
TiDB
SQLオプティマイザー
Index Joinの選択範囲を最適化して実行パフォーマンスを向上させます。外表の選択を
Index Joinに最適化し、行数の推定値が小さい表を外表として使用します。適切なインデックスが利用できない場合でもマージ結合を使用できるように結合ヒント
TIDB_SMJを最適化します。結合ヒント
TIDB_INLJを最適化して結合する内部テーブルを指定する相関サブクエリを最適化し、フィルターをプッシュダウンし、インデックス選択範囲を拡張して、一部のクエリの効率を桁違いに向上させます。
UPDATEステートメントとDELETEステートメントでのインデックス ヒントと結合ヒントの使用のサポートより多くの関数の押し下げをサポート:
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文を使用して、各演算子の実行時間や返された行数などの実行時統計を確認できるようになりました。
統計
一日の特定の時間帯のみ自動分析統計を有効にするサポート
クエリのフィードバックに従ってテーブル統計を自動的に更新するサポート
ANALYZE TABLE WITH BUCKETSステートメントを使用したヒストグラム内のバケット数の構成のサポート等価クエリと範囲クエリの混合クエリに対してヒストグラムを使用して行数推定アルゴリズムを最適化します。
式
次の組み込み関数をサポートします。
json_containsjson_contains_pathencode/decode
サーバ
競合するトランザクションのパフォーマンスを最適化するために、tidb-server インスタンス内でローカルに競合するトランザクションをキューに入れることをサポートします。
サーバー側カーソルのサポート
HTTP APIを追加します
TiKV クラスター内のテーブル リージョンの分散
general logを開くかどうかを制御します。オンラインでのログレベルの変更のサポート
TiDB クラスター情報を確認する
DDL
時間のかかるインデックスの追加操作が他の操作をブロックすることを回避するために、インデックスの追加ステートメントと他のステートメントの並列実行をサポートします。
ADD INDEXの実行速度を最適化し、一部のシナリオで大幅に改善します。TiDB が
DDL Ownerであるかどうかの判断を容易にするためにselect tidb_is_ddl_owner()ステートメントをサポートします。ALTER TABLE FORCE構文をサポートするALTER TABLE RENAME KEY TO構文をサポートするadmin show ddl jobsの出力情報にテーブル名とデータベース名を追加します。DDL 所有者を解放し、新しい DDL 所有者の選択を開始するための
ddl/owner/resignHTTP インターフェイスの使用のサポート
互換性
より多くの 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機能をサポートします。
スケジューラーを最適化する
ダウンストアの処理を最適化し、レプリカの作成を高速化します。
ホットスポット スケジューラを最適化して、トラフィック統計情報が不安定な場合の適応性を向上させます。
コーディネーターの起動を最適化して、PD の再起動によって生じる不必要なスケジューリングを削減します。
Balance Scheduler が小さなリージョンを頻繁にスケジュールする問題を最適化します。
リージョン内の行数を考慮してリージョンのマージを最適化します。
スケジューリング シナリオをシミュレートするためにPDシミュレータを改善します。
APIと運用ツール
TiDB reverse scan機能をサポートするにはGetPrevRegionインターフェースを追加しますBatchSplitRegionインターフェースを追加すると、TiKVリージョンの分割が高速化されます。TiDB で分散 GC をサポートするには
GCSafePointインターフェースを追加します。TiDB で分散 GC をサポートするには、
GetAllStoresインターフェースを追加します。
pd-ctl は以下をサポートします。
- PD回復は
max-replicaパラメータを指定する必要はありません
メトリクス
Filterの関連指標を追加etcd Raftステートマシンに関するメトリクスを追加
パフォーマンス
リージョンハートビートのパフォーマンスを最適化し、ハートビートによってもたらされるメモリオーバーヘッドを削減します。
リージョンツリーのパフォーマンスを最適化する
ホットスポット統計の計算パフォーマンスを最適化する
TiKV
コプロセッサー
組み込み関数をさらに追加する
時間関数の解析問題とタイムゾーン関連の問題を修正
プッシュダウン集計コンピューティングのメモリ使用量を最適化する
トランザクション
MVCC の読み取りロジックとメモリ使用量を最適化してスキャン操作のパフォーマンスを向上させ、フル テーブル スキャンのパフォーマンスが TiDB 2.0 よりも 1 倍向上しました。
連続したロールバック レコードをフォールドして読み取りパフォーマンスを確保します
UnsafeDestroyRangeAPI を追加して、テーブル/インデックスを削除するためのスペースの収集をサポートします。書き込みへの影響を軽減するために GC モジュールを分離する
kv_scanコマンドにupper boundサポートを追加します。
Raftstore
RocksDB の停止を回避するためにスナップショット書き込みプロセスを改善します。
I/O オーバーヘッドを削減するために、統計に従って
Region Splitサポートします。キーの数に応じて
Region Splitサポートし、インデックス スキャンの同時実行性を向上させます。Raftメッセージ プロセスを改善して、
Region Splitによってもたらされる不必要な遅延を回避します。サービスに対するネットワーク分離の影響を軽減するには、デフォルトで
PreVote機能を有効にします。
ストレージエンジン
RocksDB の
CompactFilesバグを修正し、Lightning を使用したデータのインポートへの影響を軽減します。RocksDB を v5.15 にアップグレードして、スナップショット ファイルの破損の可能性がある問題を修正します
フラッシュが書き込みをブロックする可能性がある問題を回避するために
IngestExternalFileを改善しました。
tikv-ctl
compactコマンドは、最下位レベルでデータを圧縮するかどうかの指定をサポートします。
ツール
大量のデータの高速完全インポート: TiDB Lightning
新しいTiDBBinlogをサポート
アップグレードに関する注意事項
- TiDB 2.1 は、新しいstorageエンジンを採用しているため、v2.0.x 以前へのダウングレードをサポートしていません。
TiDB 2.1 では並列 DDL が有効になっているため、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 操作が完了するまで待ってから、ロール更新を実行します。