TiDB 2.1 GA リリースノート
2018 年 11 月 30 日に、TiDB 2.1 GA がリリースされました。このリリースの次の更新を参照してください。TiDB 2.0 と比較して、このリリースでは安定性、パフォーマンス、互換性、および使いやすさが大幅に向上しています。
ティビ
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/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機能をサポートする
スケジューラを最適化する
ダウンストアの処理を最適化してレプリカの作成を高速化
ホットスポットスケジューラを最適化し、トラフィック統計情報の変動に対する適応性を向上させる
PDの再起動による不要なスケジュールを削減するためにコーディネーターの起動を最適化します。
バランススケジューラが小さなリージョンを頻繁にスケジュールする問題を最適化します。
リージョン内の行数を考慮してリージョンのマージを最適化します
スケジューリングシナリオをシミュレートするためにPDシミュレータ改善
APIと操作ツール
TiDB reverse scan機能をサポートするためにGetPrevRegionインターフェースを追加しますBatchSplitRegionインターフェース追加すると、TiKVリージョン分割が高速化されます。TiDBで分散GCをサポートするには
GCSafePointインターフェースを追加しますTiDBで分散GCをサポートするために
GetAllStoresインターフェース追加します。
pd-ctl は以下をサポートします:
- pd-回復
max-replica番目のパラメータを提供する必要がない
メトリクス
Filterの関連指標を追加etcd Raftステートマシンに関するメトリクスを追加する
パフォーマンス
リージョンハートビートのパフォーマンスを最適化し、ハートビートによって生じるメモリオーバーヘッドを削減します。
リージョンツリーのパフォーマンスを最適化する
ホットスポット統計の計算パフォーマンスを最適化する
ティクヴ
コプロセッサー
組み込み関数を追加する
時間関数の解析問題とタイムゾーン関連の問題を修正
プッシュダウン集計計算のメモリ使用量を最適化する
トランザクション
MVCC の読み取りロジックとメモリ使用量を最適化してスキャン操作のパフォーマンスを向上させ、フルテーブルスキャンのパフォーマンスは TiDB 2.0 よりも 1 倍向上しました。
連続ロールバックレコードを折り畳んで読み取りパフォーマンスを確保します
UnsafeDestroyRangeAPI を追加して、テーブル/インデックスの削除のためのスペースの収集をサポートします。GCモジュールを分離して書き込みへの影響を軽減する
kv_scanコマンドにupper boundサポートを追加します
Raftstore
RocksDB の停止を回避するためにスナップショット書き込みプロセスを改善する
統計に従って
Region Splitサポートし、I/Oオーバーヘッドを削減しますインデックススキャンの同時実行性を向上させるためにキーの数に応じて
Region SplitサポートしますRegion Splitによってもたらされる不要な遅延を回避するためにRaftメッセージプロセスを改善しますネットワーク分離によるサービスへの影響を軽減するために、
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 操作が完了するまで待ってからロール更新を行ってください。