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

TiDB 8.5.0 リリースノート



発売日:2024年12月19日

TiDB バージョン: 8.5.0

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

TiDB 8.5.0は長期サポートリリース(LTS)です。

以前の LTS 8.1.0 と比較して、8.5.0 には8.2.0-DMR8.3.0-DMR 、および8.4.0-DMRでリリースされた新機能、改善点、およびバグ修正が含まれています。8.1.x から 8.5.0 にアップグレードすると、 TiDB リリースノート PDFをダウンロードして、2 つの LTS バージョン間のすべてのリリースノートを確認できます。次の表は、8.1.0 から 8.5.0 までのハイライトの一部を示しています。

カテゴリ機能/改善点説明
拡張性とパフォーマンス複数の次元でデータ処理のレイテンシーを削減するTiDBは、パフォーマンス向上のためにデータ処理を継続的に改良し、金融分野における低遅延SQL処理の要件を効果的に満たしています。主なアップデート内容は以下のとおりです。
TiKV MVCC インメモリエンジン (IME) (バージョン8.5.0で導入) TiKV MVCCのインメモリエンジンは、最新のMVCCバージョンのデータをメモリにキャッシュすることで、古いバージョンをスキップして最新のデータを迅速に取得できるようにします。この機能は、データレコードが頻繁に更新される場合や、履歴バージョンが長期間保持される場合に、データスキャン性能を大幅に向上させることができます。
アクティブなPDフォロワーを使用して、PDのリージョン情報クエリサービスを強化します(v8.5.0で一般提供開始)。 TiDB v7.6.0 では、実験的機能「アクティブ PDFollower」が導入されました。これにより、PD フォロワーがリージョン情報クエリサービスを提供できるようになります。この機能は、多数の TiDB ノードとリージョンを持つクラスターにおいて、PD クラスターがGetRegionおよびScanRegionsリクエストを処理する能力を向上させ、PD リーダーの CPU 負荷を軽減します。この機能は、v8.5.0 で一般提供 (GA) されます。
インスタンスレベルの実行プランキャッシュ(実験的、v8.4.0で導入)インスタンスレベルのプランキャッシュを使用すると、同じ TiDB インスタンス内のすべてのセッションでプランキャッシュを共有できます。セッションレベルのプランキャッシュと比較して、この機能はメモリに多くの実行プランをキャッシュすることで SQL コンパイル時間を短縮し、SQL 全体の実行時間を短縮します。これにより、OLTP のパフォーマンスとスループットが向上するとともに、メモリ使用量をより適切に制御し、データベースの安定性を高めることができます。
パーティションテーブルのグローバルインデックス(バージョン8.4.0で一般提供開始)グローバルインデックスは、パーティション化されていない列の取得効率を効果的に向上させ、一意キーにパーティションキーを含める必要があるという制約を取り除きます。この機能により、TiDBパーティションテーブルの利用シナリオが拡張され、パーティションテーブルのパフォーマンスが向上し、特定のクエリシナリオにおけるリソース消費量が削減されます。
Projection演算子をstorageエンジンにデフォルトでプッシュダウンする機能(v8.3.0で導入) Projection演算子をstorageエンジンにプッシュダウンすることで、storageノード全体に負荷を分散させ、ノード間のデータ転送量を削減できます。この最適化により、特定のSQLクエリの実行時間が短縮され、データベース全体のパフォーマンスが向上します。
統計情報を収集する際に不要な列を無視する機能(バージョン8.3.0で導入)オプティマイザが必要な情報を確実に取得できるという前提のもと、TiDBは統計情報の収集を高速化し、統計情報の適時性を向上させることで、最適な実行プランの選択を保証し、クラスタのパフォーマンスを向上させます。同時に、TiDBはシステムオーバーヘッドを削減し、リソース利用率も向上させます。
信頼性と可用性大規模クラスターの安定性を向上させるTiDBを使用してマルチテナントアプリケーションやSaaSアプリケーションを運用する企業は、多くの場合、大量のテーブルを保存する必要があります。バージョン8.5.0では、TiDBは大規模クラスタの安定性を大幅に向上させました。
暴走クエリに対するトリガーの追加サポート、およびリソースグループの切り替えサポート(v8.4.0で導入)暴走クエリは、予期しないSQLパフォーマンスの問題がシステムに与える影響を軽減する効果的な手段です。TiDB v8.4.0では、識別条件としてコプロセッサーによって処理されたキーの数( PROCESSED_KEYS )とリクエストユニット( RU )が導入され、識別されたクエリを指定されたリソースグループに配置することで、暴走クエリのより正確な識別と制御が可能になりました。
リソース制御のバックグラウンドタスクにおけるリソース使用量の上限設定をサポート(実験的、v8.4.0で導入)リソース制御のバックグラウンドタスクに最大パーセンテージ制限を設定することで、さまざまなアプリケーションシステムのニーズに基づいてリソース消費を制御できます。これにより、バックグラウンドタスクの消費量を低く抑え、オンラインサービスの品質を確保できます。
TiProxyのユースケースを強化および拡張するTiDBの高可用性を実現する上で重要なコンポーネントであるTiProxyは、SQLトラフィックのアクセスと転送にとどまらず、クラスタ変更の評価をサポートする機能も備えています。主な機能は以下のとおりです。
TiDBの並列HashAggアルゴリズムはディスクスピルをサポートしています(v8.2.0でGA対応)。 HashAgg は、同じフィールド値を持つ行を効率的に集計するために TiDB で広く使用されている集計演算子です。TiDB v8.0.0 では、処理速度をさらに向上させる実験的機能として parallel HashAgg が導入されました。メモリリソースが不足している場合、parallel HashAgg は一時的にソートされたデータをディスクに書き出すことで、過剰なメモリ使用による潜在的な OOM リスクを回避します。これにより、ノードの安定性を維持しながらクエリ パフォーマンスが向上します。v8.2.0 では、この機能が一般提供 (GA) となり、デフォルトで有効になっているため、 tidb_executor_concurrencyを使用して parallel HashAgg の同時実行性を安全に構成できます。
SQL外部キー(バージョン8.5.0でGA対応)外部キーは、データベースにおける制約であり、テーブル間の関係を確立し、データの一貫性と整合性を確保します。外部キーは、子テーブルで参照されるデータが親テーブルに存在することを保証し、無効なデータの挿入を防ぎます。また、外部キーはカスケード操作(削除や更新時の自動同期など)をサポートし、ビジネスロジックの実装を簡素化し、データ関係を手動で維持する複雑さを軽減します。
ベクトル検索(実験的、v8.4.0で導入)ベクトル検索は、データの意味論に基づいた検索手法であり、より関連性の高い検索結果を提供します。AIや大規模言語モデル(LLM)の中核関数の一つとして、ベクトル検索は、検索拡張生成(RAG)、意味検索、推薦システムなど、さまざまなシナリオで活用できます。
データベースの運用と可観測性TiKVおよびTiDBのCPU時間をメモリテーブルに表示する(バージョン8.4.0で導入) CPU時間はシステムテーブルに統合され、セッションやSQLなどの他のメトリックと並べて表示されるようになりました。これにより、CPU使用率の高い操作を複数の視点から把握し、診断効率を向上させることができます。これは、インスタンスにおけるCPUスパイクやクラスタにおける読み書きホットスポットなどのシナリオを診断する際に特に役立ちます。
TiKVのCPU時間をテーブル別またはデータベース別に集計して表示する機能をサポート(v8.4.0で導入)ホットスポットの問題が個々のSQL文によって引き起こされていない場合、 Top SQLでテーブルまたはデータベースレベルごとに集計されたCPU時間を使用することで、ホットスポットの原因となっているテーブルやアプリケーションを迅速に特定でき、ホットスポットやCPU消費の問題の診断効率を大幅に向上させることができます。
Backup & Restore (BR)は、 AWS SDK for Rustを使用して外部storageにアクセスします (v8.5.0 で導入)。 BRは、TiKVからAmazon S3などの外部storageにアクセスするために、元のRusotoライブラリをAWS SDK for Rustに置き換えます。この変更により、 IMDSv2EKS Pod IdentityなどのAWS機能との互換性が向上します。
Securityスナップショットバックアップデータおよびログバックアップデータのクライアント側暗号化(v8.5.0で一般提供開始)バックアップデータをバックアップstorageにアップロードする前に、バックアップデータを暗号化することで、storage中および転送中のセキュリティを確保できます。

