TiDB3.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つのパフォーマンスツール
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固有の構文
寄稿者
このリリースを支援してくれたコミュニティからの次の貢献者に感謝します。
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
と#12162を誤って割り当てたときにエラーが報告されない問題を修正しMAX uint64
。SHOW TABLE … REGIONS
およびSHOW TABLE .. INDEX … REGIONS
構文にWHERE
句を追加します#12123- SQLの実行がメモリ制限を超えたときにリンクを切断する代わりに
Out Of Memory Quota
エラーを返します#12127 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
- サーバ
- 最後のステートメントが#12180の場合に前のステートメントを出力するには、低速クエリログに
Prev_stmt
フィールドを追加しCOMMIT
- 冗長フィールドを削除して、低速のクエリログの出力を最適化する#12144
- デフォルト値の
txn-local-latches.enable
をfalse
に更新して、TiDB5でローカルトランザクションの競合をチェックするデフォルトの動作を無効にし#12095 。 - 低速クエリログの使いやすさを向上させるために、TiDB低速クエリログの
Index_ids
フィールドをIndex_names
に置き換えます#12061 - TiDBにグローバルスコープの
tidb_txn_mode
のシステム変数を追加し、ペシミスティックロック#12049の使用を許可します - 低速クエリログに
Backoff
フィールドを追加して、 #12335のコミットフェーズでのバックオフ情報を記録します。 - カーソル(たとえば、
PREPARE stmt1FROM SELECT * FROM t WHERE a > ?; EXECUTE stmt1 USING @variable
)を使用してPREPARE
+EXECUTE
の結果を取得するときに、低速のクエリログが正しくない問題を修正します#12392 - サポート
tidb_enable_stmt_summary
。この機能を有効にすると、 #12308はSQLステートメントをカウントし、システムテーブル35を使用して結果を照会できperformance_schema.events_statements_summary_by_digest
。 - tikv-clientの一部のログのレベルを調整します(たとえば、
batchRecvLoop fails
のログレベルをERROR
からINFO
に変更します) #12383
- 最後のステートメントが#12180の場合に前のステートメントを出力するには、低速クエリログに
- DDL
tidb_allow_remove_auto_inc
の変数を追加します。列のAUTO INCREMENT
属性の削除は、デフォルトで無効になっています#12145- コメント化されていないTiDB固有の構文
PRE_SPLIT_REGIONS
により、データレプリケーション中にダウンストリームデータベースでエラーが発生する可能性があるという問題を修正します#12120 - リージョンの最大許容数が調整可能になるように、構成ファイルに
split-region-max-num
の変数を追加します#12097 - リージョンを複数のリージョンに分割することをサポートし、リージョンの分散中のタイムアウトの問題を修正します#12343
- 2つのインデックスによって参照される
AUTO_INCREMENT
列を含むインデックスが#12344である場合に、drop index
ステートメントが失敗する問題を修正します。
- モニター
connection_transient_failure_count
のモニタリングメトリックを追加して、35の#12093接続エラーの数をカウントしtikvclient
。
TiKV
- ラフトストア
- サーバ
- 保管所
PD
- 隣接する小さなリージョンをマージできない問題を修正します#1726
pd-ctl
のTLS有効化パラメーターが無効である問題を修正します#1738- PDオペレーターが誤って削除されるというスレッドセーフの問題を修正します#1734
- リージョンシンカー#1739のTLSをサポート
ツール
- TiDB Binlog
- TiDB Lightning
TiDB Ansible
- TiSparkをv2.2.0にアップグレードします#926
- #933構成項目
pessimistic_txn
のデフォルト値を35に更新しtrue
。 - システムレベルの監視メトリックを
node_exporter
に追加し#938 - TiDB Ansibleに2つのパフォーマンスツール
iosnoop
とfuncslower
を追加して、クラスタの状態#946をより適切に診断します。 - パスワードの有効期限が切れるなどの状況での長い待機時間に対処するために、rawモジュールをシェルモジュールに置き換えます#949
- TiDB構成項目
txn_local_latches
のデフォルト値をfalse
に更新します - #962 #969ボードのモニタリングメトリックとアラートルールを最適化する#963
- 展開および#972の前に構成ファイルを確認してください#934