TiDB 8.3.0 リリースノート
発売日:2024年8月22日
TiDB バージョン: 8.3.0
クイックアクセス: クイックスタート
8.3.0 では、次の主な機能と改善が導入されています。
| カテゴリ | 機能/拡張機能 | 説明 |
|---|---|---|
| スケーラビリティとパフォーマンス | パーティションテーブルのグローバルインデックス(実験的) | グローバルインデックスは、パーティション化されていない列の取得効率を効果的に向上させ、一意のキーにパーティションキーが含まれていなければならないという制約を排除します。この機能により、TiDBパーティションテーブルの利用シナリオが拡張され、データ移行に必要となる可能性のあるアプリケーションの変更作業の一部を回避できます。 |
Projection演算子のstorageエンジンへのデフォルトのプッシュダウン | Projection演算子をstorageエンジンにプッシュダウンすることで、storageノード間の負荷を分散し、ノード間のデータ転送を削減できます。この最適化により、特定のSQLクエリの実行時間が短縮され、データベース全体のパフォーマンスが向上します。 | |
| 統計を収集する際に不要な列を無視する | TiDBは、オプティマイザが必要な情報を確実に取得できるという前提のもと、統計収集を高速化し、統計の適時性を向上させ、最適な実行プランが選択されることを保証することで、クラスターのパフォーマンスを向上させます。同時に、TiDBはシステムオーバーヘッドを削減し、リソース利用率を向上させます。 | |
| 信頼性と可用性 | TiProxyに組み込まれた仮想IP管理 | TiProxyは組み込みの仮想IP管理機能を導入しています。設定により、外部プラットフォームやツールに依存せずに自動仮想IP切り替えをサポートします。この機能により、TiProxyの導入が簡素化され、データベースアクセスレイヤーの複雑さが軽減されます。 |
機能の詳細
パフォーマンス
オプティマイザは、デフォルトで
Projection演算子をstorageエンジンにプッシュダウンすることを許可します#51876 @ yibin87Projection演算子をstorageエンジンにプッシュダウンすると、コンピューティングエンジンとstorageエンジン間のデータ転送が削減され、SQL実行パフォーマンスが向上します。これは、 JSONクエリ関数またはJSON値属性関数含むクエリで特に効果的です。v8.3.0以降、TiDBはProjection演算子のプッシュダウン機能をデフォルトで有効化し、この機能を制御するシステム変数tidb_opt_projection_push_downのデフォルト値をOFFからONに変更しました。この機能が有効化されると、オプティマイザーは適切なJSONクエリ関数とJSON値属性関数を自動的にstorageエンジンにプッシュダウンします。詳細についてはドキュメント参照してください。
KV(キーバリュー)リクエスト#55206 @ ジグアンのバッチ処理戦略を最適化
TiDBはTiKVにKVリクエストを送信することでデータを取得します。KVリクエストを一括処理することで、実行パフォーマンスを大幅に向上させることができます。v8.3.0より前のTiDBのバッチ戦略は効率が低かったです。v8.3.0以降では、既存のバッチ戦略に加えて、より効率的なバッチ戦略がいくつか導入されています。1
tikv-client.batch-policy設定項目を使用して、様々なワークロードに対応するために異なるバッチ戦略を設定できます。詳細についてはドキュメント参照してください。
TiFlashは、高NDVデータ#9196 @ グオシャオゲのパフォーマンスを向上させるHashAgg集約計算モードを導入しました。
v8.3.0より前のバージョンでは、 TiFlashは、NDV(個別値の数)の高いデータを扱う場合、HashAgg集計の最初の段階で集計計算効率が低下していました。v8.3.0以降、 TiFlashは複数のHashAgg集計計算モードを導入し、さまざまなデータ特性に対する集計パフォーマンスを向上させています。必要なHashAgg集計計算モードを選択するには、システム変数
tiflash_hashagg_preaggregation_modeを設定します。詳細についてはドキュメント参照してください。
統計を収集するときに不要な列を無視する#53567 @ ハイ・ラスティン
オプティマイザが実行プランを生成する際には、フィルタ条件の列、結合キーの列、集計に使用される列など、一部の列の統計情報のみが必要です。v8.3.0以降、TiDBはSQL文で使用される列の履歴を継続的に監視します。デフォルトでは、TiDBはインデックスが設定された列と、統計収集が必要であると判断された列の統計情報のみを収集します。これにより、統計収集が高速化され、不要なリソース消費を回避できます。
クラスターをv8.3.0より前のバージョンからv8.3.0以降にアップグレードすると、TiDBはデフォルトで元の動作(つまり、すべての列の統計情報を収集する)を維持します。この機能を有効にするには、システム変数
tidb_analyze_column_options手動でPREDICATEに設定する必要があります。新規にデプロイされたクラスターでは、この機能はデフォルトで有効になっています。ランダムクエリを多数実行する分析システムでは、システム変数
tidb_analyze_column_optionsをALLに設定することで、すべての列の統計情報を収集し、ランダムクエリのパフォーマンスを確保できます。その他のシステムでは、必要な列のみの統計を収集するため、デフォルト設定(PREDICATE)のtidb_analyze_column_optionsを維持することをお勧めします。詳細についてはドキュメント参照してください。
一部のシステムテーブル#50305 @ 接線のクエリパフォーマンスを向上
以前のバージョンでは、クラスターのサイズが大きくなり、テーブル数が多すぎると、システム テーブルのクエリのパフォーマンスが低下しました。
バージョン 8.0.0 では、次の 4 つのシステム テーブルに対してクエリ パフォーマンスが最適化されています。
INFORMATION_SCHEMA.TABLESINFORMATION_SCHEMA.STATISTICSINFORMATION_SCHEMA.KEY_COLUMN_USAGEINFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
v8.3.0 では、次のシステム テーブルのクエリ パフォーマンスが最適化され、v8.2.0 と比較してパフォーマンスが数倍向上します。
INFORMATION_SCHEMA.CHECK_CONSTRAINTSINFORMATION_SCHEMA.COLUMNSINFORMATION_SCHEMA.PARTITIONSINFORMATION_SCHEMA.SCHEMATAINFORMATION_SCHEMA.SEQUENCESINFORMATION_SCHEMA.TABLE_CONSTRAINTSINFORMATION_SCHEMA.TIDB_CHECK_CONSTRAINTSINFORMATION_SCHEMA.TiDB_INDEXESINFORMATION_SCHEMA.TIDB_INDEX_USAGEINFORMATION_SCHEMA.VIEWS
パーティション式で
EXTRACT(YEAR_MONTH...)関数を使用する場合にパーティションプルーニングをサポートして、クエリパフォーマンスを向上します#54209 @ ミョンス以前のバージョンでは、パーティション式で
EXTRACT(YEAR_MONTH...)関数を使用する場合、パーティションプルーニングがサポートされず、クエリパフォーマンスが低下していました。v8.3.0以降では、パーティション式でEXTRACT(YEAR_MONTH...)関数を使用する場合でもパーティションプルーニングがサポートされ、クエリパフォーマンスが向上します。詳細についてはドキュメント参照してください。
CREATE TABLEのパフォーマンスを1.4倍、CREATE DATABASEパフォーマンスを2.1倍、ADD COLUMNパフォーマンスを#54436倍に向上させますD3ハンターTiDB v8.0.0では、バッチテーブル作成シナリオにおけるテーブル作成パフォーマンスを向上させるシステム変数
tidb_enable_fast_create_table導入されました。v8.3.0では、単一データベースで10セッションに同時にテーブル作成用のDDL文を送信した場合、v8.2.0と比較してパフォーマンスが1.4倍向上しました。v8.3.0では、バッチ実行における一般的なDDLのパフォーマンスがv8.2.0と比較して向上しています。10セッション同時実行の
CREATE DATABASEのパフォーマンスは、v8.1.0と比較して19倍、v8.2.0と比較して2.1倍向上しています。10セッションを使用して、同一データベース内の複数のテーブルに列(ADD COLUMN)をバッチで追加するパフォーマンスは、v8.1.0と比較して10倍、v8.2.0と比較して2.1倍向上しています。同一データベース内の複数のテーブルで10セッションのADD COLUMNのパフォーマンスは、v8.1.0と比較して10倍、v8.2.0と比較して2倍向上しています。詳細についてはドキュメント参照してください。
パーティションテーブルはグローバルインデックスをサポートします(実験的) #45133 @ ミョンス @ 定義2014 @ ジフハスト @ L-メープル
以前のバージョンのパーティションテーブルでは、グローバルインデックスがサポートされていないため、いくつかの制限がありました。例えば、一意キーはテーブルのパーティション式のすべての列を使用する必要があります。クエリ条件でパーティションキーが使用されていない場合、クエリはすべてのパーティションをスキャンするため、パフォーマンスが低下します。バージョン7.6.0以降では、グローバルインデックス機能を有効にするためにシステム変数
tidb_enable_global_index導入されました。ただし、この機能は当時開発中であったため、有効化することは推奨されません。バージョン8.3.0以降、グローバルインデックス機能は実験的機能としてリリースされました。パーティションテーブルにキーワード
Globalを指定してグローバルインデックスを明示的に作成することで、一意キーがテーブルのパーティション式のすべての列を使用する必要があるという制約がなくなり、柔軟なビジネスニーズに対応できます。グローバルインデックスは、パーティションキーを含まないクエリのパフォーマンスも向上させます。詳細についてはドキュメント参照してください。
信頼性
ストリーミングカーソル結果セットのサポート(実験的) #54526 @ ヤンケオ
アプリケーションコードがカーソルフェッチ使用して結果セットを取得する場合、TiDB は通常、まず結果セット全体をメモリに保存し、その後、データをバッチ処理でクライアントに返します。結果セットが大きすぎる場合、TiDB は結果を一時的にハードディスクに書き込むことがあります。
バージョン8.3.0以降、システム変数
tidb_enable_lazy_cursor_fetchをONに設定すると、TiDBはすべてのデータをTiDBノードに読み取らず、クライアントからの読み取りに応じて徐々にデータをTiDBノードに読み込みます。この機能により、TiDBが大規模な結果セットを処理する際に、TiDBノードのメモリ使用量が削減され、クラスターの安定性が向上します。詳細についてはドキュメント参照してください。
SQL実行プランバインディングの強化#55280 #55343 @ 時間と運命
OLTPシナリオでは、ほとんどのSQL文の最適な実行計画は固定されています。アプリケーション内の重要なSQL文にSQL実行計画バインディングを実装することで、実行計画が悪化する可能性を低減し、システムの安定性を向上させることができます。多数のSQL実行計画バインディングを作成するという要件を満たすため、TiDBはSQLバインディングの機能とエクスペリエンスを強化し、以下の機能を提供します。
- 単一の SQL ステートメントを使用して、複数の履歴実行プランから SQL 実行プラン バインディングを作成し、バインディングの作成効率を向上させます。
- SQL 実行プラン バインディングでは、より多くのオプティマイザ ヒントがサポートされ、複雑な実行プランの変換方法が最適化されるため、実行プランの復元時にバインディングがより安定します。
詳細についてはドキュメント参照してください。
可用性
TiProxyは組み込みの仮想IP管理#583 @ djshow832をサポートします
v8.3.0より前のバージョンでは、高可用性のためにプライマリ/セカンダリモードを使用する場合、TiProxyは仮想IPアドレスを管理するための追加コンポーネントを必要としていました。v8.3.0以降、TiProxyは組み込みの仮想IP管理をサポートします。プライマリ/セカンダリモードでは、プライマリノードがフェイルオーバーすると、新しいプライマリノードは指定された仮想IPに自動的にバインドされるため、クライアントは常に仮想IPを介して利用可能なTiProxyに接続できます。
仮想IP管理を有効にするには、TiProxy設定項目
ha.virtual-ipを使用して仮想IPアドレスを指定し、ha.interfaceを使用して仮想IPをバインドするネットワークインターフェースを指定します。これらの設定項目の両方が設定されている場合にのみ、仮想IPはTiProxyインスタンスにバインドされます。詳細についてはドキュメント参照してください。
SQL
SELECT LOCK IN SHARE MODEから排他ロック#54999 @ cfzjywxkへのアップグレードをサポートTiDB はまだ
SELECT LOCK IN SHARE MODEサポートしていません。v8.3.0 以降、TiDB はSELECT LOCK IN SHARE MODE排他ロックにアップグレードすることでSELECT LOCK IN SHARE MODEをサポートできるようになりました。この機能を有効にするかどうかは、新しいシステム変数tidb_enable_shared_lock_promotionで制御できます。詳細についてはドキュメント参照してください。
可観測性
初期統計#53564 @ ホーキングレイの読み込みの進行状況を表示します
TiDBは起動時に基本統計を読み込みます。テーブルやパーティションの数が多い場合、このプロセスに時間がかかることがあります。設定項目
force-init-statsONに設定すると、初期統計が読み込まれるまでTiDBはサービスを提供しません。この場合、サービスの開始時間を推定するには、読み込みプロセスを観察する必要があります。v8.3.0以降、TiDBは初期統計のロードの進行状況を段階的にログに出力、実行状況を把握できるようになりました。外部ツールにフォーマットされた結果を提供するために、TiDBは監視APIという変数を追加し、起動フェーズの任意の時点で初期統計のロードの進行状況を確認できるようにしました。
Security
TiDB v8.0.0ではログ編集機能が強化され、TiDBログ内のユーザーデータを
‹ ›でマークできるようになりました。マークされたログに基づいて、ログ表示時にマークされた情報を編集するかどうかを決定できるため、ログ編集の柔軟性が向上します。v8.2.0では、 TiFlashにも同様のログ編集機能が実装されています。バージョン8.3.0では、PDに同様のログ編集拡張機能が実装されています。この機能を使用するには、PD設定項目
security.redact-info-logの値を"marker"に設定してください。詳細についてはドキュメント参照してください。
TiDB v8.0.0ではログ編集機能が強化され、TiDBログ内のユーザーデータを
‹ ›でマークできるようになりました。マークされたログに基づいて、ログ表示時にマークされた情報を編集するかどうかを決定できるため、ログ編集の柔軟性が向上します。v8.2.0では、 TiFlashにも同様のログ編集機能が実装されています。バージョン8.3.0では、TiKVに同様のログ編集拡張機能が実装されています。この機能を使用するには、TiKV設定項目
security.redact-info-logの値を"marker"に設定してください。詳細についてはドキュメント参照してください。
データ移行
TiCDCは双方向レプリケーション(BDR)モードでのDDLステートメントのレプリケーションをサポートしています(GA) #10301 #48519 @ okJiang @ アズドンメン
TiCDC v7.6.0では、双方向レプリケーションが設定されたDDL文のレプリケーションが導入されました。以前は、TiCDCではDDL文の双方向レプリケーションがサポートされていなかったため、TiCDCの双方向レプリケーションを使用するユーザーは、両方のTiDBクラスタでDDL文を個別に実行する必要がありました。この機能により、クラスタに
PRIMARYBDRロールを割り当てることで、TiCDCはそのクラスタからSECONDARYのクラスタにDDL文を複製できるようになります。v8.3.0 では、この機能が一般提供 (GA) されます。
詳細についてはドキュメント参照してください。
互換性の変更
注記:
このセクションでは、v8.2.0から最新バージョン(v8.3.0)にアップグレードする際に知っておくべき互換性の変更点について説明します。v8.1.0以前のバージョンから最新バージョンにアップグレードする場合は、中間バージョンで導入された互換性の変更点も確認する必要があるかもしれません。
行動の変化
- コマンドの誤用を防ぐため、
pd-ctlプレフィックスマッチング機構をキャンセルします。例えば、store remove#8413 @ lhy1024でstore remove-tombstone呼び出すことはできません。
システム変数
| 変数名 | タイプを変更 | 説明 |
|---|---|---|
tidb_ddl_reorg_batch_size | 修正済み | SESSION スコープを追加します。 |
tidb_ddl_reorg_worker_cnt | 修正済み | SESSION スコープを追加します。 |
tidb_enable_column_tracking | 修正済み | さらにテストを行った後、デフォルト値をOFFからONに変更します。つまり、TiDB はデフォルトでPREDICATE COLUMNS収集することになります。 |
tidb_gc_concurrency | 修正済み | バージョン8.3.0以降、この変数はガベージコレクション(GC)のプロセスのステップロックを解決すると範囲を削除における同時スレッド数を制御します。バージョン8.3.0より前では、この変数はステップロックを解決するにおけるスレッド数のみを制御します。 |
tidb_low_resolution_tso | 修正済み | GLOBAL スコープを追加します。 |
tidb_opt_projection_push_down | 修正済み | GLOBALスコープを追加し、変数値をクラスターに永続化します。さらにテストを行った後、デフォルト値をOFFからONに変更します。これにより、オプティマイザーはTiKVコプロセッサにProjectionプッシュダウンできるようになります。 |
tidb_schema_cache_size | 修正済み | 値の範囲は0または[536870912, 9223372036854775807]に変更されました。キャッシュサイズが小さすぎるとパフォーマンスが低下するのを防ぐため、最小値は536870912バイト(つまり 512 MiB)です。 |
tidb_analyze_column_options | 新しく追加された | ANALYZE TABLEステートメントの動作を制御します。デフォルト値のPREDICATEに設定すると、 述語列の統計のみが収集され、 ALLに設定すると、すべての列の統計が収集されます。 |
tidb_enable_lazy_cursor_fetch | 新しく追加された | カーソルフェッチ機能の動作を制御します。 |
tidb_enable_shared_lock_promotion | 新しく追加された | 共有ロックを排他ロックにアップグレードする機能を有効にするかどうかを制御します。この変数のデフォルト値はOFFで、共有ロックを排他ロックにアップグレードする機能は無効です。 |
tiflash_hashagg_preaggregation_mode | 新しく追加された | TiFlashにプッシュダウンされる 2 段階または 3 段階の HashAgg 操作の最初の段階で使用される事前集計戦略を制御します。 |
コンフィグレーションファイルのパラメータ
| コンフィグレーションファイル | コンフィグレーションパラメータ | タイプを変更 | 説明 |
|---|---|---|---|
| ティドブ | tikv-client.batch-policy | 新しく追加された | TiDB から TiKV へのリクエストのバッチ処理戦略を制御します。 |
| PD | security.redact-info-log | 修正済み | PD設定項目の値をsecurity.redact-info-logから"marker"に設定すると"marker"ログ内の機密情報を直接シールドするのではなく、 ‹ ›でマークできます。7オプションを使用すると、編集ルールをカスタマイズできます。 |
| TiKV | security.redact-info-log | 修正済み | TiKV設定項目の値をsecurity.redact-info-logから"marker"に設定することで"marker"ログ内の機密情報を直接シールドするのではなく、 ‹ ›でマークすることができます。7オプションを使用すると、編集ルールをカスタマイズできます。 |
| TiFlash | security.redact-info-log | 修正済み | TiFlash Learner設定項目の値をsecurity.redact-info-logから"marker"に設定することで、ログ内の機密情報を直接保護するのではなく、 ‹ ›でマークできます。7 "marker"オプションを使用すると、編集ルールをカスタマイズできます。 |
| BR | --allow-pitr-from-incremental | 新しく追加された | 増分バックアップが後続のログバックアップと互換性があるかどうかを制御します。デフォルト値はtrueで、これは増分バックアップが後続のログバックアップと互換性があることを意味します。デフォルト値trueままにしておくと、増分リストアを開始する前に、再生が必要なDDLが厳密にチェックされます。 |
システムテーブル
INFORMATION_SCHEMA.PROCESSLISTとINFORMATION_SCHEMA.CLUSTER_PROCESSLISTシステムテーブルには、DMLステートメント#46889 @ lcwangchaoによって現在影響を受けている行数を示すSESSION_ALIASフィールドが追加されます。
非推奨の機能
以下の機能は、v8.3.0 以降では非推奨となります。
- v7.5.0以降、 TiDBBinlogレプリケーションは非推奨となりました。v8.3.0以降、TiDB Binlogは完全に非推奨となり、将来のリリースで削除される予定です。増分データレプリケーションの場合は、代わりにTiCDC使用してください。ポイントインタイムリカバリ(PITR)の場合は、 PITR使用してください。
- バージョン8.3.0以降、システム変数
tidb_enable_column_trackingは非推奨となりました。TiDBはデフォルトで述語列を追跡します。詳細については、tidb_analyze_column_options参照してください。
以下の機能は将来のバージョンで廃止される予定です。
- TiDB では、統計を自動収集するタスクの順序を最適化するために、優先度キューを有効にするかどうかを制御するためのシステム変数
tidb_enable_auto_analyze_priority_queueが導入されました。将来のリリースでは、統計を自動収集するタスクの順序付けは優先度キューのみになるため、このシステム変数は非推奨となります。 - TiDBはv7.5.0でシステム変数
tidb_enable_async_merge_global_statsを導入しました。この変数を使用すると、TiDBがパーティション統計情報の非同期マージを使用し、OOM問題を回避するように設定できます。将来のリリースでは、パーティション統計情報は非同期にマージされるため、このシステム変数は非推奨となります。 - 以降のリリースでは実行計画バインディングの自動進化再設計する予定であり、関連する変数と動作が変更されます。
- TiDB v8.0.0では、並列HashAggアルゴリズムのディスクスピルをサポートするかどうかを制御するシステム変数
tidb_enable_parallel_hashagg_spillが導入されました。将来のバージョンでは、システム変数tidb_enable_parallel_hashagg_spillは非推奨になります。 - TiDB Lightningパラメータ
conflict.max-record-rowsは将来のリリースで廃止される予定であり、その後削除されます。このパラメータはconflict.thresholdに置き換えられます。これは、競合レコードの最大数が、単一のインポートタスクで許容される競合レコードの最大数と一致することを意味します。
- TiDB では、統計を自動収集するタスクの順序を最適化するために、優先度キューを有効にするかどうかを制御するためのシステム変数
以下の機能は将来のバージョンで削除される予定です。
- TiDB Lightning v8.0.0以降、物理インポートモードの競合検出の古いバージョン戦略は非推奨となり、
conflict.strategy番目のパラメータを使用して論理インポートモードと物理インポートモードの両方の競合検出戦略を制御できるようになりました。旧バージョンの競合検出用のduplicate-resolutionのパラメータは、将来のリリースで削除される予定です。
- TiDB Lightning v8.0.0以降、物理インポートモードの競合検出の古いバージョン戦略は非推奨となり、
改善点
ティドブ
SELECT ... STRAIGHT_JOIN ... USING ( ... )ステートメント#54162 @ ドヴェーデンをサポート((idx_col_1 > 1) or (idx_col_1 = 1 and idx_col_2 > 10)) and ((idx_col_1 < 10) or (idx_col_1 = 10 and idx_col_2 < 20))#54337 @ ガザルファミリーUSAのようなフィルタ条件に対してより正確なインデックスアクセス範囲を構築するWHERE idx_col_1 IS NULL ORDER BY idx_col_2#54188 @ アリエのようなSQLクエリの余分なソート操作を避けるためにインデックス順序を使用します。mysql.analyze_jobsシステムテーブル#53567 @ ハイ・ラスティンの分析されたインデックスを表示します。EXPLAINステートメントの出力にtidb_redact_log設定を適用し、ログ#54565 @ ホーキングレイの処理ロジックをさらに最適化することをサポート- クエリ効率を向上させるために、多値インデックスの
IndexRangeScanでSelection演算子を生成することをサポート#54876 @ 時間と運命 - 設定された時間枠外で実行されているタスク
ANALYZEを自動的に強制終了する機能をサポート#55283 @ ホーキングレイ - 統計情報がすべて TopN で構成され、対応するテーブル統計の変更された行数が 0 以外である場合に、TopN にヒットしない等価条件の推定結果を 0 から 1 に調整します#47400 @ テリー・パーセル
- TopN演算子はディスクスピル#47733 @ xzhangxian1008をサポートします
- TiDBノードは、
WITH ROLLUP修飾子とGROUPING関数#42631 @ アリーナルクスを使用したクエリの実行をサポートしています。 - システム変数
tidb_low_resolution_tsoGLOBALスコープ#55022 @ cfzjywxkをサポートします - 同時実行範囲削除をサポートすることで、GC(ガベージコレクション)の効率を向上します。同時実行スレッド数は
tidb_gc_concurrency#54570 @ エキシウムで制御できます。 - バルクDML実行モードのパフォーマンスを向上させる(
tidb_dml_type = "bulk") #50215 @ エキシウム - スキーマ情報キャッシュ関連インターフェース
SchemaByID#54074 @ ywqzzyのパフォーマンスを向上 - スキーマ情報キャッシュが有効な場合の特定のシステムテーブルのクエリパフォーマンスを向上#50305 @ 接線
- 一意のインデックス#53004 @ ランス6716を追加するときに競合するキーのエラーメッセージを最適化します
PD
- リーダーの排除プロセスを加速するために、
pd-ctlを介してevict-leader-schedulerのbatch構成を変更することをサポートします#8265 @ rleungx - Grafanaの「クラスタ> ラベル配布パネル」に
store_id監視メトリックを追加して、異なるラベル#8337 @ HuSharpに対応するストアIDを表示します。 - 指定されたリソース グループが存在しない場合に、デフォルトのリソース グループへのフォールバックをサポートします#8388 @ Jmポテト
pd-ctl#8412 @ 沢民州のregionコマンドによって出力されるリージョン情報にapproximate_kv_sizeフィールドを追加します。- PD APIを呼び出してTTL構成#8450 @ lhy1024を削除するときに返されるメッセージを最適化します
- 大規模なクエリ読み取り要求の RU 消費動作を最適化して、他の要求への影響を軽減します#8457 @ ノルーシュ
- PDマイクロサービス#52912 @ rleungxの設定ミス時に返されるエラーメッセージを最適化します
- PDマイクロサービスに
--nameスタートアップパラメータを追加して、デプロイメント中にサービス名をより正確に表示します#7995 @ HuSharp - 領域の数に基づいて
PatrolRegionScanLimit動的に調整して、リージョンスキャン時間を短縮する#7963 @ lhy1024をサポートします。
- リーダーの排除プロセスを加速するために、
TiKV
TiFlash
ツール
バックアップと復元 (BR)
- ポイントインタイムリカバリ(PITR)を初めて開始する前に、フルバックアップが存在するかどうかの確認をサポートします。フルバックアップが見つからない場合、 BRは復元を終了し、エラー#54418 @ リーヴルスを返します。
- スナップショットバックアップを復元する前に、TiKVおよびTiFlashのディスク容量が十分かどうかのチェックをサポートします。容量が不足している場合、 BRは復元を終了し、エラー#54316 @ リドリスRを返します。
- TiKVが各SSTファイルをダウンロードする前に、TiKVのディスク容量が十分かどうかのチェックをサポートします。容量が不足している場合、 BRは復元を終了し、エラー#17224 @ リドリスRを返します。
- 環境変数#45551 @ リドリスRを介した Alibaba Cloud アクセス資格情報の設定をサポート
- バックアップとリストアにBRを使用するときに OOM を回避するために、 BRプロセスの使用可能なメモリに基づいて環境変数
GOMEMLIMIT自動的に設定します#53777 @ リーヴルス - 増分バックアップをポイントインタイムリカバリ(PITR) #54474 @ 3ポイントシュートと互換性のあるものにする
mysql.column_stats_usageテーブル#53567 @ ハイ・ラスティンのバックアップと復元をサポート
バグ修正
ティドブ
PipelinedWindowのOpenメソッドのパラメータをリセットして、PipelinedWindowがApplyの子ノードとして使用されたときに発生する予期しないエラーを修正します。これは#53600 @ 徐淮嶼の繰り返し操作による以前のパラメータ値の再利用が原因です。- メモリ使用量が
tidb_mem_quota_query#55042 @ yibin87で設定された制限を超えたためにクエリが終了したときに停止する可能性がある問題を修正しました - HashAgg 演算子のディスク スピルにより並列計算#55290 @ xzhangxian1008中に誤ったクエリ結果が発生する問題を修正しました。
YEARJSON 形式#54494 @ ヤンケオにキャストするときに間違ったJSON_TYPEが発生する問題を修正tidb_schema_cache_sizeシステム変数の値の範囲が間違っている問題を修正#54034 @ リーリンハイ- パーティション式が
EXTRACT(YEAR FROM col)#54210 @ ミョンスの場合にパーティションプルーニングが機能しない問題を修正しました - データベースに多くのテーブルが存在する場合に
FLASHBACK DATABASE失敗する問題を修正#54415 @ ランス6716 - 多数のデータベース#54915 @ ランス6716を処理するときに
FLASHBACK DATABASE無限ループに入る問題を修正 - インデックス加速モードでのインデックスの追加が失敗する可能性がある問題を修正#54568 @ ランス6716
ADMIN CANCEL DDL JOBSにより DDL が失敗する可能性がある問題を修正#54687 @ ランス6716- DMから複製されたテーブルのインデックスの長さが
max-index-length#55138 @ ランス6716で指定された最大長を超えるとテーブル複製が失敗する問題を修正しました tidb_enable_inl_join_inner_multi_pattern有効になっている状態で SQL 文を実行するとエラーruntime error: index out of rangeが発生する可能性がある問題を修正しました#54535 @ ジョーチェン- 統計#54589 @ 天菜麻緒の初期化プロセス中にControl + Cを使用してTiDBを終了できない問題を修正しました
INL_MERGE_JOINオプティマイザヒントが誤った結果を返す問題を修正しました#54064 @ アイリンキッドを廃止しました。WITH ROLLUPを含む相関サブクエリによって TiDB がpanicを起こし、エラーruntime error: index out of range#54983 @ アイリンキッドを返す可能性がある問題を修正しました。- SQLクエリのフィルタ条件に仮想列が含まれており、実行条件に
UnionScan#54870 @ qw4990が含まれている場合に述語を適切にプッシュダウンできない問題を修正しました。 tidb_enable_inl_join_inner_multi_pattern有効になっている状態で SQL 文を実行するとエラーruntime error: invalid memory address or nil pointer dereferenceが発生する可能性がある問題を修正しました#55169 @ ホーキングレイUNIONを含むクエリステートメントが誤った結果#52985 @ 徐淮嶼を返す可能性がある問題を修正しましたmysql.stats_histograms表のtot_col_size番目の列が負の数#55126 @ qw4990になる可能性がある問題を修正しましたcolumnEvaluator入力チャンク内の列参照を識別できず、SQL 文#53713 @ アイリンキッドを実行するとruntime error: index out of rangeが発生する問題を修正しました。STATS_EXTENDED予約キーワード#39573 @ wddevriesになる問題を修正tidb_low_resolution有効になっている場合、select for update#54684 @ cfzjywxk実行できる問題を修正しましたtidb_redact_log有効になっている場合、内部 SQL クエリがスロークエリログに表示されない問題を修正#54190 @ lcwangchao- トランザクションで使用されるメモリが複数回追跡される可能性がある問題を修正#53984 @ エキシウム
SHOW WARNINGS;使用して警告を取得するとpanic#48756 @ xheboxが発生する可能性がある問題を修正しました- インデックス統計の読み込み時にメモリリークが発生する可能性がある問題を修正#54022 @ ハイ・ラスティン
- 照合順序が
utf8_binまたはutf8mb4_bin#53730 @ エルサ0520の場合にLENGTH()条件が予期せず削除される問題を修正しました - 重複する主キー#47539 @ 定義2014に遭遇したときに統計収集で
stats_historyテーブルが更新されない問題を修正しました - 再帰CTEクエリが無効なポインタ#54449 @ ホーキングレイを生成する可能性がある問題を修正しました
- ハンドシェイクが完了する前に一部の接続が終了した場合に、Grafana の接続数監視メトリックが正しくない問題を修正しました#54428 @ ヤンケオ
- TiProxy とリソース グループ#54545 @ ヤンケオを使用するときに、各リソース グループの接続数が正しくない問題を修正しました。
- クエリに非相関サブクエリと
LIMIT句が含まれている場合、列のプルーニングが不完全になり、最適でないプラン#54213 @ qw4990になる可能性がある問題を修正しました。 SELECT ... FOR UPDATE#54652 @ qw4990の間違ったポイント取得プランを再利用する問題を修正しました- 最初の引数が
monthで、2番目の引数が負の#54908 @ xzhangxian1008場合にTIMESTAMPADD()関数が無限ループに入る問題を修正しました。 - スローログ内の内部SQL文がデフォルトでnullに編集される問題を修正#54190 #52743 #53264 @ lcwangchao
_tidb_rowidのPointGet実行プランが#54583 @ 定義2014で生成できる問題を修正- v7.1 #54241 @ 接線からアップグレードした後に
SHOW IMPORT JOBSエラーUnknown column 'summary'を報告する問題を修正しました - ビュー定義#54343 @ ランス6716でサブクエリが列定義として使用されている場合、
information_schema.columnsを使用して列情報を取得すると警告1356が返される問題を修正しました。 - 厳密に自己増分ではないRANGEパーティションテーブルが#54829 @ 定義2014で作成できる問題を修正
- SQLが異常に中断されたときに
INDEX_HASH_JOIN正常に終了できない問題を修正#54688 @ wshwsh12 - 分散実行フレームワーク (DXF) を使用してインデックスを追加する際のネットワーク パーティションによって、データ インデックス#54897 @ 接線の不整合が発生する可能性がある問題を修正しました。
PD
- ロールをリソースグループ#54417 @ Jmポテトにバインドするときにエラーが報告されない問題を修正しました
- 500 ミリ秒を超えるトークンをリクエストするとリソース グループがクォータ制限に達する問題を修正#8349 @ ノルーシュ
INFORMATION_SCHEMA.RUNAWAY_WATCHESテーブルの時間データ型が正しくない問題を修正#54770 @ HuSharp- 同時実行性が高い場合にリソース グループがリソース使用量を効果的に制限できない問題を修正#8435 @ ノルーシュ
- テーブル属性#55188 @ Jmポテトを取得するときに誤った PD API が呼び出される問題を修正しました
schedulingマイクロサービスが#8331 @ rleungxで有効化された後にスケーリングの進行状況が正しく表示されない問題を修正しました- 暗号化マネージャーが使用前に初期化されない問題を修正#8384 @ rleungx
- 一部のログが編集されない問題を修正#8419 @ rleungx
- PDマイクロサービス#8406 @ HuSharpの起動中にリダイレクトがpanicになる可能性がある問題を修正しました
split-merge-interval構成項目の値を繰り返し変更すると(1sから1hに変更して1sに戻すなど)、その設定項目が有効にならない可能性がある問題を修正しました#8404 @ lhy1024replication.strictly-match-labelからtrueに設定するとTiFlash が#8480 @ rleungxで起動しなくなる問題を修正- 大規模なパーティションテーブルrleungx分析するときにTSOの取得が遅くなり、パフォーマンスの低下が
ANALYZE発生する問題を修正しました#8500 - 大規模クラスタにおける潜在的なデータ競合を修正#8386 @ rleungx
- クエリがランナウェイ クエリであるかどうかを判断するときに、TiDB はコプロセッサー側で費やされた時間消費のみをカウントし、TiDB 側で費やされた時間消費をカウントしないため、一部のクエリがランナウェイ クエリ#51325 @ HuSharpとして識別されない問題を修正しました。
TiFlash
CAST()関数を使用して文字列をタイムゾーンまたは無効な文字を含む日付時刻に変換すると、結果が正しくなくなる問題を修正しました#8754 @ ソロツグ- データベース#9132 @ ジェイソン・ファンにまたがる空のパーティションを持つパーティションテーブルで
RENAME TABLE ... TO ...実行した後にTiFlash がpanic可能性がある問題を修正しました。 - 遅延マテリアライゼーションが有効になった後に、一部のクエリで列タイプの不一致エラーが報告される可能性がある問題を修正#9175 @ ジンヘリン
- 遅延マテリアライゼーションが有効になった後、仮想生成列を含むクエリが誤った結果を返す可能性がある問題を修正#9188 @ ジンヘリン
- TiFlashで SSL 証明書の構成を空の文字列に設定すると、誤って TLS が有効になり、 TiFlash が起動しなくなる問題を修正しました#9235 @ ジェイソン・ファン
- データベースが作成直後に削除されるとTiFlash がpanic可能性がある問題を修正#9266 @ ジェイソン・ファン
- TiFlashとPD間のネットワークパーティション(ネットワーク切断)により、読み取り要求タイムアウトエラー#9243 @ ロイド・ポティガーが発生する可能性がある問題を修正しました。
- 分散storageおよびコンピューティングアーキテクチャ#9282 @ ジェイソン・ファンでTiFlash書き込みノードが再起動に失敗する可能性がある問題を修正しました
- 分散storageおよびコンピューティングアーキテクチャ#9298 @ ジンヘリンで、 TiFlash書き込みノードの読み取りスナップショットがタイムリーにリリースされない問題を修正しました。
TiKV
- 古い領域をクリーンアップすると、有効なデータ#17258 @ ヒビシェンが誤って削除される可能性がある問題を修正しました
- Grafana #15990 @ コナー1996の TiKV ダッシュボードで
Ingestion picked levelとCompaction Job Size(files)誤って表示される問題を修正しました cancel_generating_snap誤って更新するとsnap_tried_cntが TiKV でpanicになる問題を修正#17226 @ ヒビシェンIngest SST duration secondsの情報が間違っている問題を修正#17239 @ LykxSassinator- エラー発生時にCPUプロファイリングフラグが正しくリセットされない問題を修正#17234 @ コナー1996
- ブルームフィルタが以前のバージョン(v7.1より前)とそれ以降のバージョン#17272 @ v01dスターの間で互換性がない問題を修正しました
ツール
バックアップと復元 (BR)
TiCDC
TiDB データ移行 (DM)
TiDB Lightning
寄稿者
TiDB コミュニティの以下の貢献者に感謝いたします。