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

TiDB 8.3.0 リリースノート



リリース日:2024年8月22日

TiDBバージョン:8.3.0

クイックアクセス: クイックスタート

バージョン8.3.0では、以下の主要な機能と改善点が導入されています。

カテゴリ機能/改善点説明
拡張性とパフォーマンスパーティションテーブルのグローバルインデックス(実験的)グローバルインデックスを使用すると、パーティション化されていない列の取得効率を効果的に向上させることができ、一意キーにパーティションキーを含める必要があるという制約を取り除くことができます。この機能により、TiDBパーティションテーブルの使用シナリオが拡張され、データ移行時に必要となる可能性のあるアプリケーションの変更作業の一部を回避できます。
ProjectionオペレーターをストレージエンジンにデフォルトでプッシュダウンするProjectionオペレーターをストレージエンジンにプッシュダウンすることで、ストレージノード全体に負荷を分散させ、ノード間のデータ転送量を削減できます。この最適化により、特定のSQLクエリの実行時間が短縮され、データベース全体のパフォーマンスが向上します。
統計情報を収集する際に不要な列を無視するオプティマイザが必要な情報を確実に取得できるという前提のもと、TiDBは統計情報の収集を高速化し、統計情報の適時性を向上させることで、最適な実行計画の選択を保証し、クラスタのパフォーマンスを向上させます。同時に、TiDBはシステムオーバーヘッドを削減し、リソース利用率も向上させます。
信頼性と可用性TiProxyに組み込まれた仮想IP管理機能TiProxyは、仮想IP管理機能を内蔵しています。設定することで、外部プラットフォームやツールに依存することなく、仮想IPの自動切り替えをサポートします。この機能により、TiProxyの導入が簡素化され、データベースアクセスレイヤーの複雑さが軽減されます。

機能の詳細