機能の詳細

拡張性

  • スキーマキャッシュのメモリ制限設定が一般提供開始(GA)となりました。テーブル数が数十万、あるいは数百万に達すると、この機能はスキーマメタデータのメモリ使用量を大幅に削減します。 #50959 @tiancaiamao@wjhuang2016 @gmhdbjd @tangenta

    SaaS環境によっては、テーブル数が数十万、あるいは数百万に達する場合、スキーマメタデータが相当量のメモリを消費することがあります。この機能を有効にすると、TiDBはLRU(Least Recently Used:最小使用頻度)アルゴリズムを使用して、対応するスキーマメタデータをキャッシュおよび削除することで、メモリ使用量を効果的に削減します。

    バージョン8.4.0以降、この機能はデフォルトで有効になっており、デフォルト値は536870912 (つまり512 MiB)です。必要に応じて、変数tidb_schema_cache_sizeを使用して調整できます。

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

  • PDのリージョン情報クエリサービスの拡張性を向上させるため、アクティブPDFollower機能を提供する(GA) #7431 okJiang

    リージョン数の多いTiDBクラスタでは、ハートビート処理やタスクスケジューリングに伴うオーバーヘッドが増加するため、PDリーダーのCPU負荷が高くなる可能性があります。クラスタにTiDBインスタンスが多数存在し、リージョン情報へのリクエストが同時に多数発生すると、PDリーダーのCPU負荷はさらに高まり、PDサービスが利用できなくなる恐れがあります。

    高可用性を確保するため、TiDB v7.6.0 では、PD のリージョン情報クエリ サービスの拡張性を向上させる実験的機能として Active PD Followerが導入されました。v8.5.0 では、この機能が一般提供 (GA) になります。Active PD Follower機能を有効にするには、システム変数pd_enable_follower_handle_region ONに設定します。この機能が有効になると、TiDB はリージョン情報要求をすべての PD サーバーに均等に分散し、PD フォロワーもリージョン要求を処理できるようになるため、PD リーダーの CPU 負荷が軽減されます。

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

