📣
TiDB Cloud Premium はパブリックプレビュー中です。エンタープライズワークロード向けの無制限のスケーリング、即時の弾力性、高度なセキュリティを提供します。このページは自動翻訳されたものです。原文はこちらからご覧ください。

TiDB 8.5.4 リリースノート



発売日:2025年11月27日

TiDBバージョン:8.5.4

クイックアクセス: クイックスタート| 本番環境への展開

特徴

  • 特定のテーブルのデータの再配布をサポート (実験的) #63260 @bufferflies

    PDは、クラスタ内のすべてのTiKVノードにデータが可能な限り均等に分散されるように自動的にスケジュールします。ただし、この自動スケジュールはクラスタ全体を対象としています。場合によっては、クラスタ全体のデータ分散がバランスが取れていても、特定のテーブルのデータがTiKVノード間で不均等に分散される可能性があります。

    バージョン8.5.4以降では、 SHOW TABLE DISTRIBUTIONステートメントを使用して、特定のテーブルのデータがすべてのTiKVノードにどのように分散されているかを確認できます。データの分散が不均衡な場合は、 DISTRIBUTE TABLEステートメントを使用してテーブルのデータを再分散(実験的)し、負荷分散を改善できます。

    特定のテーブルのデータの再分配は、タイムアウト制限のある1回限りのタスクであることに注意してください。分配タスクがタイムアウト時間内に完了しない場合、自動的に終了します。

    詳細については、 ドキュメントを参照してください。

  • DDL ステートメントに埋め込まれたANALYZEをサポート #57948 @terry1purcell @AilinKid

    この機能は、以下の種類のDDLステートメントに適用されます。

    • 新しいインデックスを作成するDDLステートメント: ADD INDEX
    • 既存のインデックスを再編成するDDLステートメント: MODIFY COLUMNおよびCHANGE COLUMN

    この機能を有効にすると、TiDB は新規または再編成されたインデックスがユーザーに表示される前にANALYZE (統計情報収集) 操作を自動的に実行します。これにより、インデックスの作成または再編成後に一時的に利用できなくなる統計情報によって、オプティマイザの推定値が不正確になったり、実行計画が変更されたりするのを防ぎます。

    詳細については、 ドキュメントを参照してください。

  • パーティションテーブルの一意でない列に対するグローバルインデックスの作成をサポート #58650 @Defined2014 @mjonss

    バージョン8.3.0以降、TiDBではパーティションテーブルの一意列にグローバルインデックスを作成してクエリパフォーマンスを向上させることができます。ただし、一意でない列へのグローバルインデックスの作成はサポートされていませんでした。バージョン8.5.4以降、TiDBはこの制限を撤廃し、パーティションテーブルの一意でない列にもグローバルインデックスを作成できるようにすることで、グローバルインデックスの使いやすさを向上させています。

    詳細については、 ドキュメントを参照してください。

  • TiFlashの正常なシャットダウンをサポート #10266 @gengliqi

    TiFlashサーバーをシャットダウンする際、 TiFlashは現在実行中のMPPタスクを構成可能なタイムアウト時間だけ継続させ、新しいMPPタスク要求を拒否するようになりました。デフォルトのタイムアウト時間は600秒で、 flash.graceful_wait_shutdown_timeout設定項目を使用して調整できます。

    • 実行中のすべてのMPPタスクがタイムアウト期間内に終了した場合、 TiFlashは直ちにシャットダウンします。
    • タイムアウト期間が経過しても未完了のMPPタスクが残っている場合、 TiFlashは強制的にシャットダウンします。

    詳細については、 ドキュメントを参照してください。

  • パフォーマンス、拡張性、安定性を向上させるための新しいTiCDCアーキテクチャオプションを導入 #442 @CharlesCheung96

    この新しいアーキテクチャは従来のTiCDCアーキテクチャアーキテクチャの構成、使用法、API との互換性を維持しながら、TiCDC コア コンポーネントを再設計し、そのデータ処理ワークフローを最適化します。

    この新しいアーキテクチャを使用するように構成すると、TiCDC はほぼ線形のスケーラビリティを実現し、より低いリソース消費で数百万のテーブルを複製できます。また、変更フィードのレイテンシーを削減し、書き込みワークロードが高いシナリオ、頻繁な DDL 操作、クラスタのスケーリングにおいて、より安定したパフォーマンスを提供します。なお、この新しいアーキテクチャには現在、いくつか初期の制約があります。

    新しいアーキテクチャを使用するには、TiCDC 構成項目newarch trueに設定します。

    詳細については、 ドキュメントを参照してください。

