TiDB 3.0.4 リリースノート
発売日:2019年10月8日
TiDB バージョン: 3.0.4
TiDB アンシブル バージョン: 3.0.4
新機能
performance_schema.events_statements_summary_by_digest
のシステム テーブルを追加して、SQL レベルでパフォーマンスの問題をトラブルシューティングします。- TiDB の
SHOW TABLE REGIONS
構文にWHERE
句を追加します - Reparoに
worker-count
とtxn-batch
の構成項目を追加して、回復速度を制御します
改良点
- 分割パフォーマンスを向上させるために、TiKV でバッチリージョン分割コマンドと空の分割コマンドをサポートします
- リバース スキャンのパフォーマンスを向上させるために、TiKV で RocksDB の二重リンク リストをサポートします。
- TiDB Ansible に 2 つのパフォーマンス ツール
iosnoop
とfuncslower
を追加して、クラスターの状態をより適切に診断します。 - 冗長なフィールドを削除することで、TiDB のスロー クエリ ログの出力を最適化します
行動の変化
- デフォルト値の
txn-local-latches.enable
からfalse
を更新して、TiDB でローカル トランザクションの競合をチェックするデフォルトの動作を無効にします - TiDB にグローバル スコープのシステム変数を
tidb_txn_mode
追加し、悲観的ロックの使用を許可します。 TiDB は依然としてデフォルトで楽観的ロックを採用していることに注意してください。 - TiDB スロー クエリ ログの
Index_ids
フィールドをIndex_names
に置き換えて、スロー クエリ ログの使いやすさを向上させます - TiDB 構成ファイルに
split-region-max-num
パラメーターを追加して、SPLIT TABLE
構文で許可されるリージョンの最大数を変更します。 - SQL 実行がメモリ制限を超えた場合、リンクを切断する代わりに
Out Of Memory Quota
エラーを返します - 誤操作を避けるために、TiDB の列の
AUTO_INCREMENT
属性のドロップを禁止します。この属性を削除するには、システム変数tidb_allow_remove_auto_inc
を変更します。
- デフォルト値の
修正された問題
- コメント化されていない TiDB 固有の構文
PRE_SPLIT_REGIONS
が、データ複製中にダウンストリーム データベースでエラーを引き起こす可能性があるという問題を修正します。 - TiDB で、カーソルを使用して
PREPARE
+EXECUTE
の結果を取得すると、スロー クエリ ログが正しくない問題を修正します。 - 隣接する小さなリージョンをマージできない PD の問題を修正
- プロセスが長時間実行されている場合、アイドル クラスタでのファイル記述子のリークにより、TiKV プロセスが異常終了する可能性があるという TiKV の問題を修正します。
- コメント化されていない TiDB 固有の構文
寄稿者
このリリースに協力してくれたコミュニティの次の貢献者に感謝します。
TiDB
- SQL オプティマイザー
- フィードバック#12170で分割すると、無効なクエリ範囲が返される可能性がある問題を修正します。
- 結果に無効なキーが含まれている場合にエラーを返すのではなく、
SHOW STATS_BUCKETS
ステートメントの返されたエラーを 16 進数で表示し#12094 。 - クエリに
SLEEP
関数 (たとえば、select 1 from (select sleep(1)) t;)
) が含まれている場合、クエリ#11953で列のプルーニングによって無効なsleep(1)
が発生する問題を修正します。 - クエリがテーブル データではなく列数のみに関係する場合は、インデックス スキャンを使用して IO を削減します#12112
- MySQL #12100との互換性を保つために、
use index()
でインデックスが指定されていない場合は、インデックスを使用しないでください。 CMSketch
統計のTopN
レコードの数を厳密に制限して、ステートメント数がトランザクションのサイズに関する TiDB の制限を超えているためにANALYZE
ステートメントが失敗するという問題を修正します#11914Update
ステートメント#12483に含まれるサブクエリを変換するときに発生したエラーを修正します。- Limit 演算子を
IndexLookUpReader
実行ロジック#12378まで押し下げて、select ... limit ... offset ...
ステートメントの実行パフォーマンスを最適化します。
- SQL 実行エンジン
PREPARED
ステートメントが誤って実行された場合、ログに SQL ステートメントを出力します#12191UNIX_TIMESTAMP
関数を使用してパーティショニング#12169を実装する場合、パーティションのプルーニングをサポートします。AUTO_INCREMENT
がMAX int64
とMAX uint64
#12162を誤って割り当てた場合にエラーが報告されない問題を修正SHOW TABLE … REGIONS
とSHOW TABLE .. INDEX … REGIONS
の構文にWHERE
句を追加します#12123- SQL 実行がメモリ制限を超えた場合、リンクを切断する代わりに
Out Of Memory Quota
エラーを返します#12127 JSON_UNQUOTE
関数が JSON テキスト#11955を処理すると、誤った結果が返される問題を修正- 1 行目の
AUTO_INCREMENT
列に値を代入するとLAST INSERT ID
が正しくない問題を修正 (例:insert into t (pk, c) values (1, 2), (NULL, 3)
) #12002 PREPARE
文#12351でGROUPBY
構文解析規則が正しくない問題を修正- ポイントクエリで権限チェックが正しくない問題を修正#12340
PREPARE
ステートメントの期間がsql_type
ずつ監視レコードに表示されない問題を修正します#12331- ポイント クエリでのテーブルのエイリアスの使用をサポート (例:
select * from t tmp where a = "aa"
) #12282 - BIT型カラムに負数を挿入する際、負数を符号なしとして扱わないとエラーが発生する問題を修正#12423
- 時間の誤った丸めを修正します (たとえば、
2019-09-11 11:17:47.999999666
を2019-09-11 11:17:48
に丸める必要があります)。 #12258 - 式ブロックリストの使用法を改善します (たとえば、
<
はIt
に相当します。) #11975 - 存在しない関数エラーのメッセージにデータベース接頭辞を追加します (例:
[expression:1305]FUNCTION test.std_samp does not exist
) #12111
- サーバ
- スロー クエリ ログに
Prev_stmt
フィールドを追加して、最後のステートメントがCOMMIT
#12180のときに前のステートメントを出力します。 - 冗長なフィールドを削除して、スロー クエリ ログの出力を最適化する#12144
- デフォルト値の
txn-local-latches.enable
からfalse
を更新して、TiDB #12095でローカル トランザクションの競合をチェックするデフォルトの動作を無効にします - TiDB スロー クエリ ログの
Index_ids
フィールドをIndex_names
に置き換えて、スロー クエリ ログの使いやすさを向上させます#12061 - TiDB にグローバル スコープのシステム変数を
tidb_txn_mode
追加し、悲観的ロックの使用を許可する#12049 - スロー クエリ ログに
Backoff
フィールドを追加して、2PC #12335のコミット フェーズでバックオフ情報を記録します。 - カーソルを使用して
PREPARE
+EXECUTE
の結果を取得すると、スロー クエリ ログが正しくない問題を修正 (例:PREPARE stmt1FROM SELECT * FROM t WHERE a > ?; EXECUTE stmt1 USING @variable
) #12392 - サポート
tidb_enable_stmt_summary
。この機能を有効にすると、TiDB は SQL ステートメントをカウントし、システム テーブルを使用して結果をクエリできますperformance_schema.events_statements_summary_by_digest
#12308 - tikv-client の一部のログのレベルを調整します (たとえば、ログ レベル
batchRecvLoop fails
をERROR
からINFO
に変更します) #12383
- スロー クエリ ログに
- DDL
tidb_allow_remove_auto_inc
変数を追加します。列のAUTO INCREMENT
属性のドロップはデフォルトで無効になっています#12145- コメント化されていない TiDB 固有の構文
PRE_SPLIT_REGIONS
が、データ レプリケーション中にダウンストリーム データベースでエラーを引き起こす可能性があるという問題を修正します#12120 - 構成ファイルに
split-region-max-num
変数を追加して、リージョンの最大許容数を調整できるようにします#12097 - リージョンを複数のリージョンに分割することをサポートし、リージョンの分散中のタイムアウトの問題を修正します#12343
AUTO_INCREMENT
列を含むインデックスが 2 つのインデックスから参照されると、drop index
ステートメントが失敗する問題を修正し#12344 。
- モニター
connection_transient_failure_count
のモニタリング メトリックを追加して、tikvclient
#12093の gRPC 接続エラーの数をカウントします
TiKV
- ラフトストア
- サーバ
- 保管所
PD
- 隣接する小さなリージョンをマージできない問題を修正#1726
pd-ctl
の TLS 有効化パラメーターが無効であるという問題を修正します#1738- PD 演算子が誤って削除されるというスレッド セーフの問題を修正します#1734
- リージョン syncer #1739の TLS をサポート
ツール
- Binlog
- TiDB Lightning
TiDB アンシブル
- TiSpark を v2.2.0 にアップグレードする#926
- TiDB 構成項目のデフォルト値を
pessimistic_txn
からtrue
#933に更新します node_exporter
#938にさらにシステム レベルのモニタリング メトリックを追加する- TiDB Ansible に 2 つのパフォーマンス ツール
iosnoop
とfuncslower
を追加して、クラスターの状態をより適切に診断します#946 - パスワードの有効期限が切れるなどの状況での長い待機時間に対処するために、raw モジュールをシェル モジュールに置き換えます#949
- TiDB 構成項目
txn_local_latches
のデフォルト値をfalse
に更新します - Grafana ダッシュボードのモニタリング メトリックとアラート ルールを最適化する#962 #963 #969
- 展開とアップグレードの前に構成ファイルを確認する#934 #972