パフォーマンス

  • TiDBの高速テーブル作成機能が一般提供開始(GA)となり、データ移行とクラスタ初期化時間を大幅に短縮 #50052 @D3Hunter@gmhdbjd

    TiDB v7.6.0 では、システム変数tidb_ddl_versionによって制御される、高速テーブル作成機能が実験的機能として導入されました。v8.0.0 以降、このシステム変数はtidb_enable_fast_create_tableに名称変更されました。

    バージョン8.5.0では、TiDBの高速テーブル作成機能が一般提供(GA)となり、デフォルトで有効になっています。データ移行やクラスタ初期化の際に、この機能は数百万ものテーブルを迅速に作成できるため、操作時間を大幅に短縮できます。

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

  • TiKV は MVCC インメモリ エンジン (IME) をサポートしており、広範な MVCC 履歴バージョンのスキャンを伴うクエリを高速化します #16141 @SpadeA-Tang@glorv@overvenus

    レコードが頻繁に更新される場合、または TiDB が履歴バージョンを長期間 (例えば 24 時間) 保持する必要がある場合、MVCC バージョンの蓄積によりスキャン パフォーマンスが低下する可能性があります。TiKV の MVCC インメモリ エンジンは、最新の MVCC バージョンをメモリにキャッシュし、高速な GC メカニズムを使用して履歴バージョンをメモリから削除することで、スキャン パフォーマンスを向上させます。

    バージョン8.5.0以降、TiKVはMVCCインメモリエンジンを導入しました。TiKVクラスタ内でMVCCバージョンが蓄積され、スキャンパフォーマンスが低下する場合は、TiKV構成パラメータin-memory-engine.enableを設定することで、TiKV MVCCインメモリエンジンを有効にしてスキャンパフォーマンスを向上させることができます。

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

信頼性

  • PD #5739 @rleungxによるリクエスト処理の最大レートと同時実行数の制限をサポート

    PDにリクエストが急増すると、ワークロードが増大し、PDのパフォーマンスに影響を与える可能性があります。バージョン8.5.0以降では、 pd-ctlを使用してPDが処理するリクエストの最大レートと同時実行数を制限し、安定性を向上させることができます。

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

SQL

  • 外部キーのサポート (GA) #36982 @YangKeao@crazycs520

    外部キー機能はバージョン8.5.0で一般提供開始(GA)となります。外部キー制約は、データの一貫性と整合性を確保するのに役立ちます。テーブル間の外部キー関係を容易に確立でき、カスケード更新とカスケード削除をサポートすることで、データ管理を簡素化します。この機能により、複雑なデータ関係を持つアプリケーションのサポートが強化されます。

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

  • オンラインで DDL ジョブを変更することをサポートするADMIN ALTER DDL JOBSステートメントを導入 #57229 @fzzf678 @tangenta

    バージョン8.3.0以降では、 tidb_ddl_reorg_batch_sizetidb_ddl_reorg_worker_cnt変数をセッションレベルで設定できるようになりました。そのため、これらの2つの変数をグローバルに設定しても、実行中のすべてのDDLジョブには影響しなくなりました。これらの変数の値を変更するには、まずDDLジョブをキャンセルし、変数を調整してから、ジョブを再実行する必要があります。

    TiDB v8.5.0 ではADMIN ALTER DDL JOBSステートメントが導入され、特定の DDL ジョブの変数値をオンラインで調整できるようになりました。これにより、リソース消費とパフォーマンスのバランスを柔軟に調整できます。変更は個々のジョブに限定されるため、影響をより制御しやすくなります。例:

    • ADMIN ALTER DDL JOBS job_id THREAD = 8; : 指定された DDL ジョブのtidb_ddl_reorg_worker_cntをオンラインで調整します。
    • ADMIN ALTER DDL JOBS job_id BATCH_SIZE = 256; : 指定されたジョブのtidb_ddl_reorg_batch_sizeをオンラインで調整します。
    • ADMIN ALTER DDL JOBS job_id MAX_WRITE_SPEED = '200MiB'; : オンラインの各 TiKV ノードへのインデックス データの書き込みトラフィックを調整します。

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

