TiDB 3.0.0-rc.1 リリースノート
リリース日:2019年5月10日
TiDB バージョン: 3.0.0-rc.1
TiDB Ansible バージョン: 3.0.0-rc.1
概要
2019 年 5 月 10 日に、TiDB 3.0.0-rc.1 がリリースされました。対応する TiDB Ansible バージョンは 3.0.0-rc.1 です。TiDB 3.0.0-beta.1 と比較して、このリリースでは、安定性、使いやすさ、機能、SQL オプティマイザー、統計、実行エンジンが大幅に改善されています。
ティビ
SQL オプティマイザー
- 列間の順序相関を使用してコスト見積りの精度を向上させます。相関を見積りに直接使用できない場合に、インデックススキャンの優先順位を制御するヒューリスティックパラメータ
tidb_opt_correlation_exp_factor
を導入します#9839 - フィルタ#10053に関連する列がある場合、複合インデックスのアクセス条件を抽出するときに、インデックスのプレフィックス列をさらに一致させます。
- 結合に参加するテーブルの数が
tidb_opt_join_reorder_threshold
未満の場合は、動的プログラミングアルゴリズムを使用して結合操作の実行順序を指定します#8816 - アクセス条件として複合インデックスを使用する場合、インデックス結合を構築する内部テーブル内のインデックスのプレフィックス列をさらに一致させる#8471
- NULL値を持つ単一列インデックスの行数推定の精度を向上#9474
- 論理最適化フェーズ中に集計関数を削除するときに、誤った実行を防ぐために
GROUP_CONCAT
特別に処理します#9967 - フィルタが定数#9848の場合、結合演算子の子ノードにフィルタを適切にプッシュダウンします。
- MySQL #10064との非互換性を防ぐために、論理最適化フェーズ中に列をプルーニングするときに
RAND()
などのいくつかの関数を特別に処理します。 FAST ANALYZE
サポートします。これは、領域全体をスキャンするのではなく、領域をサンプリングすることで統計収集を高速化します。この機能は、変数tidb_enable_fast_analyze
によって制御されます#10258- SQL ステートメントの実行プラン バインディングを実行することで実行の安定性を確保する SQL プラン管理をサポートします。この機能は現在ベータ版であり、SELECT ステートメントのバインドされた実行プランのみをサポートします。実本番環境での使用は推奨されません#10284
- 列間の順序相関を使用してコスト見積りの精度を向上させます。相関を見積りに直接使用できない場合に、インデックススキャンの優先順位を制御するヒューリスティックパラメータ
実行エンジン
サーバ
- TiDB の起動時に DDL 所有者のみがブートストラップを実行できるようにする#10029
- トランザクション分離レベルをSERIALIZABLE #10065に設定するときにTiDBがエラーを報告しないようにするために変数
tidb_skip_isolation_level_check
を追加します。 - 暗黙のコミット時間とSQL実行時間をスローログ#10294にマージする
- サポート
GRANT ROLE
#9721 - TiDB を終了させる
whitelist
プラグインからのConnectionEvent
エラーを修正#9889 - トランザクション履歴に読み取り専用ステートメントが誤って追加される問題を修正#9723
kill
ステートメントを改善して SQL 実行を停止し、リソースをより迅速に解放する#9844- 設定ファイル#9855の有効性をチェックするための起動オプション
config-check
を追加する - 厳密なSQLモードが無効になっている場合にNULLフィールドを挿入する際の有効性チェックを修正#10161
DDL
CREATE TABLE
ステートメントにpre_split_regions
オプションを追加します。このオプションは、テーブルの作成時にテーブルリージョンを事前に分割して、テーブルの作成後に大量の書き込みによって発生する書き込みホットスポットを回避することをサポートします#10138- 一部のDDL文の実行パフォーマンスを最適化する#10170
FULLTEXT KEY
#9821ではフルテキストインデックスがサポートされていないという警告を追加します。- TiDB #9820の古いバージョンにおけるUTF8およびUTF8MB4文字セットの互換性の問題を修正
- 表#9868の
shard_row_id_bits
の潜在的なバグを修正 - テーブルの文字セットを変更しても列の文字セットが変更されないバグを修正#9790
- 列のデフォルト値として
BINARY
/BIT
使用する場合のSHOW COLUMN
の潜在的なバグを修正#9897 SHOW FULL COLUMNS
文#10007のCHARSET
COLLATION
説明を表示する際の互換性の問題を修正SHOW COLLATIONS
ステートメントが TiDB #10186でサポートされている照合順序のみをリストする問題を修正しました。
PD
- ETCD #1452のアップグレード
- etcdとPDサーバーのログフォーマットを統一する
- 事前投票によるLeader選出に失敗する問題を修正
- 後続のリクエストをブロックしないように、失敗する可能性のある「提案」および「読み取り」リクエストを迅速にドロップすることをサポートします。
- リースのデッドロック問題を修正
- ホットストアがキー#1487の統計を不正確にする問題を修正
- 単一のPDノードからPDクラスターを強制的に再構築するサポート#1485
regionScatterer
無効なOperatorStep
#1482を生成する可能性がある問題を修正MergeRegion
オペレータ#1495の短すぎるタイムアウト問題を修正- ホットリージョンのスケジュールに高い優先度を与えるサポート#1492
- PDサーバー側でTSOリクエストの処理時間を記録するためのメトリックを追加する#1502
- 対応するストアIDと住所をストア#1506に関連する指標に追加します。
GetOperator
サービス#1477サポートする- ストアが見つからないため、ハートビートストリームでエラーを送信できない問題を修正#1521
ティクヴ
エンジン
サーバ
ラフトストア
- 設定可能なサポート
properties index distance
#4517
- 設定可能なサポート
コプロセッサー
- バッチインデックススキャンエグゼキュータ#4419を追加
- ベクトル化された評価フレームワーク#4322を追加
- バッチエグゼキュータ#4433の実行サマリーフレームワークを追加
- RPN 式を構築するときに最大列をチェックして、評価panicを引き起こす可能性のある無効な列オフセットを回避します#4481
BatchLimitExecutor
#4469を追加- ReadPool の元の
futures-cpupool
tokio-threadpool
に置き換えてコンテキストスイッチ#4486を削減します。 - バッチ集計フレームワーク#4533を追加
BatchSelectionExecutor
#4562を追加- バッチ攻撃機能を追加
AVG
#4570 - RPN関数を追加
LogicalAnd
#4575
その他
- メモリアロケータ#4370として
tcmalloc
サポート
- メモリアロケータ#4370として
ツール
TiDBBinlog
- unsigned int 型の主キー列のbinlogデータが負の#573の場合のレプリケーション中止の問題を修正しました。
- ダウンストリームが
pb
場合は圧縮オプションを提供しません。ダウンストリーム名をpb
からfile
#559に変更します。 - ローカルstorage#509での非同期フラッシュを可能にする
storage.sync-log
構成項目をPumpに追加します。 - PumpとDrainer#495間の通信のトラフィック圧縮をサポート
- 異なるSQLモードでのDDLクエリの解析をサポートするために、 Drainerに
syncer.sql-mode
構成項目を追加します#511 - レプリケーションを必要としないテーブルを除外するための構成項目
syncer.ignore-table
を追加します#520
稲妻
- 行IDまたはデフォルトの列値を使用して、ダンプファイル#170で欠落している列データを入力します。
- SST の一部がインポートに失敗した場合でも、インポート成功が返される可能性があるインポーターのバグを修正#4566
- SST を TiKV #4412にアップロードする際のインポーターの速度制限をサポート
- 大きなテーブルに対するチェックサムと分析によるクラスターへの影響を軽減し、チェックサムと分析#156の成功率を向上させるために、サイズによるテーブルインポートをサポートします。
- データソースファイルをTiDBのtypes.Datumとして直接解析し、KVエンコーダ#145からの余分な解析オーバーヘッドを節約することで、LightningのSQLエンコードパフォーマンスを50%向上
- ログ形式を統合ログ形式 #162に変更
- 設定ファイルが見つからない場合に使用するコマンドラインオプションをいくつか追加します#157
同期差分インスペクター
TiDB アンシブル
- より多くの TiKV 監視パネルをサポートし、Ansible、Grafana、Prometheus #727のバージョンを更新しました。
- クラスターのステータスを表示するサマリーダッシュボード
- 問題のトラブルシューティングのためのtroubleshootingダッシュボード
- 開発者が問題を分析するための詳細ダッシュボード
- Kafka バージョン#730の TiDB Binlogのダウンロードに失敗するバグを修正しました
- CentOS 7.0以降、Red Hat 7.0以降などのサポート対象オペレーティングシステムのバージョン制限を変更します#733
- ローリングアップデート中のバージョン検出モードをマルチ同時#736に変更
- README #740のドキュメントリンクを更新
- 冗長な TiKV 監視メトリックを削除し、トラブルシューティング用の新しいメトリックを追加します#735
table-regions.py
スクリプトを最適化して、表#739でリーダーの分布を表示します。- Drainer #745の設定ファイルを更新
- SQL カテゴリ別にレイテンシを表示する新しいパネルを使用して TiDB 監視を最適化#747
- Lightning設定ファイルを更新し、
tidb_lightning_ctl
スクリプト#1e946f8を追加します。