互換性の変更

新規作成されたv8.5.3クラスタは、v8.5.4へスムーズにアップグレードできます。ただし、v8.5.4では、システム変数と構成パラメータのデフォルト値の変更や動作調整がいくつか導入されています。アップグレード前に、以下の点にご注意ください。

  • ほとんどの変更は、通常のアップグレードであれば安全です。ただし、クラスターにTiFlashやTiKVの圧縮構成のカスタマイズなど、パフォーマンスチューニングが施されている場合は、このセクションをよくお読みください。
  • バージョン8.5.4では、一部の従来のTiKV設定項目が非推奨となり、使用が推奨されなくなりました。代替として、このセクションで説明する新しいTiKV設定グループを使用することをお勧めします。

システム変数

変数種類を変更する説明
tidb_mpp_store_fail_ttl修正済みデフォルト値を60sから0sに変更します。これにより、クエリの失敗を防ぐための遅延が不要になるため、TiDB は新しく起動したTiFlashノードにクエリを送信する前に待機する必要がなくなります。 #61826 @genliqi
tidb_replica_read修正済みバージョン8.5.4以降、この変数は読み取り専用のSQLステートメントにのみ適用されます。これにより、データ読み取りの安全性が向上し、他の機能との重複が軽減されます。 #62856 @you06
tidb_opt_enable_no_decorrelate_in_select新しく追加されたSELECTリスト内のサブクエリの関連付けを解除するかどうかを制御します。デフォルト値はOFFです。 #51116 @terry1purcell
tidb_opt_enable_semi_join_rewrite新しく追加されたEXISTSサブクエリを書き換えるかどうかを制御します。デフォルト値はOFFです。 #44850 @terry1purcell
tidb_stats_update_during_ddl新しく追加されたDDLステートメントに埋め込まれたANALYZE 。デフォルト値はOFFです。有効にすると、 ADD INDEX DDL ステートメントは実行中に新しいインデックスの統計情報を収集し、オプティマイザがインデックスの追加直後にインデックスを使用できるようにします。この変数を有効にすると、大きなテーブルにインデックスを追加する際の DDL 実行時間が長くなる可能性があることに注意してください。 #57948 @terry1purcell @AilinKid

コンフィグレーションパラメータ