Security

  • BR は、フル バックアップ データとログ バックアップ データの両方のクライアント側暗号化をサポートします (GA) #28640 #56433 @joccau@Tristan1900

    • TiDB v5.3.0で実験的的に導入された、クライアント側でのフルバックアップデータの暗号化機能を使用すると、カスタムの固定キーを使用してクライアント側でバックアップデータを暗号化できます。

    • ログバックアップデータのクライアント側暗号化(TiDB v8.4.0で実験的に導入)を使用すると、以下のいずれかの方法を使用してクライアント側でログバックアップデータを暗号化できます。

      • カスタム固定キーを使用して暗号化する
      • ローカルディスクに保存されているマスターキーを使用して暗号化します。
      • キー管理サービス(KMS)によって管理されるマスターキーを使用して暗号化します。

    バージョン8.5.0以降、両方の暗号化機能が一般提供(GA)となり、クライアント側のデータセキュリティが強化されます。

    詳細については、 バックアップデータを暗号化するおよびログバックアップデータを暗号化する参照してください。

  • TiKVの保存時暗号化はGoogle Cloud Key Management Service (Google Cloud KMS) (GA) をサポートします。 #8906 @glorv

    TiKVは、保存データの暗号化に「保存時暗号化」技術を用いることで、データのセキュリティを確保します。この技術の中核となるのは、適切な鍵管理です。バージョン8.0.0では、TiKVの保存時暗号化において、マスターキー管理にGoogle Cloud KMSを試験的にサポートするようになりました。

    バージョン8.5.0以降、Google Cloud KMSを使用した保存データの暗号化が一般提供(GA)されます。この機能を使用するには、まずGoogle Cloudでキーを作成し、次にTiKV設定ファイルの[security.encryption.master-key]セクションを設定してください。

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

互換性の変更

注記:

このセクションでは、バージョン8.4.0から最新バージョン(8.5.0)にアップグレードする際に知っておくべき互換性の変更点について説明します。バージョン8.3.0以前のバージョンから最新バージョンにアップグレードする場合は、中間バージョンで導入された互換性の変更点も確認する必要があるかもしれません。

行動の変化

  • 非厳格モード ( sql_mode = '' ) では、 NULLの値をNULL以外の列に挿入すると、MySQL との互換性のためにエラーが返されるようになりました。 #55457 @joechenrh
  • ALTER TABLE ... DROP FOREIGN KEY IF EXISTS ...ステートメントはサポートされなくなりました。 #56703 @YangKeao

システム変数

変数名種類を変更する説明
tidb_enable_fast_create_table修正済みさらにテストを行った後、デフォルト値をOFFからONに変更します。これは、テーブル作成の高速化機能がデフォルトで有効になることを意味します。
tidb_ddl_reorg_max_write_speed新しく追加された各 TiKV ノードの書き込み帯域幅を制限し、インデックス作成の高速化が有効になっている場合( tidb_ddl_enable_fast_reorg変数で制御)にのみ有効になります。たとえば、この変数を200MiBに設定すると、最大書き込み速度が 200 MiB/s に制限されます。

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

コンフィグレーションファイルまたはコンポーネントコンフィグレーションパラメータ種類を変更する説明
TiDBdeprecate-integer-display-length修正済みバージョン8.5.0以降、整数表示幅機能は非推奨となりました。この設定項目のデフォルト値はfalseからtrueに変更されました。
ティクヴraft-client-queue-size修正済みデフォルト値を8192から16384に変更します。
ティクヴin-memory-engine.capacity新しく追加されたTiKV MVCC インメモリ エンジンが使用できる最大メモリサイズを制御します。デフォルト値はmin(the system memory * 10%, 5 GiB)です。
ティクヴin-memory-engine.enable新しく追加されたTiKV MVCCのインメモリエンジンを有効にして、マルチバージョンクエリを高速化するかどうかを制御します。デフォルト値はfalseで、これはインメモリエンジンが無効になっていることを意味します。
ティクヴin-memory-engine.gc-run-interval新しく追加されたインメモリ エンジンがキャッシュされた MVCC バージョンに対してガベージコレクション(GC) を実行する時間間隔を制御します。デフォルト値は"3m"です。
ティクヴin-memory-engine.mvcc-amplification-threshold新しく追加されたインメモリエンジンがリージョンを選択してロードする際の、MVCC読み取り増幅のしきい値を制御します。デフォルト値は10で、リージョン内の1行を読み取るのに10を超えるMVCCバージョンを処理する必要がある場合は、そのリージョンがインメモリエンジンにロードされる可能性があることを示します。
PDpatrol-region-worker-count新しく追加されたリージョンの健全性状態を検査する際にチェッカーによって作成される同時オペレーターの数を制御します。
BR--checksum修正済みデフォルト値をtrueからfalseに変更します。これは、デフォルトではBR がフルバックアップ中にテーブルレベルのチェックサムを計算しないことを意味し、バックアップのパフォーマンスを向上させます。

オペレーティングシステムとプラットフォームの要件変更

TiDB をアップグレードする前に、オペレーティング システムのバージョンがOSおよびプラットフォームの要件を満たしていることを確認してください。

  • CentOS Linux サポート終了CentOS Linux 7 のアップストリームサポートは 2024 年 6 月 30 日に終了しました。そのため、TiDB は v8.4.0 および v8.5.0 で CentOS 7 のサポートを終了します。Rocky Linux 9.1 以降のバージョンを使用することをお勧めします。CentOS 7 上の TiDB クラスタを v8.4.0 または v8.5.0 にアップグレードすると、クラスタが利用できなくなるリスクがあります。CentOS Linux 7 を引き続き使用しているユーザーを支援するため、TiDB v8.5.1 では CentOS Linux 7 のテストを再開し、互換性を持たせています。詳細については、 TiDB v8.5.1 リリースノートを参照してください。
  • Red Hat Enterprise Linux ライフサイクルによると、Red Hat Enterprise Linux 7 のメンテナンスサポートは 2024 年 6 月 30 日に終了しました。TiDB はバージョン 8.4.0 以降、Red Hat Enterprise Linux 7 のサポートを終了します。Rocky Linux 9.1 以降のバージョンを使用することをお勧めします。Red Hat Enterprise Linux 7 上の TiDB クラスタをバージョン 8.4.0 以降にアップグレードすると、クラスタが利用できなくなります。

