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_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 所有者を解放し、新しい DDL 所有者の選択を開始するための
ddl/owner/resign
HTTP インターフェイスの使用のサポート
互換性
より多くの 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 倍向上しました。
連続したロールバック レコードをフォールドして読み取りパフォーマンスを確保します
UnsafeDestroyRange
API を追加して、テーブル/インデックスを削除するためのスペースの収集をサポートします。書き込みへの影響を軽減するために 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 操作が終了するまで待ってから、ロール更新を実行します。