パフォーマンス

  • オプティマイザはProjectionオペレーターをデフォルトでストレージエンジンにプッシュダウンすることを可能にします #51876 @yibin87

    Projectionオペレーターをストレージエンジンにプッシュダウンすると、計算エンジンとストレージエンジン間のデータ転送が削減され、SQL 実行パフォーマンスが向上します。これはJSONクエリ関数またはJSON値属性関数を含むクエリに特に効果的です。v8.3.0 以降、TiDB は、この機能を制御するシステム変数tidb_opt_projection_push_downのデフォルト値をOFFからONに変更し、プッシュダウン機能をデフォルトで有効にします。この機能が有効になると、オプティマイザは、対象となる JSON クエリ関数と JSON 値属性関数を自動的にストレージエンジンにプッシュダウンします。

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

  • キーバリュー(KV)リクエストのバッチ処理戦略を最適化する #55206 @zyguan

    TiDB は、TiKV に KV リクエストを送信することでデータを取得します。KV リクエストをバッチ処理することで、実行パフォーマンスを大幅に向上させることができます。v8.3.0 より前のバージョンでは、TiDB のバッチ処理戦略は効率が劣っていました。v8.3.0 以降では、既存の戦略に加えて、より効率的なバッチ処理戦略がいくつか導入されています。さまざまなワークロードに対応するため、 tikv-client.batch-policy設定項目を使用して、異なるバッチ処理戦略を設定できます。

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

  • TiFlash は、高 NDV データのパフォーマンスを向上させるために HashAgg 集計計算モードを導入 #9196 @guo-shaoge

    バージョン8.3.0より前のTiFlashでは、NDV(一意の値の数)が多いデータを扱う場合、HashAgg集計の最初の段階で集計計算効率が低いという問題がありました。バージョン8.3.0以降、 TiFlashは複数のHashAgg集計計算モードを導入し、さまざまなデータ特性に対応した集計パフォーマンスを向上させています。目的のHashAgg集計計算モードを選択するには、システム変数tiflash_hashagg_preaggregation_modeを設定してください。

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

  • 統計を収集するときに不要な列を無視する #53567 @hi-rustin

    オプティマイザが実行計画を生成する際、フィルタ条件の列、結合キーの列、集計に使用される列など、一部の列の統計情報のみが必要となります。TiDBはv8.3.0以降、SQL文で使用される列の履歴レコードを継続的に監視します。デフォルトでは、TiDBはインデックスを持つ列と、統計情報の収集が必要であると判断された列の統計情報のみを収集します。これにより、統計情報の収集が高速化され、不要なリソース消費が回避されます。

    クラスターをv8.3.0より前のバージョンからv8.3.0以降にアップグレードすると、TiDBはデフォルトで元の動作、つまりすべての列の統計情報を収集する動作を維持します。この機能を有効にするには、システム変数tidb_analyze_column_optionsをPREDICATEに手動で設定する必要があります。新しくデプロイされたクラスターでは、この機能はデフォルトで有効になっています。

    ランダムクエリを多数実行する分析システムの場合、ランダムクエリのパフォーマンスを確保するために、システム変数tidb_analyze_column_optionsをALLに設定して、すべての列の統計情報を収集することができます。その他のタイプのシステムでは、 tidb_analyze_column_optionsのデフォルト設定(PREDICATE)を維持して、必要な列のみの統計情報を収集することをお勧めします。

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

  • 一部のシステムテーブルのクエリパフォーマンスを改善 #50305 @tangenta

    以前のバージョンでは、クラスタサイズが大きくなり、テーブル数が多くなると、システムテーブルへのクエリのパフォーマンスが低下していました。

    バージョン8.0.0では、以下の4つのシステムテーブルについてクエリパフォーマンスが最適化されています。

    • INFORMATION_SCHEMA.TABLES

    • INFORMATION_SCHEMA.STATISTICS

    • INFORMATION_SCHEMA.KEY_COLUMN_USAGE

    • INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS

      バージョン8.3.0では、以下のシステムテーブルについてクエリのパフォーマンスが最適化され、バージョン8.2.0と比較してパフォーマンスが大幅に向上しています。

    • INFORMATION_SCHEMA.CHECK_CONSTRAINTS

    • INFORMATION_SCHEMA.COLUMNS

    • INFORMATION_SCHEMA.PARTITIONS

    • INFORMATION_SCHEMA.SCHEMATA

    • INFORMATION_SCHEMA.SEQUENCES

    • INFORMATION_SCHEMA.TABLE_CONSTRAINTS

    • INFORMATION_SCHEMA.TIDB_CHECK_CONSTRAINTS

    • INFORMATION_SCHEMA.TiDB_INDEXES

    • INFORMATION_SCHEMA.TIDB_INDEX_USAGE

    • INFORMATION_SCHEMA.VIEWS

  • パーティション式でEXTRACT(YEAR_MONTH...)関数を使用する場合にパーティションプルーニングをサポートしてクエリのパフォーマンスを向上させる #54209 @mjonss

    以前のバージョンでは、パーティション式でEXTRACT(YEAR_MONTH...)関数を使用する場合、パーティションプルーニングがサポートされておらず、クエリのパフォーマンスが低下していました。v8.3.0 以降では、パーティション式でEXTRACT(YEAR_MONTH...)関数を使用する場合にパーティションプルーニングがサポートされ、クエリのパフォーマンスが向上します。

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

  • CREATE TABLEのパフォーマンスを 1.4 倍、 CREATE DATABASEのパフォーマンスを 2.1 倍、 ADD COLUMNを 2 倍向上させます #54436 @D3Hunter

    TiDB v8.0.0では、バッチテーブル作成シナリオにおけるテーブル作成パフォーマンスを向上させるため、システム変数tidb_enable_fast_create_tableが導入されました。v8.3.0では、単一データベース内で10セッションにわたってテーブル作成用のDDL文を同時に送信した場合、v8.2.0と比較してパフォーマンスが1.4倍向上しています。

    v8.3.0 では、v8.2.0 と比較して、バッチ実行における一般的な DDL のパフォーマンスが向上しました。10 セッションを同時に実行した場合のCREATE DATABASEのパフォーマンスは、v8.1.0 と比較して 19 倍、v8.2.0 と比較して 2.1 倍向上しました。同じデータベース内の複数のテーブルに列 ( ADD COLUMN ) をバッチで追加するために 10 セッションを使用した場合のパフォーマンスは、v8.1.0 と比較して 10 倍、v8.2.0 と比較して 2.1 倍向上しました。同じデータベース内の複数のテーブルで 10 セッションを使用したADD COLUMNのパフォーマンスは、v8.1.0 と比較して 10 倍、v8.2.0 と比較して 2 倍向上しました。

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

  • パーティションテーブルはグローバルインデックスをサポートします (実験的) #45133 @mjonss@Defined2014 @jiyfhust@L-maple

    以前のバージョンのパーティションテーブルでは、グローバルインデックスがサポートされていないため、いくつかの制限がありました。たとえば、一意キーはテーブルのパーティション式内のすべての列を使用する必要があります。クエリ条件でパーティションキーを使用しない場合、クエリはすべてのパーティションをスキャンするため、パフォーマンスが低下します。v7.6.0以降では、グローバルインデックス機能を有効にするためにシステム変数tidb_enable_global_indexが導入されました。ただし、この機能は当時開発中であったため、有効にすることは推奨されません。

    バージョン8.3.0以降、グローバルインデックス機能は実験的機能としてリリースされました。キーワードGlobalを使用してパーティションテーブルのグローバルインデックスを明示的に作成することで、一意キーがテーブルのパーティション式内のすべての列を使用する必要があるという制約を取り除き、柔軟なビジネスニーズに対応できます。グローバルインデックスは、パーティションキーを含まないクエリのパフォーマンスも向上させます。

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