削除された機能

  • 以下の機能が削除されました。

    • バージョン 8.4.0 では、 TiDBBinlogは削除されました。バージョン 8.3.0 以降、TiDB Binlog は完全に非推奨となっています。増分データレプリケーションには、代わりにTiCDCを使用してください。ポイントインタイムリカバリ(PITR) には、 PITRを使用してください。TiDB クラスタをバージョン 8.4.0 以降にアップグレードする前に、必ず TiCDC と PITR に切り替えてください。
  • 今後のバージョンでは、以下の機能が削除される予定です。

    • バージョン8.0.0以降、 TiDB Lightningは旧バージョンの競合検出戦略を非推奨とし、 conflict.strategyパラメータを使用して論理インポートモードと物理インポートモードの両方の競合検出戦略を制御できるようにします。旧バージョンの競合検出のduplicate-resolutionパラメータは、今後のリリースで削除されます。

非推奨機能

以下の機能は、将来のバージョンで廃止される予定です。

  • バージョン8.0.0では、TiDBは、統計情報を自動的に収集するタスクの順序を最適化するために優先度キューを有効にするかどうかを制御するシステム変数tidb_enable_auto_analyze_priority_queueを導入しました。今後のリリースでは、統計情報を自動的に収集するタスクの順序付けは優先度キューのみとなるため、このシステム変数は非推奨となります。
  • バージョン7.5.0では、TiDBにtidb_enable_async_merge_global_statsシステム変数が導入されました。この変数を使用すると、TiDBがパーティション統計の非同期マージを使用するように設定し、メモリ不足の問題を回避できます。今後のリリースでは、パーティション統計は非同期でマージされるため、このシステム変数は非推奨となります。
  • 今後のリリースでは 実行プランバインディングの自動進化が再設計される予定であり、関連する変数や動作が変更される予定です。
  • バージョン8.0.0では、TiDBが並列ハッシュ集計アルゴリズムのディスクスピルをサポートするかどうかを制御するシステム変数tidb_enable_parallel_hashagg_spillが導入されました。このシステム変数は、今後のバージョンで非推奨となります。
  • バージョン5.1では、TiDBはパーティションテーブルの動的プルーニングモードを有効にするかどうかを制御するシステム変数tidb_partition_prune_modeを導入しました。バージョン8.5.0以降では、この変数をstaticまたはstatic-onlyに設定すると警告が表示されます。今後のバージョンでは、このシステム変数は非推奨となります。
  • TiDB Lightning のパラメータconflict.max-record-rows 、今後のリリースで非推奨となり、その後削除されます。このパラメータはconflict.thresholdに置き換えられます。これは、競合するレコードの最大数が、単一のインポートタスクで許容できる競合レコードの最大数と一致することを意味します。
  • バージョン6.3.0以降、パーティションテーブルはデフォルトで 動的剪定モードを使用します。静的剪定モードと比較して、動的剪定モードはIndexJoinやプランキャッシュなどの機能をサポートし、パフォーマンスが向上しています。そのため、静的剪定モードは非推奨となります。

