TiDB 2.1 ベータ リリース ノート
2018 年 6 月 29 日に、TiDB 2.1 ベータ版がリリースされました。TiDB 2.0 と比較して、このリリースでは安定性、SQL オプティマイザー、統計情報、実行エンジンが大幅に改善されています。
ティビ
- SQL オプティマイザー
- 実行パフォーマンスを向上させるために選択範囲
Index Joinを最適化します - 相関サブクエリを最適化し、
Filterプッシュダウンし、インデックス範囲を拡張して、一部のクエリの効率を桁違いに向上させます。 UPDATEとDELETE文のIndex HintとJoin Hintを支持する- 利用可能なインデックスが存在しない場合にヒント
TIDM_SMJ検証する ABSIS FALSEIS TRUEプッシュ関数CEILFLOOR- 特に定数畳み込み処理で
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声明を支持する
- DMML の
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を有効にする
- バランススケジューラが小さなリージョンを頻繁にスケジュールする問題を最適化します。
- ホットスポットスケジューラを最適化して、トラフィック統計情報のジッタに対する適応性を向上させます。
- スケジュール
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を適用する必要があります。
ティクヴ
- Rustをバージョン
nightly-2018-06-14にアップグレードする Raft PreVote有効にすると、ネットワーク分離後にネットワークが回復したときに生成されるリーダーの再選出を回避できます。- RocksDB の各レイヤーのファイル数と関連情報
ingestを表示するメトリックを追加します。 - GC が動作しているときにバージョンが多すぎる
key印刷する static metric使用してマルチラベルメトリックのパフォーマンスを最適化します(YCSBraw getは3%向上します)- 複数のモジュールから
box削除し、パターンを使用して動作パフォーマンスを向上します(YCSBraw getは3%向上します) asynchronous log使用してログの書き込みパフォーマンスを向上させる- スレッドのステータスを収集するためのメトリックを追加する
- アプリケーションで使用される
box減らすことでメモリコピー回数を減らし、パフォーマンスを向上させます。