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/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の再起動による不要なスケジュールを削減するためにコーディネーターの起動を最適化します。
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サポートします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 操作が完了するまで待ってからロール更新を実行してください。