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 つのパフォーマンス ツール
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()でインデックスが指定されていない場合はインデックスを使用しないでください。 TopN数が TiDB のトランザクション サイズ制限を超えているため、ステートメントANALYZEが失敗する問題を修正するために、統計CMSketch1 レコードの数を厳密に制限します#11914Updateステートメント#12483に含まれるサブクエリの変換時に発生したエラーを修正- Limit 演算子を
IndexLookUpReader実行ロジックにプッシュダウンすることで、select ... limit ... offset ...ステートメントの実行パフォーマンスを最適化します#12378
- SQL実行エンジン
PREPAREDステートメントが誤って実行された場合、ログに SQL ステートメントを出力します#12191UNIX_TIMESTAMP関数を使用してパーティショニング#12169を実装する場合、パーティション プルーニングをサポートします。AUTO_INCREMENTMAX int64とMAX uint64誤って割り当てた場合にエラーが報告されない問題を修正#12162SHOW 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ステートメントGROUPBYの解析ルールが正しくない問題を修正します#12351- ポイントクエリ#12340における権限チェックが正しくない問題を修正
- 監視レコード#12331にステートメント
PREPAREのsql_typeによる期間が表示されない問題を修正 - ポイント クエリでのテーブルのエイリアスの使用をサポート (例:
select * from t tmp where a = "aa") #12282 - BIT型列#12423に負の数値を挿入する際、負の値を符号なしとして扱えない場合に発生するエラーを修正
- 時刻の誤った丸めを修正します (たとえば、
2019-09-11 11:17:47.9999996662019-09-11 11:17:48に四捨五入する必要があります) #12258 - 式ブロックリストの使用法を調整します (たとえば、
<はItと同等です)。 #11975 - 存在しない関数エラーのメッセージにデータベース接頭辞を追加します (例:
[expression:1305]FUNCTION test.std_samp does not exist) #12111
- サーバ
- スロークエリログに
Prev_stmtフィールドを追加して、最後のステートメントがCOMMIT#12180の場合に前のステートメントを出力します。 - 冗長なフィールドを削除して、低速クエリ ログの出力を最適化します#12144
- TiDB #12095でローカル トランザクションの競合をチェックするデフォルトの動作を無効にするには、デフォルト値の
txn-local-latches.enableをfalseに更新します。 - 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
- 2 つのインデックスによって参照される
AUTO_INCREMENT列を含むインデックスが存在する場合、drop indexステートメントが失敗する問題を修正します#12344
- モニター
connection_transient_failure_count監視メトリクスを追加して、tikvclient#12093の gRPC 接続エラーの数をカウントします。
TiKV
- Raftstore
- サーバ
- 保管所
PD
- 隣接する小さなリージョンを結合できない問題を修正#1726
pd-ctlのTLS有効化パラメータが無効である問題を修正#1738- PD オペレーターが誤って削除されるというスレッド セーフティの問題を修正します#1734
- リージョン同期器#1739の TLS をサポート
ツール
- TiDBBinlog
- TiDB Lightning
TiDB Ansible
- 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