TiDB 2.1 ベータ リリース ノート
2018 年 6 月 29 日、TiDB 2.1 Beta がリリースされました! TiDB 2.0 と比較して、このリリースでは、安定性、SQL オプティマイザー、統計情報、および実行エンジンが大幅に改善されています。
TiDB
- SQL オプティマイザー
Index Join
の選択範囲を最適化して実行性能を向上- 相関サブクエリを最適化し、
Filter
を押し下げ、インデックス範囲を拡張して、一部のクエリの効率を桁違いに改善します UPDATE
とDELETE
のステートメントでIndex Hint
とJoin Hint
をサポートする- 利用可能なインデックスが存在しない場合にヒント
TIDM_SMJ
を検証する ABS
、CEIL
、FLOOR
、IS TRUE
、およびIS FALSE
関数のプッシュダウンをサポート- 特に一定の折り畳みプロセスで
IF
とIFNULL
の関数を処理します
- SQL 実行エンジン
- 並列
Hash Aggregate
演算子を実装し、一部のシナリオでHash Aggregate
の計算パフォーマンスを 350% 向上させる - 並列
Project
演算子を実装すると、一部のシナリオでパフォーマンスが 74% 向上します Inner
テーブルとOuter
テーブル オブHash Join
のデータを同時に読み取り、実行パフォーマンスを向上させる- 一部のシナリオでの
INSERT … ON DUPLICATE KEY UPDATE …
の誤った結果を修正 CONCAT_WS
、FLOOR
、CEIL
、およびDIV
組み込み関数の誤った結果を修正
- 並列
- サーバ
- HTTP API を追加して、TiKV クラスター内のテーブル リージョンの分散を分散させます
- 自動
Analyze
のしきい値を制御するauto_analyze_ratio
システム変数を追加します。 - 一般ログを開くかどうかを制御する HTTP API を追加します。
- HTTP API を追加して、ログ レベルをオンラインで変更します。
- 一般ログとスロー クエリ ログにユーザー情報を追加します。
- サーバー側カーソルをサポート
- 互換性
- より多くの MySQL 構文をサポート
bit
集計関数がALL
パラメータをサポートするようにするSHOW PRIVILEGES
ステートメントをサポート
- DML
INSERT INTO SELECT
ステートメントのメモリ使用量を減らしますPlanCache
のパフォーマンスの問題を修正tidb_retry_limit
システム変数を追加して、トランザクションの自動再試行回数を制御しますtidb_disable_txn_auto_retry
システム変数を追加して、トランザクションが自動的に試行されるかどうかを制御しますtime
型の書き込みデータの精度の問題を修正- ローカルで競合するトランザクションのキューをサポートして、競合するトランザクションのパフォーマンスを最適化します
UPDATE
のステートメントのうちAffected Rows
を修正insert ignore on duplicate key update
のステートメントのパフォーマンスを最適化する
- DDL
CreateTable
ステートメントの実行速度を最適化するADD INDEX
の実行速度を最適化し、一部のシナリオで大幅に改善- 追加された列の数が
Alter table add column
で表の列の数の制限を超える問題を修正します - DDL ジョブの再試行により、異常な状態で TiKV への圧力が高まるという問題を修正します
- TiDB が異常な状態でスキーマ情報を継続的にリロードする問題を修正します
SHOW CREATE TABLE
の結果にFOREIGN KEY
の関連情報を出力しない- TiDB が
DDL Owner
であるかどうかの判断を容易にするselect tidb_is_ddl_owner()
のステートメントをサポートする - 一部のシナリオで
Year
タイプでインデックスが削除される問題を修正 - 同時実行シナリオでの名前変更テーブルの問題を修正
AlterTableForce
構文をサポートFromKey
とToKey
でAlterTableRenameIndex
構文をサポートするadmin show ddl jobs
の出力情報にテーブル名とデータベース名を追記
PD
- PD ノード間のRaft PreVote を有効にして、ネットワーク分離後にネットワークが回復したときにリーダーの再選択を回避します
- Balance Scheduler が小さなリージョンを頻繁にスケジュールする問題を最適化します
- ホットスポット スケジューラを最適化して、トラフィック統計情報のジッタへの適応性を向上させます
- スケジューリング時に行数の多いリージョンをスキップする
region merge
- デフォルトで
raft learner
を有効にして、スケジューリング中のマシン障害によってデータが使用できなくなるリスクを軽減します pd-recover
からmax-replica
を削除- 指標を
Filter
追加 - tikv-ctl unsafe リカバリ後にリージョン情報が更新されない問題を修正
- 一部のシナリオで、レプリカの移行によって TiKV ディスク容量が使い果たされる問題を修正
- 互換性に関する注意事項
- 新しいバージョンのストレージ エンジンの更新により、v2.0.x 以前へのロールバックはサポートされません
- 新しいバージョンの PD では、デフォルトで
raft learner
を有効にします。クラスターを 1.x から 2.1 にアップグレードする場合は、マシンを停止してからアップグレードするか、ローリング アップデートを最初に TiKV に適用してから PD に適用する必要があります。
TiKV
- Rust を
nightly-2018-06-14
バージョンにアップグレードする Raft PreVote
を有効にして、ネットワークの分離後にネットワークが回復したときに生成されるリーダーの再選択を回避します- RocksDB の各レイヤーにファイル数と
ingest
の関連情報を表示するメトリックを追加します - GC が機能する場合、バージョンが多すぎる
key
を出力します - マルチラベル メトリックのパフォーマンスを最適化するには
static metric
を使用します (YCSBraw get
は 3% 改善されます)。 - 複数のモジュールのうち
box
を削除し、パターンを使用して動作パフォーマンスを向上させます(YCSBraw get
は3%改善されます) - ログ書き込みのパフォーマンスを向上させるには
asynchronous log
を使用します - スレッドのステータスを収集するメトリックを追加します
- アプリケーションで使用される
box
を減らしてメモリ コピー時間を短縮し、パフォーマンスを向上させます。