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
を検証する ABS
IS TRUE
のプッシュFLOOR
CEIL
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
声明を支持する
- 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
減らすことでメモリコピー回数を減らし、パフォーマンスを向上させます。