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 固有の構文
貢献者
このリリースにご協力いただいたコミュニティの以下の貢献者の方々に感謝申し上げます。
TiDB
- SQLオプティマイザ
- フィードバックで分割すると無効なクエリ範囲が生成される可能性がある問題を修正しました #12170
- 結果に無効なキーが含まれている場合はエラーを返すのではなく、
SHOW STATS_BUCKETSのステートメントの返されたエラーを16進数で表示します。 #12094 - クエリに
SLEEP関数(たとえばselect 1 from (select sleep(1)) t;))が含まれている場合、列プルーニングによってクエリ中に無効なsleep(1)が発生する問題を修正しました。 #11953 - クエリがテーブルデータではなく列数のみに関係する場合は、インデックススキャンを使用してIOを削減します#12112
- MySQL との互換性を保つために、
use index()でインデックスが指定されていない場合はインデックスを使用しない #12100 CMSketch統計のTopNレコードの数を厳密に制限して、文の数が TiDB のトランザクションのサイズ制限を超えたためにANALYZE文が失敗する問題を修正します。 #11914Update文に含まれるサブクエリを変換するときに発生したエラーを修正します #12483- Limitオペレーターを
IndexLookUpReader実行ロジックにプッシュすることで、select ... limit ... offset ...文の実行パフォーマンスを最適化します。 #12378
- SQL実行エンジン
PREPARED文が正しく実行されなかった場合に、SQL文をログに出力します#12191UNIX_TIMESTAMP関数を使用してパーティショニングを実装する場合にパーティションプルーニングをサポートする #12169AUTO_INCREMENTがMAX int64とMAX uint64を誤って割り当てた場合にエラーが報告されない問題を修正しました#12162SHOW 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文のGROUPBY解析ルールが間違っている問題を修正 #12351- ポイントクエリで権限チェックが正しく行われない問題を修正 #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のときに前のステートメントを出力するために、スロークエリログにPrev_stmtフィールドを追加します。 #12180 - 冗長なフィールドを削除してスロークエリログの出力を最適化する#12144
- TiDB のローカルトランザクションの競合をチェックするデフォルトの動作を無効にするには、デフォルト値の
txn-local-latches.enableをfalseに更新します。 #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
- 2つのインデックスによって参照される
AUTO_INCREMENT列を含むインデックスの場合にdrop index文が失敗する問題を修正 #12344
- モニター
tikvclientの gRPC 接続エラーの数をカウントするconnection_transient_failure_count監視メトリックを追加します。 #12093
TiKV
- Raftstore
- サーバー
- ストレージ
PD
- 隣接する小さいリージョンを結合できない問題を修正#1726
pd-ctlのTLS有効化パラメータが無効である問題を修正#1738- PDオペレーターが誤って削除されるスレッドセーフの問題を修正#1734
- リージョンシンカーのTLSをサポート #1739
ツール
- TiDB Binlog
- TiDB Lightning
TiDB Ansible
- TiSparkをv2.2.0 にアップグレード #926
- TiDB設定項目
pessimistic_txnのデフォルト値をtrueに更新します。 #933 node_exporterにシステムレベルの監視メトリックを追加します #938- クラスタの状態をより適切に診断するために、TiDB Ansibleに2つのperfツール
iosnoopとfuncslowerを追加します#946 - パスワードの有効期限が切れた場合などに発生する長い待機時間に対処するために、rawモジュールをシェルモジュールに置き換えます#949
- TiDB設定項目
txn_local_latchesのデフォルト値をfalseに更新します - Grafanaダッシュボードの監視メトリックとアラートルールを最適化する#962 #963 #969
- デプロイおよびアップグレードの前に設定ファイルを確認する#934 #972