TiDB 3.0.4 リリースノート
発売日: 2019年10月8日
TiDB バージョン: 3.0.4
TiDB Ansible バージョン: 3.0.4
新機能
- SQL レベルでパフォーマンスの問題をトラブルシューティングするために
performance_schema.events_statements_summary_by_digest
システム テーブルを追加します。 - TiDBの
SHOW TABLE REGIONS
の構文にWHERE
句を追加する - Reparoに
worker-count
とtxn-batch
設定項目を追加して回復速度を制御します
- SQL レベルでパフォーマンスの問題をトラブルシューティングするために
改善点
- TiKV でバッチリージョン分割コマンドと空分割コマンドをサポートし、分割パフォーマンスを向上
- TiKV の RocksDB の二重リンク リストをサポートし、逆スキャンのパフォーマンスを向上
- クラスターの状態をより適切に診断するために、TiDB Ansible に 2 つの perf ツール
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
がデータ複製中に下流データベースでエラーを引き起こす可能性がある問題を修正しました。 - カーソルを使用して
PREPARE
+EXECUTE
の結果を取得するときに、スロークエリログが正しく表示されないという TiDB の問題を修正しました。 - PD で隣接する小さな領域を結合できない問題を修正
- TiKV の問題を修正しました。アイドル クラスターのファイル記述子のリークにより、プロセスが長時間実行されると TiKV プロセスが異常終了する可能性があるという問題です。
- コメントされていない TiDB 固有の構文
寄稿者
このリリースにご協力いただいたコミュニティの以下の貢献者の方々に感謝申し上げます。
ティビ
- SQL オプティマイザー
- フィードバック#12170で分割すると無効なクエリ範囲が生成される可能性がある問題を修正
- 結果に無効なキー#12094が含まれている場合にエラーを返すのではなく、
SHOW STATS_BUCKETS
ステートメントの返されたエラーを 16 進数で表示します。 - クエリに
SLEEP
関数 (たとえばselect 1 from (select sleep(1)) t;)
) が含まれている場合、列のプルーニングによってクエリ#11953中に無効なsleep(1)
が発生する問題を修正しました。 - クエリがテーブルデータではなく列の数のみに関係する場合は、インデックススキャンを使用してIOを削減します#12112
- MySQL #12100との互換性を保つために、
use index()
でインデックスが指定されていない場合はインデックスを使用しない CMSketch
統計のTopN
レコードの数を厳密に制限して、ステートメント数が TiDB のトランザクション#11914のサイズ制限を超えたためにANALYZE
ステートメントが失敗する問題を修正します。Update
ステートメント#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実行がメモリ制限#12127を超えた場合、リンクを切断する代わりに
Out Of Memory Quota
エラーを返します。 JSON_UNQUOTE
関数が JSON テキスト#11955を処理するときに誤った結果が返される問題を修正- 最初の行の
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
- サーバ
- 最後のステートメントが
COMMIT
#12180ときに前のステートメントを出力するために、スロークエリログにPrev_stmt
フィールドを追加します。 - 冗長なフィールドを削除してスロークエリログの出力を最適化する#12144
- デフォルト値の
txn-local-latches.enable
をfalse
に更新して、TiDB #12095のローカルトランザクションの競合をチェックするデフォルトの動作を無効にします。 - TiDB スロークエリログの
Index_ids
フィールドをIndex_names
に置き換えて、スロークエリログ#12061の使いやすさを向上させます。 - TiDBにグローバルスコープのシステム変数
tidb_txn_mode
を追加し、悲観的ロック#12049の使用を許可する - 2PC #12335のコミットフェーズのバックオフ情報を記録するために、スロークエリログに
Backoff
フィールドを追加します。 - カーソルを使用して
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
- 2つのインデックス#12344によって参照される
AUTO_INCREMENT
の列を含むインデックスの場合にdrop index
ステートメントが失敗する問題を修正
- モニター
tikvclient
#12093のgRPC接続エラーの数をカウントするためのconnection_transient_failure_count
監視メトリックを追加します。
ティクヴ
- Raftstore
- サーバ
- ストレージ
PD
- 隣接する小さな領域を結合できない問題を修正#1726
pd-ctl
のTLS有効化パラメータが無効である問題を修正#1738- PD演算子が誤って削除されるスレッドセーフの問題を修正#1734
- リージョンシンカー#1739のTLSをサポート
ツール
- TiDBBinlog
- TiDB Lightning
TiDB アンシブル
- TiSparkをv2.2.0にアップグレード#926
- TiDB構成項目
pessimistic_txn
のデフォルト値をtrue
#933に更新します。 node_exporter
#938にシステムレベルの監視メトリックを追加します- クラスターの状態をより適切に診断するために、TiDB Ansible に 2 つの perf ツール
iosnoop
とfuncslower
を追加します#946 - パスワードの有効期限が切れた場合などの長い待機時間に対処するために、rawモジュールをshellモジュールに置き換えます#949
- TiDB構成項目
txn_local_latches
のデフォルト値をfalse
に更新する - Grafanaダッシュボードの監視メトリックとアラートルールを最適化する#962 #963 #969
- 展開およびアップグレードの前に構成ファイルを確認する#934 #972