TiDB 8.3.0 リリースノート
リリース日:2024年8月22日
TiDBバージョン:8.3.0
クイックアクセス: クイックスタート
バージョン8.3.0では、以下の主要な機能と改善点が導入されています。
機能の詳細
パフォーマンス
オプティマイザは
Projectionオペレーターをデフォルトでストレージエンジンにプッシュダウンすることを可能にします #51876 @yibin87Projectionオペレーターをストレージエンジンにプッシュダウンすると、計算エンジンとストレージエンジン間のデータ転送が削減され、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.TABLESINFORMATION_SCHEMA.STATISTICSINFORMATION_SCHEMA.KEY_COLUMN_USAGEINFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTSバージョン8.3.0では、以下のシステムテーブルについてクエリのパフォーマンスが最適化され、バージョン8.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 @mjonss以前のバージョンでは、パーティション式で
EXTRACT(YEAR_MONTH...)関数を使用する場合、パーティションプルーニングがサポートされておらず、クエリのパフォーマンスが低下していました。v8.3.0 以降では、パーティション式でEXTRACT(YEAR_MONTH...)関数を使用する場合にパーティションプルーニングがサポートされ、クエリのパフォーマンスが向上します。詳細については、ドキュメントを参照してください。
CREATE TABLEのパフォーマンスを 1.4 倍、CREATE DATABASEのパフォーマンスを 2.1 倍、ADD COLUMNを 2 倍向上させます #54436 @D3HunterTiDB 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 @cfzjywxkTiDB はまだ
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を追加しました。これにより、起動フェーズ中の任意の時点で初期統計情報の読み込み状況を取得できます。
セキュリティ
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文を個別に実行する必要がありました。この機能により、クラスタに
PRIMARYBDR ロールを割り当てると、TiCDC はそのクラスタからSECONDARYクラスタに DDL文をレプリケートできます。バージョン8.3.0では、この機能が一般提供(GA)されます。
詳細については、 ドキュメントを参照してください。
互換性の変更
動作の変更
- コマンドの誤用を防ぐため、
pd-ctlはプレフィックスマッチングメカニズムを無効にします。たとえば、store remove-tombstoneはstore removeを介して呼び出すことはできません。 #8413 @lhy1024
システム変数
設定ファイルパラメータ
システムテーブル
INFORMATION_SCHEMA.PROCESSLISTおよびINFORMATION_SCHEMA.CLUSTER_PROCESSLISTシステムテーブルにSESSION_ALIASフィールドが追加され、DML文によって現在影響を受けている行数が表示されます。#46889 @lcwangchao
非推奨機能
バージョン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に置き換えられます。これは、競合するレコードの最大数が、単一のインポートタスクで許容できる競合レコードの最大数と一致することを意味します。
- TiDBでは、統計情報を自動的に収集するタスクの順序を最適化するために優先度キューを有効にするかどうかを制御するためのシステム変数
今後のバージョンでは、以下の機能が削除される予定です。
- バージョン8.0.0以降、 TiDB Lightningは旧バージョンの競合検出戦略を非推奨とし、
conflict.strategyパラメータを使用して論理インポートモードと物理インポートモードの両方の競合検出戦略を制御できるようにします。旧バージョンの競合検出のduplicate-resolutionパラメータは、今後のリリースで削除されます。
- バージョン8.0.0以降、 TiDB Lightningは旧バージョンの競合検出戦略を非推奨とし、
改善点
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-rustinEXPLAINステートメントの出力に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
ツール
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 @XuHuaiyutidb_mem_quota_queryで設定された制限を超えるメモリ使用量のため、クエリ終了時に処理が停止する可能性がある問題を修正しました。 #55042 @yibin87- HashAggオペレーターのディスクスピルによって並列計算中にクエリ結果が不正になる問題を修正しました #55290 @xzhangxian1008
YEARを JSON 形式にキャストした際にJSON_TYPEが誤っている問題を修正 #54494 @YangKeaotidb_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 @hawkingreiUNIONを含むクエリステートメントが誤った結果を返す可能性がある問題を修正しました #52985 @XuHuaiyumysql.stats_histogramsテーブルのtot_col_size列が負の数になる可能性がある問題を修正しました #55126 @qw4990columnEvaluatorは入力チャンク内の列参照を識別できず、SQL文の実行時にruntime error: index out of rangeが発生する問題を修正しました。 #53713 @AilinKidSTATS_EXTENDEDが予約語になる問題を修正 #39573 @wddevriestidb_low_resolutionが有効になっている場合にselect for updateが実行できてしまう問題を修正しました #54684 @cfzjywxktidb_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 @qw4990TIMESTAMPADD()関数の最初の引数がmonthで、2 番目の引数が負の値の場合に無限ループに陥る問題を修正しました。 #54908 @xzhangxian1008- スローログ内の内部SQL文がデフォルトでnullに秘匿化される問題を修正#54190 #52743 #53264 @lcwangchao
PointGetの実行計画が_tidb_rowidに対して生成されてしまう問題を修正します #54583 @Defined2014SHOW 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 @lhy1024replication.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 @hbishengIngest SST duration secondsの情報が間違っている問題を修正しました #17239 @LykxSassinator- エラー発生時にCPUプロファイリングフラグが正しくリセットされない問題を修正 #17234 @Connor1996
- ブルームフィルターが以前のバージョン(v7.1より前)と以降のバージョン間で互換性がない問題を修正しました #17272 @v01dstar
ツール
Backup & Restore (BR)
TiCDC
- 下流の Kafka にアクセスできない場合にプロセッサが停止する可能性がある問題を修正しました #11340 @asddongmen
TiDB Data Migration (DM)
TiDB Lightning
貢献者
TiDBコミュニティの以下の貢献者の皆様に感謝申し上げます。