TiDB 8.5.0 リリースノート
発売日:2024年12月19日
TiDB バージョン: 8.5.0
TiDB 8.5.0 は長期サポートリリース (LTS) です。
以前のLTSバージョン8.1.0と比較して、8.5.0には8.3.0-DMR 8.2.0-DMRリリースされた新機能、改善、バグ修正が含まれています。8.1.xから8.4.0-DMRにアップグレードする際は、バージョンTiDB リリースノート PDFをダウンロードして、2つのLTSバージョン間のすべてのリリースノートをご覧いただけます。以下の表は、バージョン8.1.0から8.5.0への主な変更点です。
| カテゴリ | 機能/拡張機能 | 説明 |
|---|---|---|
| スケーラビリティとパフォーマンス | 多次元でのデータ処理レイテンシーを削減 | TiDBはデータ処理を継続的に改良することでパフォーマンスを向上させ、金融シナリオにおける低レイテンシのSQL処理要件を効果的に満たします。主なアップデートは以下の通りです。
|
| TiKV MVCC インメモリ エンジン (IME) (v8.5.0 で導入) | TiKV MVCCインメモリエンジンは、最新のMVCCバージョンのデータをメモリにキャッシュします。これにより、TiKVは古いバージョンをスキップして最新のデータを迅速に取得できます。この機能は、データレコードが頻繁に更新されるシナリオや、履歴バージョンが長期間保持されるシナリオにおいて、データスキャンのパフォーマンスを大幅に向上させます。 | |
| アクティブ PD フォロワーを使用して、PD のリージョン情報クエリ サービスを強化します(v8.5.0 で GA) | TiDB v7.6.0では、PDフォロワーがリージョン情報クエリサービスを提供できる実験的機能「Active PD Follower 」が導入されました。この機能により、多数のTiDBノードとリージョンを持つクラスターにおいて、PDクラスターのGetRegionおよびScanRegionsリクエスト処理能力が向上し、PDリーダーのCPU負荷が軽減されます。v8.5.0では、この機能が一般提供(GA)されます。 | |
| インスタンスレベルの実行プランキャッシュ(実験的、v8.4.0 で導入) | インスタンスレベルのプランキャッシュにより、同じTiDBインスタンス内のすべてのセッションでプランキャッシュを共有できます。セッションレベルのプランキャッシュと比較して、この機能はより多くの実行プランをメモリにキャッシュすることでSQLコンパイル時間を短縮し、全体的なSQL実行時間を短縮します。OLTPのパフォーマンスとスループットを向上させると同時に、メモリ使用量をより適切に制御し、データベースの安定性を高めます。 | |
| パーティションテーブルのグローバルインデックス(v8.4.0 で GA) | グローバルインデックスは、パーティション化されていない列の取得効率を効果的に向上させ、一意のキーがパーティションキーを含んでいなければならないという制約を排除します。この機能により、TiDBパーティションテーブルの利用シナリオが拡張され、パーティションテーブルのパフォーマンスが向上し、特定のクエリシナリオにおけるリソース消費が削減されます。 | |
Projection演算子のstorageエンジンへのデフォルトのプッシュダウン(v8.3.0 で導入) | Projection演算子をstorageエンジンにプッシュダウンすることで、storageノード間の負荷を分散し、ノード間のデータ転送を削減できます。この最適化により、特定のSQLクエリの実行時間が短縮され、データベース全体のパフォーマンスが向上します。 | |
| 統計情報を収集する際に不要な列を無視する(v8.3.0 で導入) | TiDBは、オプティマイザが必要な情報を確実に取得できるという前提のもと、統計収集を高速化し、統計の適時性を向上させ、最適な実行プランが選択されることを保証することで、クラスターのパフォーマンスを向上させます。同時に、TiDBはシステムオーバーヘッドを削減し、リソース利用率を向上させます。 | |
| 信頼性と可用性 | 大規模クラスタの安定性を向上 | TiDBを使用してマルチテナントアプリケーションやSaaSアプリケーションを運用する企業は、多くの場合、多数のテーブルを保存する必要があります。v8.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では、処理速度をさらに向上させるための実験的機能として並列HashAggが導入されました。メモリリソースが不足している場合、並列HashAggは一時的にソートされたデータをディスクに書き出すことで、過剰なメモリ使用による潜在的なOOMリスクを回避します。これにより、ノードの安定性を維持しながらクエリパフォーマンスが向上します。v8.2.0では、この機能が一般提供(GA)され、デフォルトで有効化されているため、 tidb_executor_concurrencyを使用して並列HashAggの同時実行性を安全に設定できます。 | |
| SQL | 外部キー(v8.5.0 で GA) | 外部キーは、データベースにおける制約であり、テーブル間の関係を確立することでデータの一貫性と整合性を確保します。子テーブルで参照されているデータが親テーブルにも存在することを保証し、無効なデータの挿入を防ぎます。また、外部キーはカスケード操作(削除や更新時の自動同期など)もサポートするため、ビジネスロジックの実装が簡素化され、データ関係を手動で管理する際の複雑さが軽減されます。 |
| ベクトル検索(実験的、v8.4.0 で導入) | ベクトル検索は、データのセマンティクスに基づいた検索手法であり、より関連性の高い検索結果を提供します。AIや大規模言語モデル(LLM)の中核関数の一つとして、ベクトル検索は検索拡張生成(RAG)、セマンティック検索、レコメンデーションシステムなど、様々なシナリオで活用できます。 | |
| DB操作と可観測性 | メモリテーブルに TiKV および TiDB CPU 時間を表示する(v8.4.0 で導入) | CPU時間がシステムテーブルに統合され、セッションやSQLの他のメトリクスと並べて表示されるようになりました。これにより、CPU消費量の多い操作を複数の視点から観察し、診断効率を向上させることができます。これは、インスタンスにおけるCPU使用率の急上昇や、クラスターにおける読み取り/書き込みのホットスポットといったシナリオの診断に特に役立ちます。 |
| テーブルまたはデータベースごとに集計された TiKV CPU 時間の表示をサポート(v8.4.0 で導入) | ホットスポットの問題が個々の SQL ステートメントによって発生していない場合は、 「Top SQL」のテーブルまたはデータベース レベル別に集計された CPU 時間を使用すると、ホットスポットの原因となっているテーブルまたはアプリケーションを迅速に特定できるため、ホットスポットと CPU 消費の問題の診断効率が大幅に向上します。 | |
| バックアップとリストア(BR)は、 AWS SDK for Rustを使用して外部storageにアクセスします(v8.5.0 で導入) | BRは、TiKVからAmazon S3などの外部storageにアクセスするために、オリジナルのRusotoライブラリをAWS SDK for Rustに置き換えました。この変更により、 IMDSv2やEKS Pod IdentityなどのAWS機能との互換性が向上します。 | |
| Security | スナップショット バックアップ データとログ バックアップ データのクライアント側暗号化 (v8.5.0 で GA) | バックアップ データをバックアップstorageにアップロードする前に、バックアップ データを暗号化して、storage中および転送中のセキュリティを確保できます。 |
機能の詳細
スケーラビリティ
スキーマキャッシュのメモリ制限設定が一般提供(GA)されました。テーブル数が数十万、あるいは数百万に達すると、この機能によりスキーマメタデータのメモリ使用量が大幅に削減されます#50959 @ 天菜麻緒 @ wjhuang2016 @ gmhdbjd @ 接線
SaaS シナリオによっては、テーブル数が数十万、あるいは数百万に達する場合があり、スキーマメタデータが大量のメモリを消費することがあります。この機能を有効にすると、TiDB は Least Recently Used (LRU) アルゴリズムを使用して対応するスキーマメタデータをキャッシュおよび削除し、メモリ使用量を効果的に削減します。
バージョン8.4.0以降、この機能はデフォルトで有効になっており、デフォルト値は
536870912(つまり512MiB)です。必要に応じて変数tidb_schema_cache_sizeを使用して調整できます。詳細についてはドキュメント参照してください。
PDのリージョン情報クエリサービス(GA) #7431 @ okJiangのスケーラビリティを強化するために、アクティブPDFollower機能を提供します。
多数のリージョンを持つ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 @ D3ハンター @ gmhdbjd
TiDB v7.6.0では、実験的機能として高速テーブル作成が導入され、システム変数
tidb_ddl_versionによって制御されます。v8.0.0以降、このシステム変数の名前はtidb_enable_fast_create_tableに変更されます。v8.5.0では、TiDB高速テーブル作成機能が一般提供(GA)され、デフォルトで有効化されます。この機能は、データ移行およびクラスター初期化中に数百万個のテーブルを迅速に作成し、操作時間を大幅に短縮します。
詳細についてはドキュメント参照してください。
TiKVはMVCCインメモリエンジン(IME)をサポートしており、広範なMVCC履歴バージョン#16141 @ スペードA-タン @ 栄光 @ 金星の上のスキャンを含むクエリを高速化します。
レコードが頻繁に更新される場合、または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のパフォーマンスに影響を及ぼす可能性があります。v8.5.0以降では、
pd-ctl使用することでPDで処理されるリクエストの最大レートと同時実行数を制限し、PDの安定性を向上させることができます。詳細についてはドキュメント参照してください。
SQL
外部キーのサポート (GA) #36982 @ ヤンケオ @ crazycs520
外部キー機能はv8.5.0で一般提供(GA)されます。外部キー制約は、データの一貫性と整合性の確保に役立ちます。テーブル間の外部キー関係を容易に確立でき、カスケード更新とカスケード削除をサポートすることで、データ管理を簡素化します。この機能により、複雑なデータ関係を持つアプリケーションのサポートが強化されます。
詳細についてはドキュメント参照してください。
DDLジョブのオンライン変更をサポートするために
ADMIN ALTER DDL JOBSステートメントを導入します#57229 @ fzzf678 @ 接線バージョン8.3.0以降では、変数
tidb_ddl_reorg_batch_sizeとtidb_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 @ ジョッカウ @ トリスタン1900
完全バックアップ データのクライアント側暗号化 (TiDB v5.3.0 で実験的に導入) により、カスタム固定キーを使用してクライアント側でバックアップ データを暗号化できるようになります。
ログ バックアップ データのクライアント側暗号化 (TiDB v8.4.0 で実験的に導入) を使用すると、次のいずれかの方法を使用してクライアント側でログ バックアップ データを暗号化できます。
- カスタム固定キーを使用して暗号化する
- ローカルディスクに保存されたマスターキーを使用して暗号化する
- キー管理サービス (KMS) によって管理されるマスター キーを使用して暗号化します。
バージョン 8.5.0 以降では、両方の暗号化機能が一般提供 (GA) され、クライアント側のデータ セキュリティが強化されます。
詳細については、 バックアップデータを暗号化するおよびログバックアップデータを暗号化するを参照してください。
保存時の TiKV 暗号化はGoogle Cloud 鍵管理サービス (Google Cloud KMS) (GA) #8906 @ 栄光をサポートします
TiKVは、保存データの暗号化に保管時暗号化技術を用いることでデータセキュリティを確保します。この技術の中核となるのは、適切な鍵管理です。バージョン8.0.0では、TiKVの保管時暗号化は、マスター鍵管理にGoogle Cloud KMSを使用した試験的なサポートを開始しました。
バージョン8.5.0以降、Google Cloud KMSを使用した保存時の暗号化が一般提供(GA)されます。この機能を使用するには、まずGoogle Cloudで鍵を作成し、TiKV設定ファイルの
[security.encryption.master-key]セクションを設定してください。詳細についてはドキュメント参照してください。
互換性の変更
注記:
このセクションでは、v8.4.0から最新バージョン(v8.5.0)にアップグレードする際に知っておくべき互換性の変更点について説明します。v8.3.0以前のバージョンから最新バージョンにアップグレードする場合は、中間バージョンで導入された互換性の変更点も確認する必要があるかもしれません。
行動の変化
- 非厳密モード(
sql_mode = '')では、NULL以外の列にNULL値を挿入すると、MySQLとの互換性のためにエラーが返されるようになりました#55457 @ ジョーチェン ALTER TABLE ... DROP FOREIGN KEY IF EXISTS ...ステートメントはサポートされなくなりました#56703 @ ヤンケオ
システム変数
| 変数名 | タイプを変更 | 説明 |
|---|---|---|
tidb_enable_fast_create_table | 修正済み | さらにテストを行った後、デフォルト値をOFFからONに変更します。つまり、 高速テーブル作成機能はデフォルトで有効になります。 |
tidb_ddl_reorg_max_write_speed | 新しく追加された | 各TiKVノードの書き込み帯域幅を制限します。インデックス作成アクセラレーションが有効になっている場合(変数tidb_ddl_enable_fast_reorgで制御)のみ有効になります。例えば、変数を200MiBに設定すると、最大書き込み速度は200MiB/sに制限されます。 |
コンフィグレーションパラメータ
| コンフィグレーションファイルまたはコンポーネント | コンフィグレーションパラメータ | タイプを変更 | 説明 |
|---|---|---|---|
| ティドブ | deprecate-integer-display-length | 修正済み | バージョン8.5.0以降、整数表示幅機能は非推奨となりました。この設定項目のデフォルト値はfalseからtrueに変更されました。 |
| ティクブ | raft-client-queue-size | 修正済み | デフォルト値を8192から16384に変更します。 |
| ティクブ | in-memory-engine.capacity | 新しく追加された | TiKV MVCCインメモリエンジンが使用できる最大メモリサイズを制御します。デフォルト値はシステムメモリの10%です。最大値は5GiBです。 |
| ティクブ | 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バージョンの処理が必要な場合、このリージョンはインメモリエンジンにロードされる可能性があることを示します。 |
| PD | patrol-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はRed Hat Enterprise Linux 7 v8.4.0以降のサポートを終了します。Rocky Linux 9.1以降のバージョンの使用をお勧めします。Red Hat Enterprise Linux 7上のTiDBクラスタをv8.4.0以降にアップグレードすると、クラスタが使用できなくなります。
削除された機能
次の機能は削除されました:
- v8.4.0では、 TiDBBinlogは削除されました。v8.3.0以降、TiDB Binlogは完全に非推奨となりました。増分データレプリケーションの場合は、代わりにTiCDC使用してください。ポイントインタイムリカバリ(PITR)の場合は、 PITR使用してください。TiDBクラスターをv8.4.0以降のバージョンにアップグレードする前に、必ずTiCDCとPITRに切り替えてください。
以下の機能は将来のバージョンで削除される予定です。
- TiDB Lightning v8.0.0以降、物理インポートモードの競合検出の古いバージョン戦略は非推奨となり、
conflict.strategy番目のパラメータを使用して論理インポートモードと物理インポートモードの両方の競合検出戦略を制御できるようになりました。旧バージョンの競合検出用のduplicate-resolutionのパラメータは、将来のリリースで削除される予定です。
- TiDB Lightning v8.0.0以降、物理インポートモードの競合検出の古いバージョン戦略は非推奨となり、
非推奨の機能
以下の機能は将来のバージョンで廃止される予定です。
- TiDB v8.0.0では、統計を自動収集するタスクの順序を最適化するために、優先度キューを有効にするかどうかを制御するシステム変数
tidb_enable_auto_analyze_priority_queueが導入されました。将来のリリースでは、統計を自動収集するタスクの順序付けは優先度キューのみになるため、このシステム変数は廃止される予定です。 - v7.5.0では、TiDBにシステム変数
tidb_enable_async_merge_global_stats導入されました。この変数を使用すると、TiDBがパーティション統計情報の非同期マージを使用することで、OOM問題を回避することができます。将来のリリースでは、パーティション統計情報は非同期にマージされるため、このシステム変数は非推奨となります。 - 以降のリリースでは実行計画バインディングの自動進化再設計する予定であり、関連する変数と動作が変更されます。
- TiDB v8.0.0では、並列HashAggアルゴリズムのディスクスピルをサポートするかどうかを制御するシステム変数
tidb_enable_parallel_hashagg_spill導入されました。将来のバージョンでは、このシステム変数は非推奨になります。 - TiDB v5.1では、パーティションテーブルの動的プルーニングモードを有効にするかどうかを制御するシステム変数
tidb_partition_prune_modeが導入されました。v8.5.0以降では、この変数をstaticまたはstatic-onlyに設定すると警告が返されます。将来のバージョンでは、このシステム変数は非推奨になります。 - TiDB Lightningパラメータ
conflict.max-record-rowsは将来のリリースで廃止される予定であり、その後削除されます。このパラメータはconflict.thresholdに置き換えられます。これは、競合レコードの最大数が、単一のインポートタスクで許容される競合レコードの最大数と一致することを意味します。 - バージョン6.3.0以降、パーティションテーブルはデフォルトで動的プルーニングモード使用します。静的プルーニングモードと比較して、動的プルーニングモードはIndexJoinやプランキャッシュなどの機能をサポートし、パフォーマンスが向上します。そのため、静的プルーニングモードは非推奨となります。
改善点
ティドブ
- 分散実行フレームワーク(DXF) #56017 @ ランス6716を無効にした場合の
ADD INDEX加速機能のジョブキャンセルの応答速度を改善しました。 - 小さなテーブルへのインデックス追加速度の向上#54230 @ 接線
- インデックス#57156 @ Cbcウェストウルフを追加する際の取り込みフェーズの最大速度を制限する新しいシステム変数
tidb_ddl_reorg_max_write_speedを追加します。 - 場合によっては
information_schema.tablesクエリのパフォーマンスを#57295 @ 接線で改善 - より多くの DDL ジョブパラメータを動的に調整するサポート#57526 @ fzzf678
- パーティション式#56230 @ 定義2014のすべての列を含むグローバルインデックスをサポートします。
- 範囲クエリシナリオ#56673 @ 定義2014でリストパーティションテーブルのパーティションプルーニングをサポート
- FixControl#46177 をデフォルトで有効にして、場合によってはインデックス範囲スキャンではなくテーブル全体のスキャンが誤って選択される問題を修正します#46177 @ テリー・パーセル
- 内部推定ロジックを改善し、複数列および複数値インデックスの統計をより有効に活用して、複数値インデックス#56915 @ 時間と運命を含む特定のクエリの推定精度を向上させました。
- 特定のシナリオにおけるフルテーブルスキャンのコスト見積りを改善し、誤ってフルテーブルスキャンを選択する可能性を低減します#57085 @ テリー・パーセル
- 統計の同期ロードに必要なデータ量を最適化して、ロードパフォーマンスを向上させる#56812 @ ウィノロス
OUTER JOINが一意のインデックスとORDER BY ... LIMIT句を含む特定のケースで実行プランを最適化し、実行効率#56321 @ ウィノロスを向上させます。
- 分散実行フレームワーク(DXF) #56017 @ ランス6716を無効にした場合の
ティクブ
PD
TiFlash
ツール
バックアップと復元 (BR)
- バックアップ中の不要なログ出力を削減#55902 @ リーヴルス
- 暗号化キーのエラーメッセージを最適化
--crypter.key#56388 @ トリスタン1900 - データベース作成時にBRの同時実行性を高めて、データ復元パフォーマンスを向上します#56866 @ リーヴルス
- バックアップパフォーマンスを向上させるために、フルバックアップ中のテーブルレベルのチェックサム計算をデフォルトで無効にする(
--checksum=false) #56373 @ トリスタン1900 - 各storageノードの接続タイムアウトを独立して追跡およびリセットするメカニズムを追加し、低速ノードの処理を強化して、バックアップ操作がハングするのを防ぎます#57666 @ 3ポイントシュート
TiDB データ移行 (DM)
バグ修正
ティドブ
- PDから返されたリージョンメタデータにLeader情報が欠けている場合にTiDBがリクエストを自動的に再試行せず、実行エラーが発生する可能性がある問題を修正しました#56757 @ cfzjywxk
- 書き込み競合が発生したときにTTLタスクをキャンセルできない問題を修正#56422 @ ヤンケオ
- TTLタスクをキャンセルした際に、対応するSQLが強制終了されない問題を修正#56511 @ lcwangchao
- v6.5からv7.5以降にアップグレードされたクラスターで、既存のTTLタスクが予期せず頻繁に実行される問題を修正#56539 @ lcwangchao
INSERT ... ON DUPLICATE KEY文がmysql_insert_id#55965 @ 天菜麻緒と互換性がない問題を修正- storageエンジン#56402 @ ヤンケオとしてTiKVが選択されていない場合にTTLが失敗する可能性がある問題を修正
IMPORT INTOステートメント#56476 @ D3ハンターを使用してデータをインポートした後、AUTO_INCREMENTフィールドが正しく設定されない問題を修正しました。ADD INDEX#56930 @ fzzf678を実行するときに TiDB がインデックスの長さ制限をチェックしない問題を修正しましたRECOVER TABLE BY JOB JOB_ID;実行すると TiDB がpanicを起こす可能性がある問題を修正#55113 @ crazycs520- stale read が読み取り操作のタイムスタンプを厳密に検証しない問題を修正しました。その結果、TSO と実際の物理時間#56809 @ ミョンケミンタの間にオフセットが存在する場合に、トランザクションの一貫性にわずかながら影響する可能性が生じます。
- DDL所有者ノードが#56506 @ 接線に切り替えられた後、TiDBが以前の進行状況からReorg DDLタスクを再開できない問題を修正しました。
- Distributed eXecution Framework (DXF) の監視パネルの一部のメトリックが不正確であるという問題を修正しました#57172 @ fzzf678 #56942 @ fzzf678
REORGANIZE PARTITION特定のケースでエラー理由を返さない問題を修正#56634 @ ミョンス- 大文字と小文字の区別により、
INFORMATION_SCHEMA.TABLESクエリで誤った結果が返される問題を修正#56987 @ ジョーチェン - 共通テーブル式 (CTE) に複数のデータ コンシューマーがあり、1 つのコンシューマーがデータを読み取らずに終了した場合に発生する可能性のある無効なメモリアクセスの問題を修正しました#55881 @ ウィンドトーカー
- 異常終了時に
INDEX_HASH_JOINアップする可能性がある問題を修正#54055 @ wshwsh12 NULL値#53546 @ ツジエモンを処理するときにTRUNCATEステートメントが誤った結果を返す問題を修正しましたCAST AS CHAR関数が型推論エラーにより誤った結果を返す問題を修正#56640 @ ジムララ- 型推論エラーにより一部の関数の出力で文字列が切り捨てられる問題を修正#56587 @ ジョーチェン
ADDTIME()とSUBTIME()関数の最初の引数が日付型#57569 @ xzhangxian1008の場合に誤った結果を返す問題を修正しました。- 非厳密モードで無効な
NULL値が挿入される問題を修正 (sql_mode = '') #56381 @ ジョーチェン UPDATE文がENUM型#56832 @ xheboxの値を誤って更新する問題を修正しましたtidb_low_resolution_tso変数を有効にすると、SELECT FOR UPDATEステートメント#55468 @ 天菜麻緒の実行中にリソース リークが発生する問題を修正しました。JSON_TYPE()関数がパラメータの型を検証せず、JSON 以外のデータ型が渡されたときにエラーが返されない問題を修正しました#54029 @ ヤンケオPREPAREステートメントで JSON関数を使用すると実行エラーが発生する可能性がある問題を修正しました#54044 @ ヤンケオBIT型からCHAR型にデータを変換すると TiKV パニック#56494 @ lcwangchaoが発生する可能性がある問題を修正しましたCREATE VIEWステートメントで変数またはパラメータを使用してもエラーが報告されない問題を修正#53176 @ ミョンスJSON_VALID()関数が誤った結果を返す問題を修正#56293 @ ヤンケオtidb_ttl_job_enable変数が無効になった後、TTL タスクがキャンセルされない問題を修正#57404 @ ヤンケオRANGE COLUMNSパーティション関数とutf8mb4_0900_ai_ci照合順序を同時に使用すると、クエリ結果#57261 @ 定義2014が正しくなくなる可能性がある問題を修正しました。- 改行文字で始まるプリペアドステートメントを実行することによって発生する実行時エラーを修正し、配列が範囲外になる問題定義2014修正しました#54283
UTC_TIMESTAMP()関数の精度の問題を修正しました。精度を高く設定しすぎている#56451 @ チャゲロUPDATEINSERTステートメントDELETE IGNORE@ ヤンケオで外部キーエラー#56678省略されない問題を修正information_schema.cluster_slow_queryテーブルをクエリするときに、時間フィルターが追加されていない場合、最新のスローログファイルのみがクエリされる問題を修正しました#56100 @ crazycs520- TTLテーブル#56934 @ lcwangchaoのメモリリークの問題を修正
- ステータス
write_onlyのテーブルでは外部キー制約が有効にならないため、ステータスnon-publicのテーブルを#55813 @ ヤンケオで使用できない問題を修正しました。 NATURAL JOINまたはUSING節の後にサブクエリを使用するとエラー#53766 @ ダッシュ12653が発生する可能性がある問題を修正しました- CTE に
ORDER BY、LIMIT、またはSELECT DISTINCT節が含まれており、別の CTE の再帰部分によって参照されている場合、誤ってインライン化され、実行エラー#56603 @ エルサ0520が発生する可能性がある問題を修正しました。 VIEWで定義されたCTEが誤ってインライン化される問題を修正#56582 @ エルサ0520- 外部キー#56456 @ ホーキングレイを含むテーブル構造をインポートするときに Plan Replayer がエラーを報告する可能性がある問題を修正しました。
- 配置ルール#54961 @ ホーキングレイを含むテーブル構造をインポートするときに Plan Replayer がエラーを報告する可能性がある問題を修正しました。
ANALYZE使用してテーブルの統計情報を収集するときに、テーブルに仮想生成列の式インデックスが含まれていると、実行時にエラー#57079 @ ホーキングレイが報告される問題を修正しました。DROP DATABASE文が統計#57227 @ ラスティン170506の対応する更新を正しくトリガーしない問題を修正しました- CTE でデータベース名を解析するときに間違ったデータベース名#54582 @ ホーキングレイが返される問題を修正しました
DUMP STATS統計を JSON #56083 @ ホーキングレイに変換するときにヒストグラムの上限と下限が壊れる問題を修正EXISTSサブクエリの結果が、さらに代数演算に関係する場合、MySQL #56641 @ ウィンドトーカーの結果と異なる可能性がある問題を修正しました。- エイリアス#56726 @ ホーキングレイを持つマルチテーブル
DELETEステートメントに対して実行プラン バインディングを作成できない問題を修正しました。 - 複雑な述語を単純化する際にオプティマイザが文字セットと照合順序を考慮せず、実行エラーが発生する可能性がある問題を修正しました#56479 @ ダッシュ12653
- GrafanaのStats Healthy Distributionパネルのデータが正しくない可能性がある問題を修正しました#57176 @ ホーキングレイ
- クラスター化インデックス#57627 @ ウィノロスを持つテーブルをクエリするときにベクトル検索が誤った結果を返す可能性がある問題を修正しました
TiKV
- 読み取りスレッドがRaft Engine#17383 @ リクックスサシネーターのMemTable内の古いインデックスにアクセスしたときに発生するpanic問題を修正しました。
- 多数のトランザクションが同じキーのロック解除待ち行列に入っていて、キーが頻繁に更新される場合、デッドロック検出への過度の圧力によって TiKV OOM 問題#17394 @ ミョンケミンタが発生する可能性がある問題を修正しました
- リソース制御のバックグラウンドタスクのCPU使用率が#17603 @ 栄光で2回カウントされる問題を修正
- CDC内部タスク#17696 @ 3エースショーハンドの蓄積によりTiKV OOMが発生する可能性がある問題を修正
raft-entry-max-size#17701 @ スペードA-タンと高く設定されすぎると、大規模なバッチ書き込みによってパフォーマンスジッターが発生する問題を修正しました。- リージョンを#17602 LykxSassinatorに分割した後、リーダーをすぐに選出できない問題を修正しました
RADIANS()またはDEGREES()関数を含むクエリを実行するとTiKVがpanic可能性がある問題を修正しました#17852 @ ゲンリキ- すべての休止状態の領域が#17101 @ hhwytで起動すると書き込みジッターが発生する可能性がある問題を修正しました
PD
- ホットスポット キャッシュ#8698 @ lhy1024のメモリリーク問題を修正
- リソース グループ セレクターがどのパネル#56572 @ 栄光でも有効にならない問題を修正しました
- 削除されたリソース グループが監視パネル#8716 @ アンドレ・ムーシュに引き続き表示される問題を修正しました
- リージョン同期の読み込みプロセス中の不明瞭なログの説明を修正#8717 @ lhy1024
- ラベル統計#8700 @ lhy1024のメモリリーク問題を修正
tidb_enable_tso_follower_proxyから0またはOFFを設定しても TSOFollowerプロキシ機能#8709 @ Jmポテトを無効にできない問題を修正しました
TiFlash
SUBSTRING()関数が特定の整数型に対してposとlen引数をサポートせず、クエリエラー#9473 @ ゲンリキが発生する問題を修正しました- 分散storageおよびコンピューティングアーキテクチャ#9637 @ コラフィッシュでTiFlash書き込みノードをスケールアウトした後にベクトル検索のパフォーマンスが低下する可能性がある問題を修正しました。
- 2番目のパラメータが負の#9604 @ グオシャオゲの場合に
SUBSTRING()関数が誤った結果を返す問題を修正しました - 最初のパラメータが定数#9522 @ グオシャオゲの場合に
REPLACE()関数がエラーを返す問題を修正しました LPAD()とRPAD()関数が、場合によっては誤った結果を返す問題を修正しました#9465 @ グオシャオゲ- ベクトルインデックスを作成した後、ベクトルインデックスを構築する内部タスクが予期せず中断されると、 TiFlash が破損したデータを書き込み、 #9714 @ ジェイソン・ファンを再起動できなくなる可能性がある問題を修正しました。
ツール
バックアップと復元 (BR)
- 未完了の範囲ギャップが多すぎる場合のバックアップ中の OOM 問題を修正し、事前割り当てメモリの量を減らします#53529 @ リーヴルス
- グローバルインデックスをバックアップできない問題を修正#57469 @ 定義2014
- ログに暗号化された情報#57585 @ ケニーtmが出力される問題を修正
- アドバンサーがロック競合#57134 @ 3ポイントシュートを処理できない問題を修正
k8s.io/apiライブラリバージョン#57790 @ 生まれ変わった人にアップグレードして潜在的なセキュリティ脆弱性を修正します- クラスター内に多数のテーブルがあるが、実際のデータサイズが小さい場合に PITR タスクが
Information schema is out of dateエラーを返す可能性がある問題を修正しました#57743 @ トリスタン1900 - アドバンサー所有者が#58031 @ 3ポイントシュートに切り替わったときに、ログバックアップが予期せず一時停止状態になる可能性がある問題を修正しました。
tiup br restoreコマンドがデータベースまたはテーブルの復元中にターゲット クラスタ テーブルが既に存在するかどうかのチェックを省略し、既存のテーブル#58168 @ リドリスRを上書きする可能性がある問題を修正しました。
TiCDC
- Debezium プロトコル#1799 @ wk989898を使用するときに Kafka メッセージにキーフィールドが不足する問題を修正しました
- やり直しモジュールがエラー#11744 @ チャールズ・チャン96を正しく報告できない問題を修正しました
- TiDB DDL 所有者の変更中に DDL タスクのスキーマ バージョンが非増分になったときに、TiCDC が誤って DDL タスクを破棄する問題を修正#11714 @ wlwilliamx
TiDB Lightning
パフォーマンステスト
TiDB v8.5.0 のパフォーマンスについて詳しくは、 TiDB Cloud Dedicated クラスターのパフォーマンステストレポートを参照してください。
寄稿者
TiDB コミュニティの以下の貢献者に感謝いたします。