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を減らしてメモリ コピー時間を短縮し、パフォーマンスを向上させます。