信頼性

  • ストリーミングカーソル結果セットのサポート(実験的) #54526 @YangKeao

    アプリケーションコードがカーソルフェッチを使用して結果セットを取得する場合、TiDBは通常、まず結果セット全体をメモリに格納し、その後データをバッチ処理でクライアントに返します。結果セットが大きすぎる場合は、TiDBは一時的に結果をハードディスクに書き込むことがあります。

    バージョン8.3.0以降では、システム変数tidb_enable_lazy_cursor_fetchをONに設定すると、TiDBはすべてのデータをTiDBノードに読み込むのではなく、クライアントが読み込むにつれて徐々にデータをTiDBノードに読み込むようになります。TiDBが大規模な結果セットを処理する場合、この機能によりTiDBノードのメモリ使用量が削減され、クラスタの安定性が向上します。

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

  • SQL 実行計画のバインディングを強化#55280 #55343 @time-and-fate

    OLTPシナリオでは、ほとんどのSQL文の最適な実行計画は固定されています。アプリケーション内の重要なSQL文に対してSQL実行プランバインディングを実装することで、実行計画が悪化する可能性を低減し、システムの安定性を向上させることができます。多数のSQL実行プランバインディングを作成するという要件を満たすために、TiDBはSQLバインディングの機能とエクスペリエンスを強化しており、具体的には以下の機能が含まれています。

    • 単一のSQL文を使用して、複数の過去の実行計画からSQL実行プランバインディングを作成することで、バインディング作成の効率を向上させます。

    • SQL実行プランバインディングは、より多くのオプティマイザヒントをサポートし、複雑な実行計画の変換方法を最適化することで、実行計画の復元におけるバインディングの安定性を向上させます。

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

可用性

  • TiProxyは仮想IP管理機能を内蔵しています #583 @djshow832

    バージョン8.3.0より前は、高可用性を実現するためにプライマリ/セカンダリモードを使用する場合、TiProxyは仮想IPアドレスを管理するための追加コンポーネントを必要としていました。バージョン8.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 @hawkingrei

    TiDB は起動時に基本統計情報をロードします。テーブルやパーティションが多いシナリオでは、この処理に時間がかかる場合があります。設定項目force-init-statsがONに設定されている場合、TiDB は初期統計情報がロードされるまでサービスを提供しません。この場合、ロード処理を監視してサービスの開始時刻を推定する必要があります。

    バージョン8.3.0以降、TiDBは初期統計情報の読み込み状況を段階的にログに出力するようになり、実行状況を把握しやすくなりました。外部ツールにフォーマット済みの結果を提供するために、TiDBは監視APIを追加しました。これにより、起動フェーズ中の任意の時点で初期統計情報の読み込み状況を取得できます。

  • リクエストユニット(RU)設定に関するメトリクスを追加 #8444 @nolouch

セキュリティ

  • PDログの秘匿化機能強化 #8305 @JmPotato

    TiDB v8.0.0 では、ログのマスキング機能が強化され、TiDB ログ内のユーザーデータを‹ ›でマークできるようになりました。マークされたログに基づいて、ログを表示する際にマークされた情報をマスキングするかどうかを決定できるため、ログのマスキングの柔軟性が向上します。v8.2.0 では、 TiFlashも同様のログマスキング機能強化を実装しています。

    バージョン8.3.0では、PDは同様のログの秘匿化機能強化を実装しています。この機能を使用するには、PD設定項目security.redact-info-logの値を"marker"に設定します。

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

  • TiKV ログの秘匿化の強化 #17206 @LykxSassinator

    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 @asddongmen

    TiCDC v7.6.0 では、双方向レプリケーションが構成された DDL文のレプリケーションが導入されました。以前は、TiCDC は DDL文の双方向レプリケーションをサポートしていなかったため、TiCDC の双方向レプリケーションを使用するユーザーは、両方の TiDB クラスタで DDL文を個別に実行する必要がありました。この機能により、クラスタにPRIMARY BDR ロールを割り当てると、TiCDC はそのクラスタからSECONDARYクラスタに DDL文をレプリケートできます。

    バージョン8.3.0では、この機能が一般提供(GA)されます。

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

