TiDB 7.6.0 リリースノート
発売日:2024年1月25日
TiDB バージョン: 7.6.0
クイックアクセス: クイックスタート
バージョン7.6.0では、以下の主要な機能と改善点が導入されています。
機能の詳細
拡張性
Active PD Follower機能を使用して PD のリージョン情報クエリサービスのスケーラビリティを強化する (実験的) #7431 @CabinfeverB
リージョン数の多いTiDBクラスタでは、ハートビート処理やタスクスケジューリングに伴うオーバーヘッドが増加するため、PDリーダーのCPU負荷が高くなる可能性があります。クラスタにTiDBインスタンスが多数存在し、リージョン情報へのリクエストが同時に多数発生すると、PDリーダーのCPU負荷はさらに高まり、PDサービスが利用できなくなる恐れがあります。
高可用性を確保するため、TiDB v7.6.0 では、PD のリージョン情報クエリサービスの拡張性を向上させる Active PD Follower機能をサポートしています。Active PD Follower機能は、システム変数
pd_enable_follower_handle_regionONに設定することで有効にできます。この機能を有効にすると、TiDB はリージョン情報要求をすべての PD サーバーに均等に分散し、PD フォロワーもリージョン要求を処理できるようになるため、PD リーダーの CPU 負荷が軽減されます。詳細については、 ドキュメントを参照してください。
パフォーマンス
BRはスナップショットの復元速度を最大 10 倍向上させます (実験的) #33937 #49886 @3pointer
TiDBクラスタの規模が拡大するにつれて、業務停止時間を最小限に抑えるために、障害発生時にクラスタを迅速に復旧することがますます重要になります。v7.6.0より前は、リージョン分散アルゴリズムがパフォーマンス復旧における主要なボトルネックとなっていました。v7.6.0では、 BRがリージョン分散アルゴリズムを最適化し、復旧タスクを多数の小さなタスクに迅速に分割し、バッチ処理で全てのTiKVノードに分散させます。新しい並列リカバリアルゴリズムは、各TiKVノードのリソースを最大限に活用し、高速な並列リカバリを実現します。実際の運用事例では、大規模なリージョン環境において、クラスタのスナップショット復旧速度が約10倍向上しています。
新しい粗粒度リージョン散布アルゴリズムは実験的です。これを使用するには、
--granularity="coarse-grained"コマンドのbrパラメータを設定します。例:br restore full \ --pd "${PDIP}:2379" \ --storage "s3://${Bucket}/${Folder}" \ --s3.region "${region}" \ --granularity "coarse-grained" \ --send-credentials-to-tikv=true \ --log-file restorefull.log詳細については、 ドキュメントを参照してください。
Titan エンジンはデフォルトで有効になっています #16245 @Connor1996 @v01dstar @tonyxuqqi
TiDB v7.6.0以降では、特にJSONをサポートするTiDBワイドテーブル書き込みシナリオをより適切にサポートするために、Titanエンジンがデフォルトで有効になっています。Titanエンジンは、RocksDBのLSMツリーから32KBを超える大きな値を自動的に分離し、Titanに個別に保存することで、大きな値の処理を最適化します。Titanエンジンは、TiKVで使用されているRocksDBの機能と完全に互換性があります。この戦略的な変更により、書き込み増幅効果が軽減されるだけでなく、大きな値を含む書き込み、更新、およびポイントクエリのシナリオにおけるパフォーマンスも向上します。さらに、レンジスキャンシナリオでは、Titanエンジンの最適化により、デフォルト構成のRocksDBと同等のパフォーマンスを実現しています。
この構成変更は、以前のバージョンとの互換性を維持しています。既存のTiDBクラスタの場合、TiDB v7.6.0以降のバージョンにアップグレードすると、Titanエンジンはデフォルトで無効になります。お客様の特定の要件に基づいて、Titanエンジンを手動で有効または無効にすることができます。
詳細については、ドキュメントを参照してください。
以下の文字列関数をTiKVにプッシュダウンするサポート #48170 @gengliqi
LOWER()UPPER()詳細については、 ドキュメントを参照してください。
TiFlashへの以下のJSON関数のプッシュダウンをサポートします#48350 #48986 #48994 #49345 #49392 @SeaRise@yibin87
JSON_UNQUOTE()JSON_ARRAY()JSON_DEPTH()JSON_VALID()JSON_KEYS()JSON_CONTAINS_PATH()詳細については、 ドキュメントを参照してください。
テーブル作成のパフォーマンスを10倍向上(実験的) #49752 @gmhdbjd
以前のバージョンでは、数万ものテーブルをアップストリームデータベースからTiDBに移行する際に、TiDBがこれらのテーブルを作成するのに時間がかかり、非効率的でした。v7.6.0以降、TiDBは新しいTiDB DDL V2アーキテクチャを導入しました。システム変数
tidb_ddl_versionを設定することで有効にできます。以前のバージョンと比較して、新しいバージョンのDDLはバッチテーブルの作成パフォーマンスを10倍向上させ、テーブル作成時間を大幅に短縮します。詳細については、 ドキュメントを参照してください。
定期的な完全圧縮をサポート (実験的) #12729 @@afeinberg
TiDBはv7.6.0以降、TiKVの定期的なフルコンパクションをサポートしています。この機能は、ガベージコレクション(GC)を拡張し、冗長なデータバージョンを排除するものです。アプリケーションのアクティビティに明らかなピークと谷が見られるシナリオでは、この機能を使用してアイドル期間中にデータコンパクションを実行することで、ピーク時のパフォーマンスを向上させることができます。
TiKV の設定項目
periodic-full-compact-start-timesを設定することで、TiKV が定期的な完全圧縮を開始する特定の時間を設定できます。また、periodic-full-compact-start-max-cpuを設定することで、TiKV の定期的な完全圧縮の最大 CPU 使用率を制限できます。periodic-full-compact-start-max-cpuのデフォルト値は0.1です。これは、TiKV の CPU 使用率が 10% 未満の場合にのみ定期的な完全圧縮がトリガーされることを意味し、アプリケーションのトラフィックへの影響を軽減します。詳細については、 ドキュメントを参照してください。
信頼性
クロスデータベース実行計画のバインディング #48875 @qw4990
TiDB上でSaaSサービスを実行する場合、データの保守管理を容易にするため、テナントごとにデータを個別のデータベースに保存するのが一般的です。その結果、同じテーブルとインデックス定義、そして類似したSQL文を持つデータベースが数百個も存在することになります。このような状況では、SQL文に対して実行プランバインディングを作成すると、通常、そのバインディングは他のデータベースのSQL文にも適用されてしまいます。
このシナリオでは、TiDB v7.6.0 でクロスデータベースバインディング機能が導入されました。この機能は、異なるデータベースにある場合でも、同じスキーマを持つ SQL文に同じ実行計画をバインドすることをサポートします。クロスデータベースバインディングを作成する際には、次の例に示すように、データベース名を表すためにワイルドカード
*を使用する必要があります。バインディングが作成されると、テーブルt1とt2がどのデータベースにあるかに関係なく、TiDB はこのバインディングを使用して同じスキーマを持つすべての SQL文の実行計画を生成しようとします。これにより、各データベースごとにバインディングを作成する手間が省けます。CREATE GLOBAL BINDING FOR USING SELECT /*+ merge_join(t1, t2) */ t1.id, t2.amount FROM *.t1, *.t2 WHERE t1.id = t2.id;さらに、クロスデータベースバインディングは、ユーザーデータとワークロードの不均一な分布や急激な変化によって引き起こされるSQLパフォーマンスの問題を効果的に軽減できます。SaaSプロバイダーは、クロスデータベースバインディングを使用して、大量のデータを持つユーザーによって検証された実行計画を修正することで、すべてのユーザーの実行計画を固定できます。SaaSプロバイダーにとって、この機能は利便性とユーザーエクスペリエンスを大幅に向上させます。
クロスデータベースバインディングによって発生するシステムオーバーヘッド(1%未満)のため、TiDBはこの機能をデフォルトで無効にしています。クロスデータベースバインディングを使用するには、まずシステム変数
tidb_opt_enable_fuzzy_bindingを有効にする必要があります。詳細については、 ドキュメントを参照してください。
可用性
プロキシコンポーネントTiProxyのサポート(実験的) #413 @djshow832 xhebox
TiProxyはTiDBの公式プロキシコンポーネントであり、クライアントとTiDBサーバーの間に配置されます。TiProxyはTiDBの負荷分散と接続維持関数を提供し、TiDBクラスタのワークロードをよりバランス良く分散させ、メンテナンス作業中もデータベースへのユーザーアクセスに影響を与えないようにします。
TiDBクラスタにおけるローリング再起動、ローリングアップグレード、スケールインなどのメンテナンス作業中、TiDBサーバーに変更が発生すると、クライアントとTiDBサーバー間の接続が中断されます。TiProxyを使用することで、これらのメンテナンス作業中に接続を他のTiDBサーバーにスムーズに移行できるため、クライアントへの影響を最小限に抑えることができます。
TiDBサーバーへのクライアント接続を、他のTiDBサーバーに動的に移行することはできません。複数のTiDBサーバーのワークロードが不均衡になると、クラスタ全体のリソースは十分であっても、特定のTiDBサーバーでリソース枯渇が発生し、レイテンシーが大幅に増加する可能性があります。この問題を解決するために、TiProxyは接続の動的移行機能を提供します。これにより、クライアントに影響を与えることなく、接続をあるTiDBサーバーから別のTiDBサーバーに移行できるため、TiDBクラスタの負荷分散が実現されます。
TiProxyはTiUP、 TiDB Operator、およびTiDB Dashboardに統合されているため、設定、デプロイ、およびメンテナンスが容易です。
詳細については、ドキュメントを参照してください。
SQL
LOAD DATAは明示的なトランザクションとロールバックをサポートします #49079 @ekexiumMySQLと比較すると、v7.6.0より前のTiDBバージョンでは
LOAD DATA文のトランザクション動作が異なるため、このステートメントを使用する際には追加の調整が必要になる場合があります。具体的には、v4.0.0より前では、LOAD DATAは20000行ごとにコミットされます。v4.0.0からv6.6.0までは、TiDBはデフォルトで1つのトランザクションですべての行をコミットし、tidb_dml_batch_sizeシステム変数を設定することで固定行数ごとにコミットすることもサポートしています。v7.0.0以降では、tidb_dml_batch_sizeLOAD DATAには適用されなくなり、TiDBは1つのトランザクションですべての行をコミットします。バージョン7.6.0以降、TiDBはトランザクション内で
LOAD DATA他のDML文と同様に、特にMySQLと同様に処理します。トランザクション内のLOAD DATA文は、現在のトランザクションを自動的にコミットしたり、新しいトランザクションを開始したりしなくなりました。さらに、トランザクション内のLOAD DATA文を明示的にコミットまたはロールバックできます。また、LOAD DATA文は、TiDBトランザクションモード設定(楽観的トランザクションまたは悲観的トランザクション)の影響を受けます。これらの改善により、MySQLからTiDBへの移行プロセスが簡素化され、データインポートにおいてより統一的で制御しやすいエクスペリエンスが提供されます。詳細については、 ドキュメントを参照してください。
データベース操作
FLASHBACK CLUSTERは、正確な TSO の指定をサポートしています #48372 @BornChangerTiDB v7.6.0 では、フラッシュバック機能がより強力かつ正確になりました。クラスタを指定した履歴タイムスタンプにロールバックできるだけでなく、
FLASHBACK CLUSTER TO TSOを使用して正確なリカバリTSOを指定できるため、データリカバリの柔軟性が向上します。たとえば、この機能を TiCDC と組み合わせて使用できます。ダウンストリームの TiDB クラスタでデータレプリケーションを一時停止し、オンライン前の読み書きテストを実行した後、この機能を使用すると、クラスタは一時停止した TSO にスムーズかつ迅速にロールバックし、TiCDC を使用してデータのレプリケーションを再開できます。これにより、オンライン前の検証プロセスが効率化され、データ管理が簡素化されます。FLASHBACK CLUSTER TO TSO 445494839813079041;詳細については、 ドキュメントを参照してください。
長時間実行されているアイドル状態のトランザクションを自動的に終了させる機能のサポート #48714 @crazycs520
ネットワーク切断やアプリケーション障害が発生するシナリオでは、
COMMIT/ROLLBACK文がデータベースに送信されない可能性があります。これにより、データベース ロックの解放が遅延し、トランザクション ロック待機が発生し、データベース接続が急増する可能性があります。このような問題はテスト環境ではよく発生しますが、本番環境でも時折発生する可能性があり、迅速な診断が難しい場合があります。これらの問題を回避するために、TiDB v7.6.0 では、長時間実行されているアイドル状態のトランザクションを自動的に終了するtidb_idle_transaction_timeoutシステム変数が導入されました。トランザクション状態のユーザーセッションがこの変数の値を超える期間アイドル状態になると、TiDB はトランザクションのデータベース接続を終了し、トランザクションをロールバックします。詳細については、 ドキュメントを参照してください。
実行プランバインディングを作成するための構文を簡素化する #48876 @qw4990
TiDB v7.6.0 では、実行プランバインディングを作成するための構文が簡素化されました。実行プランバインディングを作成する際に、元の SQL文を指定する必要がなくなりました。TiDB は、ヒント付きのステートメントに基づいて元の SQL文を識別します。この改善により、実行プランバインディングの作成がより便利になります。例:
CREATE GLOBAL BINDING USING SELECT /*+ merge_join(t1, t2) */ * FROM t1, t2 WHERE t1.id = t2.id;詳細については、 ドキュメントを参照してください。
TiDB で単一行レコードのサイズ制限を動的に変更する機能をサポート #49237 @zyguan
v7.6.0 より前では、トランザクション内の単一行レコードのサイズは、TiDB 設定項目
txn-entry-size-limitによって制限されていました。サイズ制限を超えると、TiDB はentry too largeエラーを返します。この場合、TiDB 構成ファイルを手動で変更し、TiDB を再起動して変更を有効にする必要があります。管理オーバーヘッドを削減するために、TiDB v7.6.0 ではtxn-entry-size-limit設定項目の値を動的に変更できるシステム変数tidb_txn_entry_size_limitが導入されました。この変数のデフォルト値は0であり、これは TiDB がデフォルトで設定項目txn-entry-size-limitの値を使用することを意味します。この変数にゼロ以外の値を設定すると、TiDB はトランザクション内の行レコードのサイズをこの変数の値に制限します。この改善により、TiDB を再起動することなくシステム構成を調整できる柔軟性が向上します。詳細については、 ドキュメントを参照してください。
BR はデフォルトでユーザーデータなどのシステムテーブルを復元します#48567 @BornChanger #49627 @Leavrth
バージョン5.1.0以降、スナップショットをバックアップすると、 BRは
mysqlスキーマ内のシステムテーブルを自動的にバックアップしますが、デフォルトではこれらのシステムテーブルを復元しません。バージョン6.2.0では、 BRは--with-sys-tableパラメータを追加し、一部のシステムテーブルのデータを復元できるようにすることで、操作の柔軟性を向上させています。管理の手間をさらに軽減し、より直感的なデフォルト動作を実現するために、バージョン7.6.0以降、 BRはデフォルトで
--with-sys-tableパラメータを有効にします。これにより、 BRは復元時に一部のシステムテーブル、特にユーザーアカウントとテーブル統計データをデフォルトで復元します。この改善により、バックアップと復元操作がより直感的になり、手動設定の負担が軽減され、全体的な操作性が向上します。詳細については、ドキュメントを参照してください。
可観測性
リソース制御に関する可観測性の強化 #49318 @glorv@bufferflies@nolouch
アプリケーションのワークロードを分離するためにリソースグループを使用するユーザーが増えるにつれ、リソース コントロールはリソースグループに基づいた強化されたデータを提供します。これにより、リソースグループのワークロードと設定を監視し、次のような問題を迅速かつ正確に特定して診断できるようになります。
スロークエリ: リソースグループ名、リソース ユニット (RU) の消費量、およびリソースの待機時間を追加します。
ステートメントサマリーテーブル: リソースグループ名、RU 消費量、リソースの待機時間を追加します。
システム変数
tidb_last_query_infoに、SQL文によって消費されたRUを示す新しいエントリru_consumptionを追加します。この変数を使用して、セッション内の最後のステートメントのリソース消費量を取得できます。リソースグループに基づいてデータベースのメトリックを追加します。具体的には、QPS/TPS、実行時間(P999/P99/P95)、障害発生回数、接続数などです。
すべてのリソースグループの1日あたりのRU消費量の履歴レコードを記録するために、システムテーブル
request_unit_by_groupを追加します。詳細については、スロークエリを特定する、ステートメントサマリーテーブル、およびリソース制御の主要監視指標を参照してください。
データ移行
MySQL 8.0への移行をサポートするデータ移行(DM)機能が一般提供開始(GA)になりました #10405 @lyzx2001
これまで、DMを使用してMySQL 8.0からデータを移行する機能は実験的機能であり、本番環境では利用できませんでした。TiDB v7.6.0では、この機能の安定性と互換性が向上し、本番環境においてMySQL 8.0からTiDBへのデータ移行をスムーズかつ迅速に行えるようになりました。v7.6.0では、この機能が一般提供(GA)となります。
詳細については、ドキュメントを参照してください。
TiCDCは双方向レプリケーション(BDR)モードでのDDL文のレプリケーションをサポートします(実験的) #10301 #48519 @okJiang @asddongmen
バージョン7.6.0以降、TiCDCは双方向レプリケーションが構成されたDDL文のレプリケーションをサポートします。以前は、TiCDCはDDL文のレプリケーションをサポートしていなかったため、TiCDCの双方向レプリケーションを使用するユーザーは、DDL文を両方のTiDBクラスタに個別に適用する必要がありました。この機能により、TiCDCはクラスタに
PRIMARYBDRロールを割り当てることができ、そのクラスタからダウンストリームクラスタへのDDL文のレプリケーションが可能になります。詳細については、 ドキュメントを参照してください。
TiCDCは、チェンジフィードの下流同期ステータスのクエリをサポートします #10289 @hongyunyan
バージョン7.6.0以降、TiCDCは、指定されたレプリケーションタスク(チェンジフィード)のダウンストリーム同期ステータスを照会するための新しいAPI
GET /api/v2/changefeed/{changefeed_id}/syncedを導入しました。このAPIを使用することで、TiCDCが受信したアップストリームデータがダウンストリームシステムに完全に同期されているかどうかを判断できます。詳細については、 ドキュメントを参照してください。
TiCDCがCSV出力プロトコルで3文字区切り文字のサポートを追加 #9969 @zhangjinpeng87
バージョン7.6.0以降では、CSV出力プロトコルの区切り文字を1~3文字の長さで指定できるようになりました。この変更により、TiCDCは、出力内のフィールドを区切るために、2文字の区切り文字(
||や$^など)または3文字の区切り文字(|@|など)を使用してファイル出力を生成するように構成できます。詳細については、ドキュメントを参照してください。
互換性の変更
MySQLとの互換性
- TiDB v7.6.0 より前は、
LOAD DATA操作は、単一のトランザクションですべての行をコミットするか、トランザクションをバッチでコミットしていました。これは MySQL の動作とは若干異なります。v7.6.0 以降、TiDB はLOAD DATAMySQL と同様にトランザクションで処理します。トランザクション内のLOAD DATA文は、現在のトランザクションを自動的にコミットしたり、新しいトランザクションを開始したりしなくなりました。さらに、トランザクション内のLOAD DATA文を明示的にコミットまたはロールバックできます。また、LOAD DATA文は、TiDB のトランザクションモード設定 (楽観的トランザクションまたは悲観的トランザクション) の影響を受けます。 #49079 @ekexium
システム変数
コンフィグレーションファイルパラメータ
システムテーブル
- TiDBでサポートされているすべてのキーワードの情報を表示するために、新しいシステムテーブル
INFORMATION_SCHEMA.KEYWORDSを追加します。 - システムテーブル
INFORMATION_SCHEMA.SLOW_QUERYに、リソース制御に関連する以下のフィールドを追加します。Resource_group: ステートメントがバインドされているリソースグループ。Request_unit_read: ステートメントによって消費された読み取り RU の合計。Request_unit_write: ステートメントによって消費された書き込み RU の合計。Time_queued_by_rc: ステートメントが利用可能なリソースを待機する合計時間。
オフラインパッケージの変更
v7.6.0 以降、 TiDB-community-serverバイナリパッケージには、プロキシ コンポーネントTiProxyのインストールパッケージであるtiproxy-{version}-linux-{arch}.tar.gz含まれるようになりました。
非推奨機能
- TiDB v7.6.0ではTLSv1.0およびTLSv1.1プロトコルのサポートは非推奨となり、v8.0.0で削除されます。TLSv1.2またはTLSv1.3にアップグレードしてください。
- 実行計画の ベースラインの進化機能は、TiDB v8.0.0 で非推奨になります。同等の機能は後続のバージョンで再設計される予定です。
- TiDB v8.0.0では、システム変数
tidb_disable_txn_auto_retryが非推奨となります。それ以降、TiDBは楽観的トランザクションの自動再試行をサポートしなくなります。
改善点
TiDB
- 非バイナリ照合順序が設定され、クエリに
LIKEが含まれる場合、オプティマイザは実行効率を向上させるためにIndexRangeScanを生成します#48181 #49138 @time-and-fate - 特定のシナリオにおいて
OUTER JOINをINNER JOINに変換する機能を強化する #49616 @qw4990 - ノードが再起動されるシナリオにおける分散実行フレームワーク(DXF)タスクのバランスを改善する #47298 @ywqzzy
- 複数の高速化された
ADD INDEXDDL タスクをキューに入れて実行できるようにサポートします。通常のADD INDEXタスクにフォールバックするのではなく、実行します。 #47758 @tangenta ALTER TABLE ... ROW_FORMATの互換性を改善 #48754 @hawkingreiCANCEL IMPORT JOBステートメントを同期ステートメントに変更します #48736 @D3Hunter- 空のテーブルへのインデックス追加速度の改善 #49682 @zimulala
- 相関サブクエリの列が上位レベルの演算子によって参照されていない場合、相関サブクエリは直接削除できます #45822 @King-Dylan
EXCHANGE PARTITION操作により、統計情報のメンテナンス更新がトリガーされるようになりました #47354 @Rustin170506- TiDBは、連邦情報処理標準(FIPS)の要件を満たすバイナリファイルの作成をサポートしています。 #47948 @tiancaiamao
- 一部の型変換を処理する際の TiDB 実装を最適化し、関連する問題を修正します#47945 #47864 #47829 #47816 @YangKeao@lcwangchao
- スキーマバージョンを取得する際、TiDBはデフォルトでKVタイムアウト機能を使用して読み取りを行うため、遅いメタリージョンリーダーの読み取りがスキーマバージョン更新に与える影響が軽減されます。 #48125 @cfzjywxk
- 非バイナリ照合順序が設定され、クエリに
TiKV
PD
TiFlash
- 読み取りレイテンシーに対するディスク パフォーマンス ジッターの影響を軽減 #8583 @JaySon-Huang
- バックグラウンド GC タスクの読み取りおよび書き込みタスクのレイテンシーへの影響を軽減 #8650 @JaySon-Huang
- ストレージとコンピューティングを分離したアーキテクチャで同一のデータ読み取り操作をマージして、高並行処理下でのデータスキャン性能を向上させるサポート #6834 @JinheLin
SEMI JOINとLEFT OUTER SEMIJOINの実行パフォーマンスを最適化するJOIN ONに JOIN KEY 等価条件のみが含まれる場合) #47424 @gengliqi
ツール
Backup & Restore (BR)
TiCDC
- TiCDCによるオブジェクトストレージへのデータ複製パフォーマンスを並列処理の増加によって改善する #10098 @CharlesCheung96
sink-uri設定でcontent-compatible=trueを設定することで、TiCDC の Canal-JSON コンテンツ形式を公式Canal出力のコンテンツ形式と互換性があるようにすることをサポートします。 #10106 @3AceShowHand
TiDB Data Migration (DM)
TiDB Lightning
- 安定性を高めるために複数の PD アドレスの構成をサポート #49515 @mittalrishabh
- ローカルファイルのソートにおけるI/Oブロックサイズを制御するための
block-sizeパラメータの設定をサポートし、パフォーマンスを向上させます #45037 @mittalrishabh
バグ修正
TiDB
- TiDBがパニックを起こしてエラー
invalid memory address or nil pointer dereferenceを報告する問題を修正 #42739 @CbcWestwolf - DDL
jobIDが 0 に復元されたときに発生する TiDB ノードpanicの問題を修正 #46296 @jiyfhust - 同じクエリプランでも異なる
PLAN_DIGEST値が存在する場合がある問題を修正 #47634 @King-Dylan - DUALテーブルを最初のサブノードとして
UNION ALLを実行するとエラーが発生する可能性がある問題を修正しました #48755 @winoros - 共通テーブル式(CTE)を含むクエリで、
tidb_max_chunk_sizeが小さな値に設定されている場合にruntime error: index out of range [32] with length 32が報告される問題を修正 #48808 @guo-shaoge AUTO_ID_CACHE=1使用時のゴルーチンリークの問題を修正 #46324 @tiancaiamao- MPP によって計算された
COUNT(INT)の結果が正しくない可能性がある問題を修正 #48643 @AilinKid - パーティション列のタイプが
DATETIMEの場合にALTER TABLE ... LAST PARTITIONの実行が失敗する問題を修正します #48814 @crazycs520 LIKEで_ワイルドカードを使用すると、データに末尾の空白が含まれている場合にクエリ結果が正しくない可能性がある問題を修正します #48983 @time-and-fatetidb_server_memory_limitによる長期メモリ負荷が原因で TiDB の CPU 使用率が高くなる問題を修正しました。 #48741 @XuHuaiyuENUM型の列を結合キーとして使用した場合にクエリ結果が正しくない問題を修正 #48991 @winoros- メモリ制限を超えると、CTE を含むクエリが予期せずスタックする問題を修正 #49096 @AilinKid
- TiDBサーバーが監査ログ用のEnterpriseプラグイン使用時に大量のリソースを消費する可能性がある問題を修正 #49273 @lcwangchao
- 特定のシナリオでオプティマイザがTiFlash選択パスを DUAL テーブルに誤って変換する問題を修正 #49285 @AilinKid
UPDATEまたはDELETE文にWITH RECURSIVECTE が含まれている場合、誤った結果が生じる可能性がある問題を修正しました #48969 @winoros- IndexHashJoinオペレーターを含むクエリがメモリ使用量
tidb_mem_quota_query超えると停止する問題を修正しました #49033 @XuHuaiyu - 非厳格モード (
sql_mode = '') でINSERT実行中に切り捨てが発生し、エラーが報告される問題を修正しました #49369 @tiancaiamao - CTEクエリが再試行処理中にエラー
type assertion for CTEStorageMap failedを報告する可能性がある問題を修正 #46522 @tiancaiamao LIMITとORDER BYがネストされたUNIONクエリで無効になる可能性がある問題を修正 #49377 @AilinKidENUMまたはSET型の無効な値を解析すると、SQL文エラーが直接発生する問題を修正しました #49487 @winoros- Golangの暗黙的な型変換アルゴリズムが原因で統計構築時に発生する過剰な統計誤差の問題を修正 #49801 @qw4990
- 一部のタイムゾーンでサマータイムが正しく表示されない問題を修正 #49586 @overvenus
AUTO_ID_CACHE=1を含むテーブルが多数存在する場合に gRPC クライアントのリークを引き起こす可能性がある問題を修正しました #48869 @tiancaiamao- TiDBサーバーが正常なシャットダウン中にpanicする可能性がある問題を修正しました #36793 @bb7133
ADMIN RECOVER INDEXがERROR 1105を報告する問題を、CommonHandleを含むテーブルを処理する際に修正します。 #47687 @Defined2014ALTER TABLE t PARTITION BYを実行する際に配置ルールを指定するとERROR 8239というエラーが報告される問題を修正しました。 #48630 @mjonssINFORMATION_SCHEMA.CLUSTER_INFOのSTART_TIME列タイプが無効であるという問題を修正します #45221 @dveedenEXTRAの列タイプが無効であるためにINFORMATION_SCHEMA.COLUMNSエラーData Too Long, field len 30, data len 45が発生する問題を修正しました。 #42030 @tangentaIN (...)でINFORMATION_SCHEMA.STATEMENTS_SUMMARYで異なるプランダイジェストが発生する問題を修正 #33559 @King-DylanTIME型をYEAR型に変換する際に、返される結果にTIMEと年が混在する問題を修正しました。 #48557 @YangKeaotidb_enable_collect_execution_infoを無効にするとコプロセッサキャッシュがpanicを起こす問題を修正 #48212 @you06shuffleExecが予期せず終了した際にTiDBがクラッシュする問題を修正 #48230 @wshwsh12- 静的
CALIBRATE RESOURCEが Prometheus データに依存している問題を修正 #49174 @glorv - 日付に大きな間隔を追加した際に、誤った結果が返される問題を修正しました。修正後、無効なプレフィックスまたは文字列
trueを含む間隔はゼロとして扱われ、MySQL 8.0 と整合性が取れます。 #49227 @lcwangchao ROW関数がnull型を誤って推論し、予期しないエラーが発生する問題を修正しました #49015 @wshwsh12ILIKE関数が一部のシナリオでデータ競合を引き起こす可能性がある問題を修正しました #49677 @lcwangchaoSTREAM_AGG()が CI を正しく処理しないためにクエリ結果が正しくない問題を修正します #49902 @wshwsh12TIMEへの変換時にエンコードが失敗する問題を修正 #47346 @wshwsh12ENFORCED制約内のCHECKオプションの動作がMySQL 8.0と矛盾する問題を修正しました。 #47567 #47631 @jiyfhustCHECK制約を持つDDL文が停止する問題を修正 #47632 @jiyfhust- メモリ不足が原因でDDL文のインデックス追加が失敗する問題を修正 #47862 @GMHDBJD
ADD INDEXの実行中にクラスターをアップグレードすると、データがインデックスと不整合になる可能性がある問題を修正しました #46306 @zimulalatidb_mem_quota_queryシステム変数を更新した後にADMIN CHECKを実行するとERROR 8175が返される問題を修正 #49258 @tangentaALTER TABLE外部キーで参照される列の型を変更した際に、DECIMALの精度変更がエラーとして報告されない問題を修正しました。 #49836 @yoshikipomALTER TABLE外部キーで参照される列の型を変更する際に、INTEGERの長さの変更が誤ってエラーとして報告される問題を修正しました。 #47702 @yoshikipom- 一部のシナリオで式のインデックスが除数が0であることを検出しない問題を修正しました #50053 @lcwangchao
- TiDBノードが多数のテーブルを処理する際にOOMエラーが発生する可能性がある問題を軽減する #50077 @zimulala
- クラスターのローリング再起動中にDDLが実行状態のままになる問題を修正 #50073 @tangenta
PointGetまたはBatchPointGetを使用してパーティションテーブルのグローバルインデックスにアクセスした際に、結果が正しくない可能性がある問題を修正しました #47539 @L-maple- 生成列のインデックスが表示されるように設定されている場合、MPP プランが選択されない可能性がある問題を修正 #47766 @AilinKid
LIMITがOR型Index Mergeにプッシュされない可能性がある #48588 @AilinKid- BRインポート後に
mysql.bind_infoテーブルに重複した組み込み行が存在する可能性がある問題を修正します #46527 @qw4990 - パーティションが削除された後、パーティションテーブルの統計情報が期待どおりに更新されない問題を修正 #48182 @Rustin170506
- パーティションテーブルのグローバル統計情報の同時マージ中にエラーが返される可能性がある問題を修正 #48713 @hawkingrei
- PADDING SPACE を持つ列のインデックス範囲スキャンに
LIKE演算子が使用されている場合、クエリ結果が正しくないことがある問題を修正します #48821 @time-and-fate - 生成列がメモリ上で同時読み取りと書き込みを引き起こし、データ競合が発生する可能性がある問題を修正しました #44919 @tangenta
ANALYZE TABLE(トップN統計を収集しないことを示す)が指定されている場合でも、WITH 0 TOPNがトップ1統計を収集してしまう問題を修正しました。 #49080 @hawkingrei- 無効なオプティマイザヒントによって有効なヒントが無効になる可能性がある問題を修正 #49308 @hawkingrei
- ハッシュパーティションテーブルの統計情報が、パーティションの追加、削除、再編成、または
TRUNCATEを行った際に適切に更新されない問題を修正します。 #48235 #48233 #48226 #48231 @Rustin170506 - 自動統計更新の時間枠を設定した後でも、その時間枠外で統計が更新される可能性がある問題を修正しました #49552 @hawkingrei
- パーティションテーブルを非パーティションテーブルに変換した際に、古い統計情報が自動的に削除されない問題を修正します #49547 @Rustin170506
TRUNCATE TABLEを使用してパーティションテーブルからデータをクリアしたときに、古い統計情報が自動的に削除されない問題を修正します #49663 @Rustin170506- クエリが強制ソートを行うオプティマイザヒント(
STREAM_AGG()など)を使用し、かつ実行計画にIndexMergeが含まれている場合に、強制ソートが無効になる可能性がある問題を修正します。 #49605 @AilinKid - ヒストグラムの境界に
NULLが含まれる場合、ヒストグラム統計が読み取り可能な文字列に解析されない可能性がある問題を修正 #49823 @AilinKid GROUP_CONCAT(ORDER BY)構文を含むクエリを実行するとエラーが返される可能性がある問題を修正 #49986 @AilinKidUPDATE、DELETE、およびINSERT文が、SQL_MODEが厳密でない場合に警告ではなくオーバーフローエラーを返す問題を修正します #49137 @YangKeao- テーブルに多値インデックスと非バイナリ型文字列で構成される複合インデックスがある場合にデータを挿入できない問題を修正 #49680 @YangKeao
- 多階層にネストされた
UNIONクエリ内のLIMITが無効になる可能性がある問題を修正 #49874 @Defined2014 BETWEEN ... AND ...条件を使用してパーティションテーブルをクエリすると誤った結果が返される問題を修正 #49842 @Defined2014REPLACE INTO文でヒントが使用できない問題を修正 #34325 @YangKeao- ハッシュパーティションテーブルのクエリ時に TiDB が間違ったパーティションを選択する可能性がある問題を修正 #50044 @Defined2014
- 圧縮を有効にして MariaDB Connector/J を使用するときに発生する接続エラーを修正 #49845 @onlyacat
- TiDBがパニックを起こしてエラー
TiKV
- 破損したSSTファイルが他のTiKVノードに拡散し、TiKVがpanicする可能性がある問題を修正しました #15986 @Connor1996
- オンラインの安全でない回復がマージ中止を処理できない問題を修正 #15580 @v01dstar
- スケールアウト時に DR Auto-Sync のジョイント状態がタイムアウトする可能性がある問題を修正します #15817 @Connor1996
- Titan の
blob-run-modeオンラインで更新できない問題を修正 #15978 @tonyxuqqi - 解決済みTSが2時間ブロックされる可能性がある問題を修正#11847 #15520 #39130 @overvenus
notLeaderまたはregionNotFoundに遭遇した際に Flashback が停止する可能性がある問題を修正しました #15712 @HuSharp- TiKV の実行が非常に遅い場合、リージョンのマージ後にpanicする可能性がある問題を修正 #16111 @overvenus
- TiKVがGCが期限切れロックをスキャンする際にメモリ内の悲観的ロックを読み取れない問題を修正 #15066 @cfzjywxk
- Titanモニタリングにおけるブロブファイルサイズが正しくない問題を修正 #15971 @Connor1996
- TiCDC を使用して大きなテーブルをレプリケートすると TiKV が OOM になる可能性がある問題を修正 #16035 @overvenus
- TiDBとTiKVが
DECIMAL算術乗算の切り捨て処理時に一貫性のない結果を生成する可能性がある問題を修正 #16268 @solotzg cast_duration_as_timeが誤った結果を返す可能性がある問題を修正 #16211 @gengliqi- TiKV がブラジルとエジプトのタイムゾーンを誤って変換する問題を修正 #16220 @overvenus
- gRPCスレッドが
is_shutdownをチェックしているときにTiKVがpanicする可能性がある問題を修正 #16236 @pingyu
PD
- PD の etcd ヘルスチェックで期限切れのアドレスが削除されない問題を修正 #7226 @iosmanthus
- PDリーダーが転送され、新しいリーダーとPDクライアントの間にネットワーク分断が発生した場合、PDクライアントがリーダー情報を更新できない問題を修正しました #7416 @CabinfeverB
- Gin Web Frameworkのバージョンをv1.8.1からv1.9.1にアップグレードすることで、いくつかのセキュリティ問題を修正しました。 #7438 @niubell
- レプリカ数が要件を満たさない場合に孤立ピアが削除される問題を修正 #7584 @bufferflies
TiFlash
- TiFlashがクエリ中にメモリ制限に遭遇した際のメモリリークの問題を修正 #8447 @JinheLin
FLASHBACK DATABASEを実行後もTiFlashレプリカのデータがガベージコレクションされてしまう問題を修正 #8450 @JaySon-Huang- クエリの遅延によりメモリ使用量が大幅に増加する問題を修正 #8564 @JinheLin
RECOVER TABLEおよびFLASHBACK TABLETiFlashCREATE TABLEDROP TABLEを介して一部の TiFlash レプリカデータを復元できない問題 #1664 @JaySon-HuangColumnRef in (Literal, Func...)のようなフィルタリング条件を指定してクエリを実行すると、クエリ結果が正しくなくなる問題を修正 #8631 @Lloyd-Pottiger- DDL の同時実行中にTiFlash で競合が発生した場合のTiFlash panic問題を修正 #8578 @JaySon-Huang
- TiFlash が非集約ストレージおよびコンピューティングアーキテクチャの下でオブジェクトストレージデータの GC 所有者を選択できない場合がある問題を修正 #8519 @JaySon-Huang
lowerUTF8およびupperUTF8関数で、大文字と小文字が異なるバイトを占有することを許可しない問題を修正 #8484 @gengliqi- TiFlashが
ENUMの値が0の場合にENUMを正しく処理しない問題を修正 #8311 @solotzg INET_NTOA()式の互換性の問題を修正 #8211 @solotzg- ストリーム読み取り中に複数のパーティションテーブルをスキャンする際に発生する可能性のあるメモリ不足(OOM)問題を修正 #8505 @gengliqi
- 短いクエリを実行すると過剰な情報ログが正常に出力される問題を修正 #8592 @windtalker
- TiFlashが停止時にクラッシュする可能性がある問題を修正 #8550 @guo-shaoge
- 定数文字列パラメーターを含む
GREATESTまたはLEAST関数で発生する可能性のあるランダムな無効なメモリアクセスの問題を修正します #8604 @windtalker
ツール
Backup & Restore (BR)
- BRが外部ストレージファイルに対して不正なURIを生成する問題を修正 #48452 @3AceShowHand
- ログバックアップタスクは開始できるものの、タスク初期化中にPDへの接続に失敗すると正しく動作しない問題を修正 #16056 @YuJuncen
- ログバックアップタスクが起動後にメモリリークを起こして正常に実行されない可能性がある問題を修正 #16070 @YuJuncen
- PITR 処理中にシステムテーブル
mysql.gc_delete_rangeにデータを挿入するとエラーが返される問題を修正しました。 #49346 @Leavrth - 古いバージョンのバックアップからデータを復元すると、
Unsupported collationエラーが報告される問題を修正 #49466 @3pointer - 特定のシナリオでスナップショットを介してユーザーテーブルが復元された後、権限がタイムリーに更新されない問題を修正 #49394 @Leavrth
TiCDC
WHERE句が、特定のシナリオでDELETE文を複製する際に主キーを条件として使用しない問題を修正しました #9812 @asddongmen- TiCDCサーバーがオブジェクトストレージサービスへのデータ複製時にpanicする可能性がある問題を修正しました #10137 @sdojjy
kv-clientの初期化中の潜在的なデータ競合の問題を修正 #10095 @3AceShowHand- TiCDCが特定の特殊なシナリオで誤ってTiKVとの接続を閉じる問題を修正 #10239 @hicqu
- TiCDCサーバーが損失のあるDDL文を実行する際にpanicする可能性がある問題を修正しました(アップストリーム #9739 @hicqu
- TiCDCがデータを下流のMySQLに複製する際に
checkpoint-tsが停止する可能性がある問題を修正しました #10334 @zhangjinpeng87
TiDB Data Migration (DM)
貢献者
TiDBコミュニティの以下の貢献者の皆様に感謝申し上げます。
- 0o001 (初回貢献者)
- bagechengzi (初回貢献者)
- feran-morgan-pingcap (初回貢献者)
- highpon
- jiyfhust
- L-maple
- lkshminarayanan (初回貢献者)
- lyang24 (初回貢献者)
- mittalrishabh
- morgo
- nkg- (初回貢献者)
- onlyacat
- shawn0915
- Smityz
- szpnygo (初回貢献者)
- ub-3 (初回貢献者)
- xiaoyawei (初回貢献者)
- yorkhellen
- yoshikipom (初回貢献者)
- Zheaoli