TiDB 5.0.4 リリースノート
リリース日:2021年9月27日
TiDB バージョン: 5.0.4
互換性の変更
TiDB
新規セッションで
SHOW VARIABLESを実行すると遅くなる問題を修正しました。この修正により、#19341で行われた変更の一部が元に戻り、互換性の問題が発生する可能性があります#24326tidb_stmt_summary_max_stmt_count変数のデフォルト値を200から3000に変更します#25873次のバグ修正により実行結果が変わり、アップグレードの非互換性が発生する可能性があります。
UNIONの子にNULL値が含まれている場合に TiDB が間違った結果を返す問題を修正しました #26559greatest(datetime) union nullが空の文字列を返す問題を修正#26532last_day関数の動作が SQL モードで互換性がない問題を修正しました #26000having節が正しく動作しない可能性がある問題を修正#26496between前後の照合順序が異なる場合に発生する誤った実行結果を修正#27146group_concat関数の列に非ビン照合順序がある場合に発生する誤った実行結果を修正しました #27429- 新しい照合順序が有効になっているときに、複数の列で
count(distinct)式を使用すると間違った結果が返される問題を修正しました#27091 extract関数の引数が負の期間の場合に発生する結果の誤りを修正 #27236SQL_MODEが'STRICT_TRANS_TABLES'の場合、無効な日付を挿入してもエラーが報告されない問題を修正しました#26762SQL_MODEが'NO_ZERO_IN_DATE'の場合に無効なデフォルト日付を使用してもエラーが報告されない問題を修正しました#26766- プレフィックスインデックスのクエリ範囲に関するバグを修正 #26029
LOAD DATA文が非 UTF8 データを異常にインポートする可能性がある問題を修正#25979insert ignore on duplicate updateセカンダリインデックスに主キーと同じ列がある場合に間違ったデータが挿入される可能性がある問題を修正#25809- パーティションテーブルにクラスター化インデックスがある場合に
insert ignore duplicate updateが間違ったデータを挿入する可能性がある問題を修正しました#25846 - PointGetまたはバッチPointGetでキーが
ENUM型の場合にクエリ結果が間違っている可能性がある問題を修正しました #24562 BIT型の値を割ったときに発生する誤った結果を修正しました #23479preparedステートメントと直接クエリの結果が矛盾する可能性がある問題を修正#22949YEAR型を文字列または整数型と比較するとクエリ結果が間違っている可能性がある問題を修正しました #23262
機能強化
TiDB
- オプティマイザーの推定を無視してMPPモードを強制的に使用するための
tidb_enforce_mpp=1の設定をサポート #26382
- オプティマイザーの推定を無視してMPPモードを強制的に使用するための
TiKV
- TiCDC 構成の動的な変更をサポート#10645
PD
- TiDB DashboardにOIDCベースのSSOサポートを追加 #3884
TiFlash
- DAGリクエストの
HAVING()関数をサポートする DATE()関数をサポートする- インスタンスごとの書き込みスループットの Grafana パネルを追加する
- DAGリクエストの
改善点
TiDB
- ヒストグラムの行数に基づいて自動分析をトリガーする#24237
- ノードが故障して前に再起動した場合、一定期間TiFlashノードへのリクエストの送信を停止します。 #26757
split regionの上限を上げてsplit tableとpresplitをより安定させる#26657- MPPクエリの再試行をサポート#26483
- MPPクエリを起動する前にTiFlashの可用性を確認するようにします #1807
- クエリ結果をより安定させるために、安定した結果モードをサポートします#26084
- MySQLシステム変数
init_connectとその関連機能をサポートする #18894 - MPPモードで
COUNT(DISTINCT)集計関数を徹底的にプッシュダウンする #25861 - 集計関数を
EXPLAIN文でプッシュダウンできない場合にログ警告を出力する #25736 - Grafanaダッシュボードの
TiFlashQueryTotalCounterにエラーラベルを追加する #25327 - HTTP API によるセカンダリインデックス経由でクラスター化インデックステーブルの MVCC データを取得する機能をサポート #24209
- パーサーの
prepared文のメモリ割り当てを最適化する #24371
TiKV
- 読み取り準備と書き込み準備は別々に処理して読み取りレイテンシーを削減する#10475
- ネットワーク帯域幅を節約するために、Resolved TSメッセージのサイズを縮小します#2448
- スロガースレッドが過負荷になりキューがいっぱいになったときに、スレッドをブロックする代わりにログをドロップする#10841
- TiKVコプロセッサのスローログに、リクエスト処理に費やされた時間のみを考慮するようにする #10841
- 未確定エラーの可能性を減らすために、できるだけべき等な事前書き込みを行う#10587
- 書き込みフローが低い場合に"GC can not work"という誤った警告を回避する#10662
- 復元するデータベースが、バックアップ時の元のクラスタサイズと常に一致するようにします#10643
- panic出力が確実にログにフラッシュされるようにする #9955
PD
- PD間のリージョン情報の同期パフォーマンスを向上#3993
ツール
Dumpling
START TRANSACTION ... WITH CONSISTENT SNAPSHOTまたはSHOW CREATE TABLE構文をサポートしていない MySQL 互換データベースのバックアップをサポート#309
TiCDC
- Unified Sorterがメモリを使用してソートする場合のメモリ管理を最適化します#2553
- メジャーバージョンまたはマイナーバージョン間での TiCDC クラスターの操作を禁止#2598
- テーブルのリージョンがすべて TiKV ノードから転送されるときに、goroutine の使用を減らす #2284
file sorterを削除 #2326- 常にTiKVから古い値を引き出し、出力は
enable-old-valueに従って調整されます。 #2301 - PDエンドポイントに証明書がない場合に返されるエラーメッセージを改善しました#1973
- 同時実行性が高い場合は、ワーカープールを最適化してゴルーチンの数を減らす#2211
- グローバル gRPC 接続プールを追加し、KV クライアント間で gRPC 接続を共有する#2533
バグ修正
TiDB
- パーティションテーブルをクエリし、パーティションキーに条件
IS NULLがある場合に TiDB がpanicする可能性がある問題を修正しました#23802 FLOAT64型のオーバーフローチェックがMySQL と異なる問題を修正 #23897case when式の間違った文字セットと照合順序を修正します #26662- 悲観的トランザクションをコミットすると書き込み競合が発生する可能性がある問題を修正#25964
- 悲観的トランザクションのインデックスキーが繰り返しコミットされる可能性があるバグを修正#26359 #10600
- 非同期コミットロックを解決する際に TiDB がpanicする可能性がある問題を修正#25778
INDEX MERGE使用時に列が見つからないことがあるバグを修正 #25045ALTER USER REQUIRE SSLがユーザーのauthentication_stringをクリアするバグを修正 #25225- 新しいクラスターの
tidb_gc_scan_lock_modeグローバル変数の値が、実際のデフォルトモード"LEGACY" ではなく"PHYSICAL"と表示されるバグを修正しました。 #25100 TIKV_REGION_PEERSシステムテーブルに正しいDOWNステータスが表示されないバグを修正しました #24879- HTTP API使用時に発生するメモリリークの問題を修正#24649
- ビューが
DEFINERをサポートしない問題を修正 #24414 tidb-server --helpがコード2で終了する問題を修正 #24046- グローバル変数
dml_batch_sizeの設定が有効にならない問題を修正#24709 read_from_storageとパーティションテーブルを同時に使用するとエラーが発生する問題を修正#20372- 射影演算子を実行するときに TiDB がパニックを起こす問題を修正しました #24264
- 統計情報によりクエリがpanicになる可能性がある問題を修正#24061
BIT列でapprox_percentile関数を使用するとpanicする可能性がある問題を修正しました#23662- GrafanaのCoprocessor Cacheパネルのメトリックが間違っている問題を修正しました#26338
- 同じパーティションを同時に切り捨てるとDDL文がスタックする問題を修正しました#26229
- セッション変数を
GROUP BY項目として使用した場合に発生する誤ったクエリ結果の問題を修正しました #27106 - テーブルを結合する際の
VARCHARとタイムスタンプ間の誤った暗黙的な変換を修正しました #25902 - 相関サブクエリステートメントの誤った結果を修正する#27233
- パーティションテーブルをクエリし、パーティションキーに条件
TiKV
- 破損したスナップショットファイルによって引き起こされる潜在的なディスクフル問題を修正#10813
- Titan が有効になっている 5.0 より前のバージョンからアップグレードするときに発生する TiKV panic問題を修正しました#10843
- 新しいバージョンのTiKVをv5.0.xにロールバックできない問題を修正しました#10843
- 5.0より前のバージョンから5.0以降のバージョンにアップグレードする際に発生するTiKV panicの問題を修正しました。アップグレード前にTitanが有効になっているTiKV v3.xからクラスタをアップグレードした場合、このクラスタでこの問題が発生する可能性があります#10774
- 残存する悲観的ロックによる解析エラーを修正#26404
- 特定のプラットフォームで期間を計算するときに発生するpanicを修正#10571
- Load Base Split の
batch_get_commandのキーがエンコードされていない問題を修正#10542
PD
TiFlash
- テーブルスキャンタスクの実行時に発生する可能性のあるpanic問題を修正しました
- MPPタスク実行時に発生する可能性のあるメモリリークの問題を修正
- TiFlashがDAQリクエストを処理する際に
duplicated regionエラーを発生させるバグを修正しました - 集計関数
COUNTまたはCOUNT DISTINCTを実行するときに予期しない結果が発生する問題を修正しました - MPPタスク実行時に発生する可能性のあるpanic問題を修正
- 複数のディスクにデプロイされたときにTiFlash がデータを復元できない潜在的なバグを修正しました
SharedQueryBlockInputStreamの破棄時に発生する可能性のあるpanic問題を修正MPPTaskの破棄時に発生する可能性のあるpanic問題を修正- TiFlash がMPP 接続を確立できなかった場合に予期しない結果が発生する問題を修正しました
- ロックを解決する際に発生する可能性のあるpanic問題を修正
- 書き込みが集中するとメトリクスのストアサイズが不正確になる問題を修正しました
- クエリに
CONSTANT、<、<=、>、>=、COLUMNなどのフィルターが含まれている場合に誤った結果が発生するバグを修正しました。 - TiFlash が長時間実行した後にデルタデータをガベージコレクションできない潜在的な問題を修正しました
- メトリックが間違った値を表示する潜在的なバグを修正
- TiFlash を複数のディスクにデプロイした場合に発生する可能性のあるデータの不整合の問題を修正しました。
ツール
Dumpling
- MySQL 8.0.3以降のバージョンで
show table statusの実行が停止する問題を修正#322
- MySQL 8.0.3以降のバージョンで
TiCDC
mysql.TypeString, mysql.TypeVarString, mysql.TypeVarcharなどのデータ型をJSON にエンコードする際に発生するプロセスpanicの問題を修正 #2758- このテーブルが再スケジュールされているときに複数のプロセッサが同じテーブルにデータを書き込む可能性があるために発生するデータの不整合の問題を修正しました#2417
- TiCDC があまりにも多くのリージョンをキャプチャしたときに発生する OOM を回避するために、gRPC ウィンドウのサイズを小さくします#2724
- メモリ負荷が高いときにgRPC接続が頻繁に切断されるエラーを修正#2202
- 符号なし
TINYINT型でTiCDCがpanicを起こすバグを修正 #2648 - アップストリームで同一トランザクション内に同じ行の挿入と削除が行われた場合に、TiCDC Open Protocolが空の値を出力する問題を修正しました。 #2612
- スキーマ変更の終了 TS で変更フィードが開始されると DDL 処理が失敗するバグを修正しました。 #2603
- 応答しないダウンストリームが、タスクがタイムアウトするまで古い所有者のレプリケーションタスクを中断する問題を修正しました#2295
- メタデータ管理のバグを修正 #2558
- TiCDC 所有者スイッチ後に発生するデータの不整合の問題を修正#2230
capture listコマンドの出力に古いキャプチャが表示される可能性がある問題を修正しました #2388- 統合テストでDDLジョブの重複が発生したときに発生する
ErrSchemaStorageTableMissエラーを修正します #2422 ErrGCTTLExceededエラーが発生した場合に changefeed を削除できないバグを修正#2391- 大きなテーブルをcdclogに複製できないバグを修正#1259 #2424
- CLI の下位互換性の問題を修正#2373
SinkManagerのマップへの安全でない同時アクセスの問題を修正 #2299- DDL文実行時にオーナーがクラッシュした場合に、潜在的な DDL 損失が発生する問題を修正しました。 #1260
- リージョン初期化直後にロックが解決される問題を修正 #2188
- 新しいパーティションテーブルを追加するときに発生する余分なパーティションディスパッチの問題を修正しました。 #2263
- 削除された変更フィードについて TiCDC が警告し続ける問題を修正しました #2156