コンフィグレーションファイルまたはコンポーネントコンフィグレーションパラメータ種類を変更する説明
ティクヴrocksdb.max-manifest-file-size修正済み単一の TiKV ノードに多数の SST ファイルが含まれている場合に、全体的なパフォーマンスに影響を与える可能性のある頻繁なマニフェスト ファイル圧縮を回避するため、デフォルト値を128MiB 256MiBに変更します。 #18889 @glorv
ティクヴserver.grpc-raft-conn-num修正済みデフォルト値を1からMAX(1, MIN(4, CPU cores / 8))に変更します。これにより、gRPC 関連のスレッド設定が CPU コア数に応じて調整されるようになります。CPU コア数が 32 以上の場合、デフォルトの最大接続数は 4 になります。 #18806 @LykxSassinator
ティクヴserver.grpc-concurrency修正済みデフォルト値を5からgrpc-raft-conn-num * 3 + 2に変更します。これにより、gRPC 関連のスレッド設定が CPU コア数に合わせて調整されるようになります。 #18806 @LykxSassinator
ティクヴ
  • region-compact-check-interval
  • region-compact-check-step
  • region-compact-min-tombstones
  • region-compact-tombstones-percent
  • region-compact-min-redundant-rows
  • region-compact-redundant-rows-percent
  • 非推奨これらの設定項目は、自動圧縮動作を制御するgc.auto-compaction設定グループに置き換えられます。 #18727 @v01dstar
    ティクヴgc.auto-compaction設定グループ:新しく追加されたこの構成グループは、自動圧縮動作を制御します。 #18727 @v01dstar
    TiFlashflash.graceful_wait_shutdown_timeout新しく追加されたTiFlashの正常なシャットダウンの最大待機時間(秒単位)を制御します。デフォルト値は600です。TiFlashをシャットダウンする際、未完了のMPPタスクの実行は継続されますが、新しいMPPタスクは受け付けなくなります。すべてのMPPタスクがタイムアウト前に完了した場合、 TiFlashは直ちにシャットダウンします。そうでない場合は、タイムアウト後に強制的にシャットダウンされます。 #10266 @genliqi
    TiCDCscheduler.region-count-per-span新しく追加されたTiCDCの新アーキテクチャで導入 チェンジフィードの初期化時に、TiCDCはこのパラメータに従って分割条件を満たすテーブルを分割します。各分割サブテーブルには、最大でregion-count-per-span個のリージョンが含まれます。デフォルト値は100です。

    MySQLとの互換性

    バージョン 8.5.4 以降、TiDB はDECIMAL列にデータを挿入する際の動作を MySQL と同期させました。小数点以下の桁数が列の定義済みスケールを超える場合、TiDB は余分な桁を自動的に切り捨て、切り捨てられたデータを正常に挿入します。小数点以下の桁数に関係なく、切り捨てられたデータは挿入されます。以前の TiDB バージョンでは、挿入されるDECIMAL値の小数点以下の桁数が 72 を超えると、挿入は失敗し、エラーが返されました。詳細については、 JDBCを使用してTiDBに接続する

    改善点

    • TiDB

      • semi_join_rewriteサブクエリのセミテーブル結合にINヒントを適用することをサポートする #58829 @qw4990
      • tidb_opt_ordering_index_selectivity_ratioシステム変数が有効になったときに推定戦略を最適化する #62817 @terry1purcell
      • オプティマイザの選択ロジックを調整して、特定のシナリオで新しく作成されたインデックスが選択される可能性が高くなるようにする #57948 @terry1purcell
      • 一意の値の数が少ない列(NDV)のクエリ推定ロジックを最適化する #61792 @terry1purcell
      • LIMIT OFFSETを含む Index Join クエリの推定戦略を最適化する #45077 @qw4990
      • 統計情報が時間内に収集されない場合の範囲外推定戦略を最適化する #58068 @terry1purcell
      • Grafana のパフォーマンス概要> SQL 実行時間概要パネルにbackoffメトリックを追加してデバッグを容易にします #61441 @dbsid
      • 監査ログ プラグインにステートメント ID 情報を追加 #63525 @YangKeao
    • ティクヴ

      • BRモジュール内の特定の自動回復可能なエラーのログレベルをERRORからWARNに変更して、不要なアラートを削減します #18493 @YuJuncen
      • 不要なアラートを減らすため、特定の TiKV エラーのログレベルをERRORからWARNに変更します #18745 @exit-code-1
      • RaftモジュールのGCチェックプロセスを2つのフェーズに分割し、リージョン内の冗長なMVCCバージョンのガベージコレクションの効率を向上させる #18695 @v01dstar
      • GCセーフポイントとRocksDB統計に基づいてMVCC冗長性を計算し、圧縮の効率と精度を向上させる #18697 @v01dstar
      • リージョン MVCC の GC 処理ロジックを GC ワーカー スレッドで実行するように変更し、GC 処理ロジック全体を統一します #18727 @v01dstar
      • デフォルトのgRPCスレッドプールサイズの計算方法を最適化し、固定値ではなくCPUクォータの合計に基づいて動的に計算するようにすることで、gRPCスレッド不足によるパフォーマンスボトルネックを回避します #18613 @LykxSassinator
      • 多数のSSTファイルが存在する環境における非同期スナップショットおよび書き込み操作のテールレイテンシーを最適化する #18743 @Connor1996
    • PD

      • 不要なエラーログを削減 #9370 @bufferflies
      • Golangのバージョンを1.23.0から1.23.12にアップグレードし、関連する依存関係を更新します #9788 @JmPotato
      • テーブルレベルでの散布領域をサポートして、 scatter-roleengineの次元全体にバランスの取れた分布を実現します #8986 @bufferflies
    • TiFlash

      • TableScanパフォーマンスを向上させるために不要なデータ読み取りをスキップします #9875 @gengliqi
      • TiFlash #10361 10361 @ジェイソン・ファンで、多くの列とスパース データ (つまり、大量のTableScan } または空の値) を含む広いテーブルでの { NULLパフォーマンスを最適ジェイソン・ファンます。
      • 多数のテーブルを持つクラスターにベクトル インデックスを追加することによって生じるTiFlash CPU オーバーヘッドを削減 #10357 @Lloyd-Pottiger
      • 無駄なRaftコマンド処理時の不要なログ出力を最小限にしてログ容量を削減 #10467 @JaySon-Huang
      • TiFlashの小さなパーティション分割テーブルでのTableScanパフォーマンスを向上 #10487 @JaySon-Huang
    • ツール

      • TiDBデータ移行(DM)

        • 上流のGTID_MODEを取得する際に、大文字小文字を区別しないマッチングをサポートする #12167 @OliverS929

    バグ修正

    • TiDB

      • use indextidb_isolation_read_enginesに設定されている場合、 tiflashヒントが #60869 @Lloyd-Pottiger
      • max_execution_timeSELECT FOR UPDATEステートメントに適用されない問題を修正 #62960 @ekexium
      • 月や年をまたいだ行数の推定値が大幅に過大評価される問題を修正 #50080 @terry1purcell
      • プリペアドステートメントにおけるDecimalタイプの処理が MySQL と矛盾する問題を修正 #62602 @ChangRui-Ryan
      • TRUNCATE()関数内の短いパスが正しく処理されない問題を修正しました #57608 @xzhangxian1008
      • Out Of Quota For Local Temporary Spaceエラーが発生した際に、スピルしたファイルが完全に削除されない可能性がある問題を修正しました #63216 @xzhangxian1008
      • INFORMATION_SCHEMAテーブルに対して正規表現を使用したクエリが誤った結果を返す可能性がある問題を修正しました #62347 @River2000i
      • TiDBがPDからタイムスタンプを取得できなかった場合にエラーを返さない問題を修正します #58871 @joechenrh
      • MODIFY COLUMNステートメントの実行中に、所有者 TiDB インスタンスと非所有者 TiDB インスタンス間でクエリ結果が異なる問題を修正します #60264 @tangenta
      • ADMIN ALTER DDL JOBSステートメントでパラメータを動的に変更した後に誤ったパラメータ値が表示される問題を修正します #63201 @fzzf678
      • トランザクション内でインデックスを追加する際にGCセーフポイントが進まない問題を修正 #62424 @wjhuang2016
      • 過度に大きな SST ファイルを L0 に取り込むとフロー制御がトリガーされる問題を修正 #63466 @CbcWestwolf
      • CPUとメモリの比率が1:2の場合にグローバルソートがブロックされる問題を修正 #60951 @wjhuang2016
      • タスク数が16を超えると、保留中の分散実行フレームワーク(DXF)タスクをキャンセルできない問題を修正しました #63896 @D3Hunter
      • DXFタスクがキャンセルされた後、他のタスクが終了しない問題を修正します #63927 @D3Hunter
      • Apply演算子の同時実行( tidb_enable_parallel_apply = on )を有効にすると、クローン実装が欠落しているためにプラン生成が失敗する問題を修正しました #59863 @hawkingrei
      • ATAN2関数を使用すると誤った結果が生じる可能性がある問題を修正しました #60093 @guo-shaoge
      • select 1 from dualがインスタンスレベルのプランキャッシュを使用できない問題を修正 #63075 @time-and-fate
      • 参加順序を変更するとプランナーが失敗する可能性がある問題を修正 #61715 @hawkingrei
      • set_varヒントをバインディングで使用すると、変数が元の設定に戻らない問題を修正します #59822 @wddevries
      • ONLY_FULL_GROUP_BY負の値に設定すると検証が失敗する問題を修正 #62617 @AilinKid
      • ONLY_FULL_GROUP_BYチェックで大文字と小文字が区別されない問題を修正 #62672 @AilinKid
      • DP結合順序アルゴリズムが誤ったプランを生成する可能性がある問題を修正 #63353 @winoros
      • 外部結合を内部結合に書き換えると誤った結果が生じる可能性がある問題を修正 #61327 @hawkingrei
      • 特定のクエリを実行すると内部panicが発生する可能性がある問題を修正 #58600 @Defined2014
      • グローバルインデックスが特定のALTER PARTITION操作中に誤ったデータを読み取る可能性がある問題を修正 #64084 @mjonss
      • 場合によってはグローバルインデックスが誤った結果を返す可能性がある問題を修正 #61083 @Defined2014
      • character_set_resultsが誤った文字を置き換えるのではなく切り捨ててしまう問題を修正 #61085 @xhebox
      • ADD COLUMNUPDATEステートメントを同時に実行するとエラーが発生する可能性がある問題を修正しました #60047 @L-maple
      • マージ結合時にコスト計算時にフィルタ条件が省略される可能性がある問題を修正 #62917 @qw4990
    • PD

      • PDクライアントの再試行戦略が正しく初期化されない問題を修正 #9013 @rleungx
      • TSO HTTP API /configおよび/membersが誤った結果を返す問題を修正します #9797 @lhy1024
      • TSOFollowerプロキシの誤ったエラー処理ロジックを修正 #9188 @Tema
      • バケットのレポートが無効になった後でもバケットの分割が機能する問題を修正 #9726 @bufferflies
      • リソースマネージャがトークンを誤って割り当て、クエリが停止する問題を修正しました #9455 @JmPotato
      • PDリーダーが交代した後、配置ルールが有効にならない問題を修正 #9602 okJiang
      • PDが科学表記の大きな数値を解析できない場合があり、その結果、一部のTTL関連の設定が有効にならない問題を修正します。 #9343 @lhy1024
    • TiFlash

      • クエリ対象の列に多数のNULL値が含まれている場合にクエリが失敗する可能性がある問題を修正 #10340 @Lloyd-Pottiger
      • TiFlashがRU消費量の統計情報を水増しして生成する問題を修正 #10380 @JinheLin
      • 分離されたstorageとコンピューティングアーキテクチャの下で低速クエリが存在する場合にTiFlash でOOM が発生する可能性がある問題を修正 #10278 @JaySon-Huang
      • 分散storageおよびコンピューティングアーキテクチャ下でTiFlashと S3 の間でネットワーク分割が発生した場合、 TiFlash が無期限に再試行する可能性がある問題を修正 #10424 @JaySon-Huang
      • FLOOR()関数とCEIL()関数のパラメータDECIMAL型の場合、誤った結果を返すことがある問題を修正 #10365 @ChangRui-Ryan
    • ツール

      • バックアップと復元 (BR)

        • ログ バックアップの zstd 圧縮が有効にならず、出力が圧縮されないままになる問題を修正 #18836 @3pointer
        • Azure Blob Storageへのデータバックアップ時にフラッシュ操作が時々遅くなる問題を修正 #18410 @YuJuncen
        • ファイル削除が失敗した場合にlog truncateが発生する可能性がある問題を修正 #63358 @YuJuncen
        • バックアップ中に--checksumfalseに設定すると、リストア後にcountテーブルのmysql.stats_meta列が0になる可能性がある問題を修正 #60978 @Leavrth
        • S3互換storageサービスの帯域幅制限が有効になっている場合に、 BRがこれらのサービスからデータを復元できない可能性を低減する #18846 @kennytm
        • log backup observerリージョン上の観測を失う可能性があり、ログバックアップの進行が進まなくなる問題を修正しました #18243 @Leavrth
        • バックアップされたテーブルに特定の特殊スキーマが含まれている場合にrestore point作成が失敗する問題を修正します #63663 @RidRisR
      • TiCDC

        • 仮想列を含む列型パーティションディスパッチャを構成する際に発生する可能性のあるpanicを修正します #12241 @wk989898
        • DDLプーラーを閉じるときに発生する可能性のあるpanicを修正しました #12244 @wk989898
        • ignore-txn-start-ts設定のfilterパラメーターを使用して、サポートされていない DDL タイプをフィルタリングする機能をサポートする #12286 @asddongmen
        • Azure Blob Storage をダウンストリームとして使用している場合、changefeed タスクが停止する可能性がある問題を修正します #12277 @zurakutsia
        • DROP FOREIGN KEY DDL がダウンストリームにレプリケートされない問題を修正 #12328 @3AceShowHand
        • リージョンサブスクリプション中にロールバックと事前書き込みエントリが発生したときに TiCDC がpanicになる可能性がある問題を修正 #19048 @3AceShowHand
        • TiKV のアサーション エラーが TiCDC をpanic可能性がある問題を修正 #18498 @tharanga

    このページは役に立ちましたか?