互換性の変更

動作の変更

  • コマンドの誤用を防ぐため、 pd-ctlはプレフィックスマッチングメカニズムを無効にします。たとえば、 store remove-tombstoneはstore removeを介して呼び出すことはできません。 #8413 @lhy1024

システム変数

変数名変更の種類説明
tidb_ddl_reorg_batch_size変更SESSIONスコープを追加します。
tidb_ddl_reorg_worker_cnt変更SESSIONスコープを追加します。
tidb_enable_column_tracking変更さらなるテストの結果、デフォルト値がOFFからONに変更されます。これは、TiDB がデフォルトでPREDICATE COLUMNSを収集することを意味します。
tidb_gc_concurrency変更v8.3.0 以降、この変数はガベージコレクション(GC)プロセスのロックを解決するステップと範囲を削除ステップ中の同時スレッドの数を制御します。 v8.3.0 より前では、この変数はロックを解決するステップ中のスレッド数のみを制御します。
tidb_low_resolution_tso変更GLOBAL スコープを追加します。
tidb_opt_projection_push_down変更GLOBAL スコープを追加し、変数の値をクラスタに永続化します。さらにテストを行った結果、デフォルト値をOFFからONに変更します。これは、オプティマイザがProjectionを TiKV コプロセッサにプッシュダウンできることを意味します。
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操作の最初の段階で使用される事前集計戦略を制御します。

設定ファイルパラメータ

設定ファイル設定パラメータ変更の種類説明
TiDBtikv-client.batch-policy新しく追加されたTiDBからTiKVへのリクエストのバッチ処理戦略を制御します。
PDsecurity.redact-info-log変更PD設定項目security.redact-info-logの値を"marker"に設定することで、ログ内の機密情報を直接シールドする代わりに‹ ›でマークできます。 "marker"オプションを使用すると、マスキングルールをカスタマイズできます。
TiKVsecurity.redact-info-log変更TiKV 設定項目security.redact-info-logの値を"marker"に設定することで、ログ内の機密情報を直接シールドする代わりに‹ ›でマークできます。 "marker"オプションを使用すると、マスキングルールをカスタマイズできます。
TiFlashsecurity.redact-info-log変更TiFlash Learnerの設定項目security.redact-info-logの値を"marker"に設定することで、ログ内の機密情報を直接シールドする代わりに‹ ›でマークすることができます。 "marker"オプションを使用すると、マスキングルールをカスタマイズできます。
BR--allow-pitr-from-incremental新しく追加された増分バックアップが後続のログバックアップと互換性があるかどうかを制御します。デフォルト値はtrueで、これは増分バックアップが後続のログバックアップと互換性があることを意味します。デフォルト値trueのままにすると、増分リストアが開始される前に、再生が必要な DDL が厳密にチェックされます。

システムテーブル

非推奨機能

  • バージョン8.3.0以降、以下の機能は非推奨となります。

    • バージョン 7.5.0 以降、 TiDB Binlogレプリケーションは非推奨となりました。バージョン 8.3.0 以降、TiDB Binlog は完全に非推奨となり、今後のリリースで削除される予定です。増分データレプリケーションには、代わりにTiCDCを使用してください。ポイントインタイムリカバリ(PITR) には、 PITRを使用してください。
    • バージョン8.3.0以降、 tidb_enable_column_trackingシステム変数は非推奨となりました。TiDBはデフォルトで述語列を追跡します。詳細については、 tidb_analyze_column_optionsを参照してください。
    • バージョン8.3.0以降、INL_MERGE_JOINオプティマイザヒントは非推奨となり、誤った結果を返す可能性があるため、効果がなくなりました。クエリでこのヒントを指定した場合、TiDB はこれを無視して別の結合アルゴリズムを選択します。 #54064 @AilinKid
  • 以下の機能は、将来のバージョンで廃止される予定です。

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

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

