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検証する ABSCEILIS TRUEFLOORダウン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クラスタ内のテーブルリージョンの分散を分散します。
- 自動
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構文をサポートするAlterTableRenameIndex構文をFromKeyとToKeyでサポートするadmin show ddl jobsの出力情報にテーブル名とデータベース名を追加します
PD
- ネットワーク分離後にネットワークが回復したときにリーダーの再選出を回避するために、PDノード間でRaft PreVoteを有効にする
- Balance Scheduler が小さなリージョンを頻繁にスケジュールする問題を最適化します。
- ホットスポットスケジューラを最適化し、トラフィック統計情報のジッタに対する適応性を向上させます。
- スケジュール
region mergeときに行数の多い領域をスキップする - スケジュール中にマシン障害によってデータが利用できなくなるリスクを軽減するために、デフォルトで
raft learner有効にします。 pd-recoverからmax-replica取り除くFilter指標を追加- tikv-ctl unsafe リカバリ後にリージョン情報が更新されない問題を修正しました
- 一部のシナリオでレプリカの移行によって 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 get3%向上します)- 複数のモジュールから
box削除し、パターンを使用して動作パフォーマンスを改善します(YCSBraw get3%向上します) asynchronous log使用するとログの書き込みパフォーマンスが向上します- スレッドのステータスを収集するためのメトリックを追加する
- アプリケーションで使用される
boxを減らすことでメモリコピー回数を減らし、パフォーマンスを向上させます