改善点

  • TiDB

    • 分散実行フレームワーク (DXF) を無効にした場合のADD INDEXアクセラレーション機能のジョブキャンセル応答速度を改善します #56017 @lance6716
    • 小さなテーブルへのインデックス追加速度の改善 #54230 @tangenta
    • インデックス追加時の取り込みフェーズの最大速度を制限する新しいシステム変数tidb_ddl_reorg_max_write_speedを追加 #57156 @CbcWestwolf
    • information_schema.tablesのクエリのパフォーマンスを場合によっては改善する #57295 @tangenta
    • DDLジョブパラメータの動的調整をサポートする #57526 @fzzf678
    • パーティション式のすべての列を含むグローバル インデックスをサポート #56230 @Defined2014
    • 範囲クエリのシナリオでリスト パーティション テーブルのパーティション プルーニングをサポート #56673 @Defined2014
    • FixControl#46177 をデフォルトで有効にして、場合によってはインデックス範囲スキャンではなくフルテーブルスキャンが誤って選択される問題を修正します #46177 @terry1purcell
    • 複数列および複数値インデックスの統計情報をより有効に活用するための内部推定ロジックを改善し、複数値インデックスを含む特定のクエリの推定精度を向上させます #56915 @time-and-fate
    • 特定のシナリオにおけるフルテーブルスキャンのコスト見積もりを改善し、フルテーブルスキャンを誤って選択する可能性を低減します #57085 @terry1purcell
    • 統計情報の同期読み込みに必要なデータ量を最適化して読み込みパフォーマンスを向上させる #56812 @winoros
    • OUTER JOINに一意インデックスとORDER BY ... LIMIT句が含まれる特定のケースで実行プランを最適化し、実行効率を向上させます #56321 @winoros
  • ティクヴ

    • レプリカのクリーンアップには別のスレッドを使用し、 Raft の読み取りと書き込みの重要なパスのレイテンシーを安定させる #16001 @hbisheng
    • SIMD #17290 @EricZequanをサポートすることで、ベクトル距離関数のパフォーマンスを向上させます。
  • PD

    • tsoサービスのマイクロサービスモードと非マイクロサービスモード間の動的な切り替えをサポート #8477 @rleungx
    • pd-ctl config出力における特定のフィールドの大文字小文字の形式を最適化する #8694 @lhy1024
    • ストア制限v2が一般提供 (GA) #8865 @lhy1024
    • リージョン検査の同時実行設定のサポート(実験的) #8866 @lhy1024
  • TiFlash

    • クラスター化インデックスを使用したテーブルのバックグラウンドでの古いデータのガベージコレクション速度を向上 #9529 @JaySon-Huang
    • データ更新シナリオにおけるベクトル検索のクエリ パフォーマンスを向上 #9599 @Lloyd-Pottiger
    • ベクターインデックス構築中の CPU 使用率の監視メトリクスを追加 #9032 @JaySon-Huang
    • 論理演算子の実行効率を向上 #9146 @windtalker
  • ツール

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

      • バックアップ中の不要なログ出力を削減 #55902 @Leavrth
      • 暗号化キー--crypter.keyのエラー メッセージを最適化 #56388 @Tristan1900
      • データベース作成時のBRの同時実行数を増やしてデータ復元パフォーマンスを向上させる #56866 @Leavrth
      • フルバックアップ中にテーブルレベルのチェックサム計算をデフォルトで無効にする( --checksum=false )バックアップパフォーマンスを向上させる #56373 @Tristan1900
      • 各storageノードの接続タイムアウトを個別に追跡およびリセットするメカニズムを追加して、低速ノードの処理を強化し、バックアップ操作のハングを防止します #57666 @3pointerシュート
    • TiDBデータ移行(DM)

      • DMクラスタ起動時にDMワーカーがDMマスターに接続するための再試行を追加 #4287 @GMHDBJD