改善点

  • TiDB

    • SELECT ... STRAIGHT_JOIN ... USING ( ... ) ステートメントをサポートします #54162 @dveeden
    • ((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 @ghazalfamilyusa
    • インデックス順序を使用して、 WHERE idx_col_1 IS NULL ORDER BY idx_col_2のような SQL クエリの余分なソート操作を回避します #54188 @ari-e
    • mysql.analyze_jobsシステムテーブルに分析済みインデックスを表示します #53567 @hi-rustin
    • EXPLAINステートメントの出力にtidb_redact_log設定を適用することをサポートし、ログ処理ロジックをさらに最適化します #54565 @hawkingrei
    • クエリ効率を向上させるため、多値インデックスに対してIndexRangeScan上でSelectionオペレーターを生成することをサポート #54876 @time-and-fate
    • 設定された時間枠外で実行されている自動タスクANALYZEの強制終了をサポート #55283 @hawkingrei
    • 統計情報が完全に TopN で構成され、対応するテーブル統計情報の変更された行数がゼロでない場合、TopN に到達しない等価条件の推定結果を 0 から 1 に調整します。 #47400 @terry1purcell
    • TopNオペレーターはディスクスピルをサポートします #47733 @xzhangxian1008
    • TiDB ノードはWITH ROLLUP修飾子とGROUPING関数を使用したクエリの実行をサポートしています #42631 @Arenatlx
    • システム変数tidb_low_resolution_tsoはGLOBALスコープをサポートしています #55022 @cfzjywxk
    • 同時範囲削除をサポートすることで、GC(ガベージコレクション)の効率を向上させます。同時実行スレッド数は、 tidb_gc_concurrencyを使用して制御できます #54570 @ekexium
    • 一括DML実行モードのパフォーマンスを改善( tidb_dml_type = "bulk" ) #50215 @ekexium
    • スキーマ情報キャッシュ関連のインターフェースSchemaByIDのパフォーマンスを改善 #54074 @ywqzzy
    • スキーマ情報キャッシュが有効になっている場合、特定のシステムテーブルのクエリパフォーマンスを改善します #50305 @tangenta
    • 一意インデックスを追加する際の競合キーに関するエラーメッセージを最適化 #53004 @lance6716
  • PD

    • pd-ctlを介してevict-leader-schedulerのbatch構成を変更してリーダー退去プロセスを加速するサポート #8265 @rleungx
    • Grafana のCluster > Label distributionパネルにstore_idモニタリングメトリックを追加して、異なるラベルに対応するストア ID を表示します #8337 @HuSharp
    • 指定されたリソースグループが存在しない場合、デフォルトのリソースグループへのフォールバックをサポートする #8388 @JmPotato
    • pd-ctlのregionコマンドが出力するリージョン情報にapproximate_kv_sizeフィールドを追加します。 #8412 @zeminzhou
    • PD APIを呼び出してTTL設定を削除したときに返されるメッセージを最適化します #8450 @lhy1024
    • 大規模クエリ読み取りリクエストのRU消費動作を最適化し、他のリクエストへの影響を軽減する #8457 @nolouch
    • PDマイクロサービスの設定ミス時に返されるエラーメッセージを最適化する #52912 @rleungx
    • PDマイクロサービスに--name起動パラメータを追加して、デプロイ中にサービス名をより正確に表示します #7995 @HuSharp
    • リージョン数に基づいてPatrolRegionScanLimitを動的に調整してリージョンスキャン時間を短縮する機能をサポート #7963 @lhy1024
  • TiKV

    • async-ioが有効になっている場合、 Raftログの書き込みバッチ処理ポリシーを最適化して、ディスク I/O 帯域幅リソースの消費を削減します #16907 @LykxSassinator
    • リージョン部分購読をより適切にサポートするために、TiCDCデリゲートとダウンストリームモジュールを再設計します #16362 @hicqu
    • 単一のスロークエリログのサイズを削減 #17294 @Connor1996
    • 新しいモニタリング指標min safe tsを追加 #17307 @mittalrishabh
    • ピアメッセージチャネルのメモリ使用量を削減します #16229 @Connor1996
  • TiFlash

    • SVG 形式でのアドホック ヒープ プロファイリングの生成をサポート #9320 @CalvinNeo
  • ツール

    • Backup & Restore (BR)

      • ポイントインタイムリカバリ(PITR)を初めて開始する前に、完全バックアップが存在するかどうかを確認する機能をサポートします。完全バックアップが見つからない場合、 BRはリストアを終了し、エラーを返します。#54418 @Leavrth
      • スナップショットバックアップを復元する前に、TiKVとTiFlashのディスク容量が十分かどうかを確認する機能をサポートします。容量が不足している場合、 BRは復元を終了し、エラーを返します。#54316 @RidRisR
      • TiKVが各SSTファイルをダウンロードする前に、TiKVのディスク容量が十分かどうかを確認する機能をサポートします。容量が不足している場合、 BRはリストアを終了し、エラーを返します。#17224 @RidRisR
      • Alibaba Cloudへのアクセス認証情報を環境変数で設定するサポート #45551 @RidRisR
      • BR をバックアップおよびリストアに使用する際に OOM を回避するため、 BRプロセスの利用可能なメモリに基づいて環境変数GOMEMLIMITを自動的に設定します #53777 @Leavrth
      • 増分バックアップをポイントインタイムリカバリ(PITR)と互換にする #54474 @3pointer
      • mysql.column_stats_usageテーブルのバックアップと復元をサポートします #53567 @hi-rustin

バグ修正

  • TiDB

    • PipelinedWindowのOpenメソッドのパラメータをリセットし、 PipelinedWindowをApplyの子ノードとして使用した際に、繰り返し開閉操作によって以前のパラメータ値が再利用されることで発生する予期しないエラーを修正します。 #53600 @XuHuaiyu
    • tidb_mem_quota_queryで設定された制限を超えるメモリ使用量のため、クエリ終了時に処理が停止する可能性がある問題を修正しました。 #55042 @yibin87
    • HashAggオペレーターのディスクスピルによって並列計算中にクエリ結果が不正になる問題を修正しました #55290 @xzhangxian1008
    • YEARを JSON 形式にキャストした際にJSON_TYPEが誤っている問題を修正 #54494 @YangKeao
    • tidb_schema_cache_sizeシステム変数の値の範囲が間違っている問題を修正 #54034 @lilinghai
    • パーティション式がEXTRACT(YEAR FROM col)の場合にパーティションプルーニングが機能しない問題を修正 #54210 @mjonss
    • データベースに多数のテーブルが存在する場合にFLASHBACK DATABASEが失敗する問題を修正 #54415 @lance6716
    • FLASHBACK DATABASEが多数のデータベースを処理する際に無限ループに陥る問題を修正しました #54915 @lance6716
    • インデックス加速モードでインデックスを追加すると失敗する可能性がある問題を修正 #54568 @lance6716
    • ADMIN CANCEL DDL JOBSが原因で DDL が失敗する可能性がある問題を修正しました #54687 @lance6716
    • DMからレプリケートされたテーブルのインデックス長がmax-index-lengthで指定された最大長を超えると、テーブルのレプリケーションが失敗する問題を修正します。 #55138 @lance6716
    • tidb_enable_inl_join_inner_multi_patternを有効にして SQL ステートメントを実行すると、エラーruntime error: index out of rangeが発生する可能性がある問題を修正します #54535 @joechenrh
    • 統計情報の初期化処理中にControl + Cを使用してTiDBを終了できない問題を修正しました #54589 @tiancaiamao
    • WITH ROLLUPを含む相関サブクエリによって TiDB がpanicを起こし、エラーruntime error: index out of rangeを返す可能性がある問題を修正しました。 #54983 @AilinKid
    • SQLクエリのフィルタ条件に仮想列が含まれ、実行条件にUnionScanが含まれている場合に、述語が正しくプッシュダウンされない問題を修正します #54870 @qw4990
    • tidb_enable_inl_join_inner_multi_patternを有効にして SQL ステートメントを実行すると、エラーruntime error: invalid memory address or nil pointer dereferenceが発生する可能性がある問題を修正しました #55169 @hawkingrei
    • UNIONを含むクエリステートメントが誤った結果を返す可能性がある問題を修正しました #52985 @XuHuaiyu
    • mysql.stats_histogramsテーブルのtot_col_size列が負の数になる可能性がある問題を修正しました #55126 @qw4990
    • columnEvaluatorは入力チャンク内の列参照を識別できず、SQL文の実行時にruntime error: index out of rangeが発生する問題を修正しました。 #53713 @AilinKid
    • STATS_EXTENDEDが予約語になる問題を修正 #39573 @wddevries
    • tidb_low_resolutionが有効になっている場合にselect for updateが実行できてしまう問題を修正しました #54684 @cfzjywxk
    • tidb_redact_logが有効になっている場合に、内部SQLクエリがスロークエリログに表示されない問題を修正しました #54190 @lcwangchao
    • トランザクションで使用されるメモリが複数回追跡される可能性がある問題を修正 #53984 @ekexium
    • SHOW WARNINGS;を使用して警告を取得するとpanicが発生する可能性がある問題を修正しました #48756 @xhebox
    • インデックス統計情報の読み込み時にメモリリークが発生する可能性がある問題を修正 #54022 @hi-rustin
    • 照合順序がutf8_binまたはutf8mb4_binの場合にLENGTH()条件が予期せず削除される問題を修正しました #53730 @elsa0520
    • 重複する主キーに遭遇した場合に統計収集がstats_historyテーブルを更新しない問題を修正 #47539 @Defined2014
    • 再帰的なCTEクエリによって無効なポインタが生成される可能性がある問題を修正 #54449 @hawkingrei
    • Grafana の Connection Count 監視メトリックが、ハンドシェイクが完了する前に一部の接続が切断された場合に正しく表示されない問題を修正しました #54428 @YangKeao
    • TiProxyとリソースグループを使用している際に、各リソースグループの Connection Countが正しく表示されない問題を修正しました #54545 @YangKeao
    • クエリに相関のないサブクエリとLIMIT句が含まれている場合、列のプルーニングが不完全になり、最適ではない実行計画が生成される可能性がある問題を修正しました。 #54213 @qw4990
    • SELECT ... FOR UPDATEの誤ったPointGetプランを再利用してしまう問題を修正します #54652 @qw4990
    • TIMESTAMPADD()関数の最初の引数がmonthで、2 番目の引数が負の値の場合に無限ループに陥る問題を修正しました。 #54908 @xzhangxian1008
    • スローログ内の内部SQL文がデフォルトでnullに秘匿化される問題を修正#54190 #52743 #53264 @lcwangchao
    • PointGetの実行計画が_tidb_rowidに対して生成されてしまう問題を修正します #54583 @Defined2014
    • SHOW IMPORT JOBSが v7.1 からアップグレード後にエラーUnknown column 'summary'を報告する問題を修正 #54241 @tangenta
    • ビュー定義で列定義としてサブクエリが使用されている場合、 information_schema.columnsを使用して列情報を取得すると警告 1356 が返される問題を修正しました #54343 @lance6716
    • 厳密に単調増加していないRANGEパーティションテーブルが作成できてしまう問題を修正 #54829 @Defined2014
    • SQLが異常中断されたときにINDEX_HASH_JOINが正常に終了できない問題を修正 #54688 @wshwsh12
    • 分散実行フレームワーク(DXF)を使用してインデックスを追加する際のネットワーク分断により、データインデックスに不整合が生じる可能性がある問題を修正しました #54897 @tangenta
  • PD

    • リソースグループにロールをバインドする際にエラーが報告されない問題を修正 #54417 @JmPotato
    • リソースグループが500ミリ秒以上トークンをリクエストするとクォータ制限に遭遇する問題を修正 #8349 @nolouch
    • INFORMATION_SCHEMA.RUNAWAY_WATCHESテーブル内の時間データ型が正しくない問題を修正 #54770 @HuSharp
    • リソースグループが高同時実行時にリソース使用量を効果的に制限できない問題を修正 #8435 @nolouch
    • テーブル属性を取得する際に誤ったPD APIが呼び出される問題を修正 #55188 @JmPotato
    • schedulingマイクロサービスが有効になった後にスケーリングの進行状況が正しく表示されない問題を修正しました #8331 @rleungx
    • 暗号化マネージャが使用前に初期化されていない問題を修正 #8384 @rleungx
    • 一部のログが秘匿化されない問題を修正 #8419 @rleungx
    • PDマイクロサービスの起動中にリダイレクトがpanicする可能性がある問題を修正 #8406 @HuSharp
    • split-merge-interval設定項目の値が繰り返し変更された場合(例えば、 1sから1h に変更し、再び1s に戻す場合など)に、その設定が有効にならない可能性がある問題を修正します。 #8404 @lhy1024
    • replication.strictly-match-labelをtrueに設定するとTiFlash が起動に失敗する問題を修正しました #8480 @rleungx
    • 大規模なパーティションテーブルを分析する際にTSOの取得が遅くなり、 ANALYZEパフォーマンス低下を引き起こす問題を修正しました #8500 @rleungx
    • 大規模クラスターにおける潜在的なデータ競合を修正 #8386 @rleungx
    • クエリが暴走クエリかどうかを判断する際に、TiDB がコプロセッサー側で費やされた時間消費のみをカウントし、TiDB 側で費やされた時間消費がカウントされないため、一部のクエリが暴走クエリとして識別されない問題を修正します。 #51325 @HuSharp
  • TiFlash

    • CAST()関数を使用して文字列をタイムゾーンまたは無効な文字を含む datetime に変換すると、結果が正しくない問題を修正しました #8754 @solotzg
    • 空のパーティションを持つパーティションテーブルに対してデータベースをまたいでRENAME TABLE ... TO ...を実行した後にTiFlash がpanicする可能性がある問題を修正 #9132 @JaySon-Huang
    • 遅延マテリアライゼーションが有効になった後、一部のクエリで列型の不一致エラーが報告される可能性がある問題を修正 #9175 @JinheLin
    • 仮想生成列を含むクエリが遅延マテリアライゼーション有効後に誤った結果を返す可能性がある問題を修正 #9188 @JinheLin
    • TiFlashでSSL証明書の設定を空文字列に設定するとTLSが誤って有効になり、 TiFlashが起動に失敗する問題を修正しました #9235 @JaySon-Huang
    • データベース作成直後にデータベースが削除されるとTiFlash がpanicすることがある問題を修正 #9266 @JaySon-Huang
    • TiFlashと任意の PD 間のネットワークパーティション (ネットワークの切断) により、読み取りリクエストのタイムアウトエラーが発生する可能性がある問題を修正 #9243 @Lloyd-Pottiger
    • ストレージとコンピューティングの分離アーキテクチャでTiFlash書き込みノードの再起動に失敗することがある問題を修正 #9282 @JaySon-Huang
    • ストレージとコンピューティングの分離アーキテクチャにおいて、 TiFlash書き込みノードの読み取りスナップショットがタイムリーに解放されない問題を修正します #9298 @JinheLin
  • TiKV

    • 古いリージョンをクリーンアップすると、誤って有効なデータが削除される可能性がある問題を修正 #17258 @hbisheng
    • Grafana の TiKV ダッシュボードでIngestion picked levelとCompaction Job Size(files)が正しく表示されない問題を修正します #15990 @Connor1996
    • cancel_generating_snapがsnap_tried_cntを誤って更新すると TiKV がpanicを起こす問題を修正 #17226 @hbisheng
    • Ingest SST duration secondsの情報が間違っている問題を修正しました #17239 @LykxSassinator
    • エラー発生時にCPUプロファイリングフラグが正しくリセットされない問題を修正 #17234 @Connor1996
    • ブルームフィルターが以前のバージョン(v7.1より前)と以降のバージョン間で互換性がない問題を修正しました #17272 @v01dstar
  • ツール

    • Backup & Restore (BR)

      • ADD INDEXやMODIFY COLUMNなど、バックフィルが必要な DDL が増分リストア中に正しく復元されない可能性がある問題を修正します #54426 @3pointer
      • バックアップと復元中に進行状況が停止する問題を修正 #54140 @Leavrth
      • バックアップとリストアのチェックポイントパスが一部の外部ストレージと互換性がない問題を修正 #55265 @Leavrth
    • TiCDC

      • 下流の Kafka にアクセスできない場合にプロセッサが停止する可能性がある問題を修正しました #11340 @asddongmen
    • TiDB Data Migration (DM)

      • スキーマトラッカーがLISTパーティションテーブルを正しく処理せず、DMエラーが発生する問題を修正しました #11408 @lance6716
      • インデックスの長さがmax-index-lengthのデフォルト値を超えるとデータレプリケーションが中断される問題を修正します #11459 @michaelmdeng
      • DMがFAKE_ROTATE_EVENTを正しく処理できない問題を修正 #11381 @lance6716
    • TiDB Lightning

      • TiDB Lightningがキースペース名の取得に失敗した際に、紛らわしいWARNログを出力する問題を修正 #54232 @kennytm
      • TiDB Lightningの TLS 構成がクラスター証明書に影響する問題を修正 #54172 @ei-sugimoto
      • TiDB Lightningを使用したデータインポート中にトランザクションの競合が発生する問題を修正しました #49826 @lance6716
      • 多数のデータベースとテーブルのインポート中に、大きなチェックポイントファイルがパフォーマンス低下を引き起こす問題を修正 #55054 @D3Hunter

貢献者

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

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