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_contains
json_contains_path
encode/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/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
機能をサポートする
スケジューラを最適化する
ダウンストアの処理を最適化してレプリカの作成を高速化
ホットスポットスケジューラを最適化し、トラフィック統計情報の変動に対する適応性を向上させる
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 倍向上しました。
連続ロールバックレコードを折り畳んで読み取りパフォーマンスを確保します
UnsafeDestroyRange
API を追加して、テーブル/インデックスの削除のためのスペースの収集をサポートします。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 操作が完了するまで待ってからロール更新を行ってください。