バグ修正

  • TiDB

    • TiDBがPDから返されるリージョンメタデータにLeader情報がない場合にリクエストを自動的に再試行しない問題を修正し、実行エラーが発生する可能性があった #56757 @cfzjywxk
    • 書き込み競合が発生した場合にTTLタスクをキャンセルできない問題を修正 #56422 @YangKeao
    • TTLタスクをキャンセルした際に、対応するSQLが強制終了されない問題を修正しました #56511 @lcwangchao
    • v6.5からv7.5以降にアップグレードしたクラスターで、既存のTTLタスクが予期せず頻繁に実行される問題を修正します #56539 @lcwangchao
    • INSERT ... ON DUPLICATE KEYステートメントがmysql_insert_idと互換性がない問題を修正 #55965 @tiancaiamao
    • TiKVをstorageエンジンとして選択しない場合、TTLが失敗する可能性がある問題を修正 #56402 @YangKeao
    • AUTO_INCREMENTステートメントを使用してデータをインポートした後、 IMPORT INTOフィールドが正しく設定されない問題を修正します #56476 @D3Hunter
    • TiDBがADD INDEXを実行する際にインデックス長の制限をチェックしない問題を修正しました。 #56930 @fzzf678
    • RECOVER TABLE BY JOB JOB_ID;を実行すると TiDB がpanicを起こす可能性がある問題を修正しました #55113 @crazycs520
    • 古い読み取りが読み取り操作のタイムスタンプを厳密に検証しないため、TSOと実際の物理時間の間にオフセットが存在する場合にトランザクションの一貫性に影響を与える可能性がわずかにある問題を修正しました #56809 @MyonKeminta
    • DDL オーナーノードが切り替わった後、TiDB が以前の進行状況から Reorg DDL タスクを再開できない問題を修正 #56506 @tangenta
    • 分散実行フレームワーク (DXF) の監視パネルの一部のメトリックが不正確である問題を修正します#57172 @fzzf678 #56942 @fzzf678
    • REORGANIZE PARTITIONが特定の場合にエラー理由を返さない問題を修正 #56634 @mjonss
    • INFORMATION_SCHEMA.TABLESのクエリで大文字小文字の区別により誤った結果が返される問題を修正しました #56987 @joechenrh
    • 共通テーブル式(CTE)に複数のデータコンシューマーがあり、そのうちの1つのコンシューマーがデータを読み取らずに終了した場合に発生する可能性のある無効なメモリアクセスの問題を修正します #55881 @windtalker
    • INDEX_HASH_JOIN異常終了時にハングアップする可能性がある問題を修正しました #54055 @wshwsh12
    • TRUNCATEステートメントがNULL値を処理する場合に誤った結果を返す問題を修正 #53546 @tuziemon
    • CAST AS CHAR関数が型推論エラーにより誤った結果を返す問題を修正しました #56640 @zimulala
    • 型推論エラーにより一部の関数の出力で文字列が切り詰められる問題を修正 #56587 @joechenrh
    • ADDTIME()およびSUBTIME()関数が、最初の引数が日付型の場合に誤った結果を返す問題を修正します #57569 @xzhangxian1008
    • 非厳格モード( NULL sql_mode = ''値が挿入される問題を修正 #56381 @joechenrh
    • UPDATEステートメントがENUM型の値を誤って更新する問題を修正しました #56832 @xhebox
    • tidb_low_resolution_tso変数を有効にするとSELECT FOR UPDATEステートメントの実行中にリソースリークが発生する問題を修正しました #55468 @tiancaiamao
    • JSON_TYPE()関数がパラメータの型を検証せず、JSON 以外のデータ型が渡された場合にエラーが返されない問題を修正しました #54029 @YangKeao
    • PREPAREステートメントで JSON関数を使用すると実行エラーが発生する可能性がある問題を修正しました #54044 @YangKeao
    • BIT型からCHAR型へのデータ変換時にTiKVパニックが発生する可能性がある問題を修正しました #56494 @lcwangchao
    • CREATE VIEWステートメントで変数またはパラメーターを使用してもエラーが報告されない問題を修正 #53176 @mjonss
    • JSON_VALID()関数が誤った結果を返す問題を修正 #56293 @YangKeao
    • tidb_ttl_job_enable変数が無効になった後もTTLタスクがキャンセルされない問題を修正 #57404 @YangKeao
    • RANGE COLUMNSパーティション関数とutf8mb4_0900_ai_ci照合順序を同時に使用すると、クエリ結果が正しくない可能性がある問題を修正しました #57261 @Defined2014
    • 改行プリペアドステートメントで始まるプリペアドステートメントの実行によって発生するランタイムエラーを修正します。これにより、配列の範囲外エラーが発生します。 #54283 @Defined2014
    • UTC_TIMESTAMP()関数の精度に関する問題を修正しました。例えば、精度が高すぎるように設定されていました。 #56451 @chagelo
    • UPDATEINSERT 、およびDELETE IGNOREステートメントで外部キーエラーが省略されない問題を修正 #56678 @YangKeao
    • information_schema.cluster_slow_queryテーブルをクエリする際に、時間フィルタが追加されていない場合、最新のスローログファイルのみがクエリされる問題を修正しました #56100 @crazycs520
    • TTLテーブルのメモリリークの問題を修正 #56934 lcwangchao
    • write_onlyステータスのテーブルで外部キー制約が有効にならず、 non-publicステータスのテーブルが使用できなくなる問題を修正しました #55813 @YangKeao
    • NATURAL JOINまたはUSING句の後にサブクエリを使用するとエラーが発生する可能性がある問題を修正しました #53766 @dash12653
    • CTE にORDER BYLIMIT 、またはSELECT DISTINCT句が含まれており、別の CTE の再帰部分から参照されている場合、インライン化が正しく行われず、実行エラーが発生する可能性がある問題を修正します。 #56603 @elsa0520
    • VIEWで定義されたCTEが正しくインライン化されていない問題を修正します #56582 @elsa0520
    • Plan Replayerが外部キーを含むテーブル構造をインポートする際にエラーを報告する可能性がある問題を修正 #56456 @hawkingrei
    • プランリプレイヤーが配置ルールを含むテーブル構造をインポートする際にエラーを報告する可能性がある問題を修正しました #54961 @hawkingrei
    • ANALYZEを使用してテーブルの統計情報を収集する際に、テーブルに仮想的に生成された列の式インデックスが含まれている場合、実行時にエラーが報告される問題を修正しました。 #57079 @hawkingrei
    • DROP DATABASEステートメントが統計情報における対応する更新を正しくトリガーしない問題を修正しました #57227 @Rustin170506
    • CTEでデータベース名を解析する際に、誤ったデータベース名が返される問題を修正しました #54582 @hawkingrei
    • DUMP STATSが統計情報を JSON に変換する際に、ヒストグラムの上限と下限が破損する問題を修正しました #56083 @hawkingrei
    • EXISTSサブクエリの結果が代数演算にさらに関与すると、MySQL の結果と異なる可能性がある問題を修正 #56641 @windtalker
    • 複数テーブルのDELETEステートメントに対して、エイリアスを使用した実行プランバインディングを作成できない問題を修正 #56726 @hawkingrei
    • オプティマイザが複雑な述語を簡略化する際に文字セットと照合順序を考慮しないため、実行エラーが発生する可能性がある問題を修正しました #56479 @dash12653
    • Grafana のStats Healthy Distributionパネルのデータが正しくない可能性がある問題を修正 #57176 @hawkingrei
    • クラスタ化インデックスを持つテーブルをクエリする際に、ベクトル検索が誤った結果を返す可能性がある問題を修正 #57627 @winoros
  • ティクヴ

    • Raft EngineのMemTable内の古いインデックスに読み取りスレッドがアクセスした際に発生するpanic問題を修正しました #17383 @LykxSassinator
    • 多数のトランザクションが同じキーのロック解除をキューイングしており、キーが頻繁に更新される場合、デッドロック検出に過度の負荷がかかり、TiKV OOM の問題が発生する可能性がある問題を修正しました #17394 @MyonKeminta
    • リソース制御のバックグラウンドタスクのCPU使用率が二重にカウントされる問題を修正 #17603 @glorv
    • CDC内部タスクの蓄積によりTiKV OOMが発生する可能性がある問題を修正 #17696 @3AceShowHand
    • raft-entry-max-size設定が高すぎる場合に大規模なバッチ書き込みによってパフォーマンスのジッターが発生する問題を修正 #17701 @SpadeA-Tang
    • リージョン分割後にリーダーが迅速に選出されない問題を修正 #17602 @LykxSassinator
    • RADIANS()またはDEGREES()関数を含むクエリを実行関数際に TiKV がpanic可能性がある問題を修正 #17852 @gengliqi
    • 休止状態のすべてのリージョンが起動されたときに書き込みジッターが発生する可能性がある問題を修正 #17101 @hhwyt
  • PD

    • ホットスポットキャッシュのメモリリーク問題を修正 #8698 @lhy1024
    • リソースグループセレクターがどのパネルにも適用されない問題を修正 #56572 @glorv
    • 削除したリソースグループが監視パネルに表示されたままになる問題を修正 #8716 @AndreMouche
    • リージョン同期処理中のログの説明が不明瞭な問題を修正 #8717 @lhy1024
    • ラベル統計におけるメモリリークの問題を修正 #8700 @lhy1024
    • tidb_enable_tso_follower_proxy0またはOFFに設定しても TSOFollowerプロキシ機能が無効にならない問題を修正しました #8709 @JmPotato
  • TiFlash

    • SUBSTRING()関数が特定の整数型に対してposおよびlen引数をサポートしていないためクエリエラーが発生する問題を修正しました #9473 @gengliqi
    • 分散storageおよびコンピューティングアーキテクチャにおいて、 TiFlash書き込みノードをスケールアウトした後にベクトル検索のパフォーマンスが低下する可能性がある問題を修正します #9637 @kolafish
    • SUBSTRING()関数が、2 番目のパラメータが負の場合に誤った結果を返す問題を修正しました #9604 @guo-shaoge
    • REPLACE()関数が最初のパラメータが定数の場合にエラーを返す問題を修正 #9522 @guo-shaoge
    • LPAD()およびRPAD()関数が場合によっては誤った結果を返す問題を修正 #9465 @guo-shaoge
    • ベクトルインデックス作成後、ベクトルインデックス構築のための内部タスクが予期せず中断された場合、 TiFlashが破損したデータを書き込み、再起動できなくなる可能性がある問題を修正しました。 #9714 @JaySon-Huang
  • ツール

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

      • バックアップ中に未完了の範囲ギャップが多すぎる場合に発生するOOM問題を修正し、事前割り当てメモリの量を削減します #53529 @Leavrth
      • グローバルインデックスをバックアップできない問題を修正 #57469 @Defined2014
      • ログに暗号化された情報が出力される可能性がある問題を修正 #57585 @kennytm
      • アドバンサーがロックの競合を処理できない問題を修正 #57134 @3pointer
      • k8s.io/apiライブラリ バージョン #57790 @BornChangerをアップグレードして、潜在的なセキュリティ脆弱性を修正します
      • クラスター内に多数のテーブルが存在するが実際のデータサイズが小さい場合に、PITRタスクがInformation schema is out of dateエラーを返す可能性がある問題を修正します。 #57743 @Tristan1900
      • アドバンスダー所有者が切り替わるとログバックアップが予期せず一時停止状態になることがある問題を修正 #58031 @3pointer
      • tiup br restoreコマンドがデータベースまたはテーブルの復元時にターゲットクラスタテーブルが既に存在するかどうかのチェックを省略し、既存のテーブルを上書きする可能性がある問題を修正しました #58168 @RidRisR
    • TiCDC

      • Debeziumプロトコル使用時にKafkaメッセージにキーフィールドが欠落する問題を修正 #1799 @wk989898
      • 再実行モジュールがエラーを正しく報告できない問題を修正 #11744 @CharlesCheung96
      • TiDB DDL の所有者変更中に DDL タスクのスキーマ バージョンが非増分になった場合に TiCDC が誤って DDL タスクを破棄してしまう問題を修正しました #11714 @wlwilliamx
    • TiDB Lightning

      • TiDB LightningがTiKVから送信された過大サイズのメッセージを受信できない問題を修正 #56114 @fishiu
      • 物理インポートモードを使用してデータをインポートした後、 AUTO_INCREMENTの値が高すぎるように設定される問題を修正しました #56814 @D3Hunter

性能テスト

TiDB v8.5.0 のパフォーマンスについて知るには、 TiDB Cloud Dedicatedクラスターの性能テストレポートを参照してください。

寄稿者

TiDBコミュニティの以下の貢献者の皆様に感謝申し上げます。

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