TiDB 2.1 ベータ版リリースノート
2018 年 6 月 29 日、TiDB 2.1 ベータ版がリリースされました。 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% 向上します Hash Join
つのテーブルのInner
Outer
のテーブルのデータを同時に読み取り、実行パフォーマンスを向上させます- 一部のシナリオでの
INSERT … ON DUPLICATE KEY UPDATE …
の誤った結果を修正 CONCAT_WS
、FLOOR
、CEIL
、およびDIV
組み込み関数の誤った結果を修正
- 並列
- サーバ
- HTTP API を追加して、TiKV クラスター内のテーブル リージョンの分散を分散します。
- 自動のしきい値を制御する
auto_analyze_ratio
システム変数を追加しますAnalyze
- 一般ログを開くかどうかを制御する 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
構文をサポートするAlterTableRenameIndex
構文をFromKey
およびToKey
でサポートするadmin show ddl jobs
の出力情報にテーブル名とデータベース名を追加します。
PD
- PD ノード間でRaft PreVote を有効にして、ネットワーク分離後にネットワークが回復したときにリーダーの再選を回避します
- Balance Scheduler が小さなリージョンを頻繁にスケジュールする問題を最適化します。
- ホットスポット スケジューラを最適化して、トラフィック統計情報のジッターへの適応性を向上させます。
region merge
をスケジュールするときに行数が多いリージョンをスキップする- デフォルトで
raft learner
有効にすると、スケジュール中のマシンの障害によってデータが利用できなくなるリスクが軽減されます。 pd-recover
からmax-replica
を削除Filter
メトリクスを追加- tikv-ctl の安全でないリカバリ後にリージョン情報が更新されない問題を修正
- 一部のシナリオでレプリカの移行によって TiKV ディスク容量が使い果たされる問題を修正
- 互換性に関する注意事項
- 新しいバージョンのstorageエンジンの更新のため、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
減らしてメモリコピー時間を短縮し、パフォーマンスを向上させます。