TiDB2.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
、およびFLOOR
関数のIS TRUE
ダウンをIS FALSE
しCEIL
- 特に定数畳み込みプロセスで
IF
とIFNULL
の関数を処理します
- SQL実行エンジン
- 一部のシナリオでは、並列
Hash Aggregate
演算子を実装し、Hash Aggregate
のコンピューティングパフォーマンスを350%向上させます。 - 並列
Project
オペレーターを実装し、一部のシナリオでパフォーマンスを74%向上させる - 実行パフォーマンスを向上させるために、
Hash Join
のInner
テーブルとOuter
テーブルのデータを同時に読み取ります - 一部のシナリオで
INSERT … ON DUPLICATE KEY UPDATE …
の誤った結果を修正 CONCAT_WS
、およびCEIL
のDIV
関数の誤った結果を修正しFLOOR
- 一部のシナリオでは、並列
- サーバ
- HTTP APIを追加して、TiKVクラスタのテーブルリージョンの分布を分散させます
- 自動
Analyze
のしきい値を制御するには、auto_analyze_ratio
のシステム変数を追加します - 一般ログを開くかどうかを制御するHTTPAPIを追加します
- 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ノード間でRaftPreVoteを有効にします
- BalanceSchedulerが小さなリージョンを頻繁にスケジュールする問題を最適化します
- ホットスポットスケジューラを最適化して、交通統計情報のジッターへの適応性を向上させます
region merge
をスケジュールするときに、行数が多いリージョンをスキップします- デフォルトで
raft learner
を有効にすると、スケジューリング中のマシン障害によってデータが利用できなくなるリスクが低くなります。 pd-recover
からmax-replica
を削除しますFilter
のメトリックを追加- tikv-ctlの安全でないリカバリ後にリージョン情報が更新されない問題を修正します
- 一部のシナリオでレプリカの移行が原因で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
を減らしてメモリのコピー時間を減らし、パフォーマンスを向上させます