TiDB 7.1.0 リリースノート
発売日:2023年5月31日
TiDB バージョン: 7.1.0
クイックアクセス: クイックスタート | 本番環境へのデプロイ
TiDB 7.1.0 は長期サポートリリース (LTS) です。
以前の LTS 6.5.0 と比較して、7.1.0 には、 6.6.0-DMR 、 7.0.0-DMRでリリースされた新機能、改善、バグ修正が含まれているだけでなく、次の主要な機能と改善も導入されています。
機能の詳細
パフォーマンス
パーティション化されたRaft KVストレージエンジンの強化 (実験的) #11515 #12842 @busyjay @tonyxuqqi @tabokie @bufferflies @5kbpers @SpadeA-Tang @nolouch
TiDB v6.6.0では、実験的機能としてPartitioned Raft KVストレージエンジンが導入されました。このストレージエンジンは、複数のRocksDBインスタンスを使用してTiKVリージョンデータを保存し、各リージョンのデータは独立したRocksDBインスタンスに独立して保存されます。この新しいストレージエンジンは、RocksDBインスタンス内のファイルの数とレベルをより適切に制御し、リージョン間のデータ操作の物理的な分離を実現し、より多くのデータの安定した管理をサポートします。従来のTiKVストレージエンジンと比較して、Partitioned Raft KVストレージエンジンを使用すると、同じハードウェア条件で読み取りと書き込みが混在するシナリオにおいて、書き込みスループットが約2倍になり、エラスティックスケーリング時間が約4/5短縮されます。
TiDB v7.1.0 では、Partitioned Raft KVストレージエンジンがTiDB Lightning、 BR、TiCDC などのツールをサポートしています。
現在、この機能は実験的であり、本番環境での使用は推奨されません。このエンジンは新規に作成されたクラスターでのみ使用でき、元のTiKVストレージエンジンから直接アップグレードすることはできません。
詳細についてはドキュメントを参照してください。
TiFlashは遅延マテリアライゼーション(GA) をサポートします #5829 @Lloyd-Pottiger
v7.0.0 では、クエリパフォーマンスを最適化するための実験的機能として、 TiFlashに遅延マテリアライゼーションが導入されました。この機能はデフォルトでは無効になっています (
tidb_opt_enable_late_materializationシステム変数はデフォルトでOFFに設定されます)。フィルタ条件 (WHERE句) を含むSELECT文を処理する場合、 TiFlash はクエリに必要な列からすべてのデータを読み取り、クエリ条件に基づいてデータをフィルタリングおよび集計します。遅延マテリアライゼーションを有効にすると、TiDB はフィルタ条件の一部を TableScan オペレーターにプッシュダウンすることをサポートします。つまり、 TiFlash は最初に TableScan オペレーターにプッシュダウンされるフィルタ条件に関連する列データをスキャンし、条件を満たす行をフィルタリングしてから、これらの行の他の列データをスキャンしてさらに計算を行うため、IO スキャンとデータ処理の計算が削減されます。バージョン7.1.0以降、 TiFlashの遅延マテリアライゼーション機能が一般提供され、デフォルトで有効化されています(システム変数
tidb_opt_enable_late_materializationはデフォルトでONに設定されています)。TiDBオプティマイザは、クエリの統計情報とフィルター条件に基づいて、TableScanオペレーターにプッシュダウンするフィルターを決定します。詳細についてはドキュメントを参照してください。
TiFlashは、ネットワーク伝送のオーバーヘッドに応じてMPP Joinアルゴリズムを自動的に選択することをサポートしています#7084 @solotzg
TiFlash MPPモードは複数の結合アルゴリズムをサポートしています。v7.1.0より前のバージョンでは、TiDBは
tidb_broadcast_join_threshold_countとtidb_broadcast_join_threshold_size変数と実際のデータ量に基づいて、MPPモードでブロードキャストハッシュ結合アルゴリズムを使用するかどうかを判断します。v7.1.0 では、TiDB に
tidb_prefer_broadcast_join_by_exchange_data_size変数が導入されました。この変数は、ネットワーク伝送の最小オーバーヘッドに基づいて MPP Join アルゴリズムを選択するかどうかを制御し、この変数はデフォルトで無効になっています。この変数をONに設定すると、デフォルトのアルゴリズム選択方法が v7.1.0 以前と同じままであることを示します。この変数を有効にすると、tidb_broadcast_join_threshold_countとtidb_broadcast_join_threshold_size変数を手動で調整する必要がなくなります(この時点では両方の変数は有効になりません)。TiDB は、異なる Join アルゴリズムによるネットワーク伝送のしきい値を自動的に推定し、全体的なオーバーヘッドが最小のアルゴリズムを選択します。これにより、ネットワークトラフィックが削減され、MPP クエリのパフォーマンスが向上します。詳細についてはドキュメントを参照してください。
読み取りホットスポットを軽減するために負荷ベースのレプリカ読み取りをサポートする#14151 @sticnarf @you06
読み取りホットスポットが発生すると、ホットスポット TiKV ノードは読み取り要求を時間内に処理できず、読み取り要求がキューイングされます。ただし、この時点ですべての TiKV リソースが使い果たされるわけではありません。レイテンシーを短縮するために、TiDB v7.1.0 では負荷ベースのレプリカ読み取り機能が導入されました。この機能により、TiDB はホットスポット TiKV ノードでキューイングすることなく、他の TiKV ノードからデータを読み取ることができます。読み取り要求のキューの長さは、
tidb_load_based_replica_read_thresholdシステム変数を使用して制御できます。リーダーノードの推定キュー時間がこのしきい値を超えると、TiDB はフォロワーノードからのデータの読み取りを優先します。この機能により、読み取りホットスポットが発生すると、読み取りホットスポットを分散させない場合と比較して、読み取りスループットが 70% ~ 200% 向上します。詳細についてはドキュメントを参照してください。
非プリペアドステートメントの実行計画をキャッシュする機能の強化(実験的) #36598 @qw4990
TiDB v7.0.0では、同時実行OLTPの処理能力を向上させるための実験的機能として、非プリペアドプランキャッシュが導入されました。v7.1.0では、この機能が強化され、より多くのSQL文のキャッシュがサポートされるようになりました。
メモリ使用率を向上させるため、TiDB v7.1.0 では、非プリペアドプランキャッシュとプリペアドプランキャッシュのキャッシュプールを統合します。キャッシュサイズはシステム変数
tidb_session_plan_cache_sizeを使用して制御できます。システム変数tidb_prepared_plan_cache_sizeとtidb_non_prepared_plan_cache_sizeは非推奨です。前方互換性を維持するため、以前のバージョンからv7.1.0以降のバージョンにアップグレードする場合、キャッシュサイズ
tidb_session_plan_cache_sizeはtidb_prepared_plan_cache_sizeと同じ値のままになり、tidb_enable_non_prepared_plan_cacheアップグレード前の設定のままになります。十分なパフォーマンステストを行った後、tidb_enable_non_prepared_plan_cacheを使用して非プリペアドプランキャッシュを有効化できます。新規に作成されたクラスターでは、非プリペアドプランキャッシュはデフォルトで有効化されています。非プリペアドプランキャッシュは、デフォルトではDML文をサポートしません。この制限を解除するには、システム変数
tidb_enable_non_prepared_plan_cache_for_dmlをONに設定してください。詳細についてはドキュメントを参照してください。
TiDB 分散実行フレームワーク (DXF) のサポート (実験的) #41495 @benjamin2037
TiDB v7.1.0より前では、DDLオーナーとして機能し、同時にDDLタスクを実行できるのは1つのTiDBノードのみでした。TiDB v7.1.0以降の新しいDXFでは、複数のTiDBノードが同じDDLタスクを並列に実行できるため、TiDBクラスターのリソースをより有効に活用し、DDLのパフォーマンスを大幅に向上させることができます。さらに、TiDBノードを追加することで、DDLのパフォーマンスを線形的に向上させることができます。この機能は現在実験的であり、
ADD INDEX操作のみをサポートしていることにご注意ください。DXFを使用するには、
tidb_enable_dist_taskの値をONに設定します。SET GLOBAL tidb_enable_dist_task = ON;詳細についてはドキュメントを参照してください。
信頼性
リソース制御が一般提供開始 (GA) #38825 @nolouch @BornChanger @glorv @tiancaiamao @Connor1996 @JmPotato @hnes @CabinfeverB @HuSharp
TiDBは、リソースグループに基づくリソース制御機能を強化し、v7.1.0でGAとなりました。この機能により、TiDBクラスターのリソース利用効率とパフォーマンスが大幅に向上します。リソース制御機能の導入は、TiDBにとって画期的な出来事です。分散データベースクラスターを複数の論理ユニットに分割し、異なるデータベースユーザーを対応するリソースグループにマッピングし、必要に応じて各リソースグループのクォータを設定できます。クラスターリソースが制限されている場合、同じリソースグループ内のセッションで使用されるすべてのリソースはクォータに制限されます。これにより、あるリソースグループが過剰に消費されても、他のリソースグループのセッションには影響がありません。
この機能により、異なるシステムの複数の中小規模アプリケーションを単一のTiDBクラスタに統合できます。アプリケーションのワークロードが増加しても、他のアプリケーションの正常な動作に影響を与えることはありません。システムのワークロードが低い場合は、設定されたクォータを超えても、高負荷のアプリケーションに必要なシステムリソースを割り当てることができるため、リソースを最大限に活用できます。さらに、リソース制御機能を合理的に活用することで、クラスタ数を削減し、運用・保守の難易度を軽減し、管理コストを削減できます。
TiDB v7.1.0では、実際のワークロードやハードウェア構成に基づいてシステム容量を見積もる機能が導入されました。この見積機能は、キャパシティプランニングのためのより正確な基準を提供し、エンタープライズレベルのシナリオにおける安定性のニーズを満たすためにTiDBのリソース割り当てをより適切に管理するのに役立ちます。
ユーザーエクスペリエンスを向上させるために、TiDB Dashboardはリソースマネージャーページを提供します。このページでは、リソースグループの構成を表示し、クラスターの容量を視覚的に見積もることができるため、適切なリソース割り当てが容易になります。
詳細についてはドキュメントを参照してください。
フォールトトレランスと自動リカバリ機能を向上させるために、高速オンラインDDLのチェックポイントメカニズムをサポートします#42164 @tangenta
TiDB v7.1.0では、 高速オンラインDDLのチェックポイント機構が導入され、Fast Online DDLのフォールトトレランスと自動リカバリ機能が大幅に向上しました。障害によりTiDBオーナーノードが再起動または変更された場合でも、TiDBは定期的に自動更新されるチェックポイントから進捗状況をリカバリできるため、DDL実行の安定性と効率性が向上します。
詳細についてはドキュメントを参照してください。
バックアップと復元はチェックポイント復元をサポートします #42339 @Leavrth
スナップショットの復元やログの復元は、ディスク枯渇やノードクラッシュなどの回復可能なエラーにより中断される可能性があります。TiDB v7.1.0より前のバージョンでは、エラーに対処した後でも中断前の復元の進行状況が無効になり、復元を最初からやり直す必要がありました。大規模クラスターでは、これはかなりの追加コストが発生します。
TiDB v7.1.0以降、バックアップ&リストア(BR)にチェックポイントリストア機能が導入され、中断されたリストアを再開できるようになりました。この機能により、中断されたリストアのリカバリ進行状況の大部分を保持できます。
詳細についてはドキュメントを参照してください。
統計のロード戦略を最適化する #42160 @xuyifangreeneyes
TiDB v7.1.0では、軽量統計初期化機能が実験的機能として導入されました。軽量統計初期化により、起動時にロードする必要がある統計情報の数が大幅に削減され、統計情報のロード速度が向上します。この機能により、複雑なランタイム環境におけるTiDBの安定性が向上し、TiDBノードの再起動時にサービス全体への影響が軽減されます。この機能を有効にするには、パラメータ
lite-init-stats~trueを設定します。TiDBの起動時、初期統計情報が完全にロードされる前に実行されるSQL文は、最適ではない実行計画を持つ可能性があり、パフォーマンスの問題を引き起こす可能性があります。このような問題を回避するために、TiDB v7.1.0では設定パラメータ
force-init-statsが導入されました。このオプションを使用すると、起動時に統計情報の初期化が完了した後にのみTiDBがサービスを提供するかどうかを制御できます。このパラメータはデフォルトで無効になっています。詳細についてはドキュメントを参照してください。
TiCDCは、単一行データのデータ整合性検証機能をサポートしています#8718 #42747 @3AceShowHand @zyguan
v7.1.0以降、TiCDCはデータ整合性検証機能を導入しました。この機能は、チェックサムアルゴリズムを用いて単一行データの整合性を検証します。この機能は、TiDBからデータを書き込み、TiCDCを介してレプリケーションし、Kafkaクラスターに書き込むプロセスでエラーが発生していないかどうかを検証するのに役立ちます。データ整合性検証機能は、Kafkaをダウンストリームとして使用するチェンジフィードのみをサポートし、現在はAvroプロトコルをサポートしています。
詳細についてはドキュメントを参照してください。
TiCDCのDDLレプリケーション操作を最適化します #8686 @hi-rustin
v7.1.0より前のバージョンでは、大規模なテーブルのすべての行に影響を与えるDDL操作(列の追加や削除など)を実行すると、TiCDCのレプリケーションレイテンシーが大幅に増加していました。v7.1.0以降、TiCDCはこのレプリケーション操作を最適化し、DDL操作が下流のレイテンシーに与える影響を軽減します。
詳細についてはドキュメントを参照してください。
TiB レベルのデータをインポートする際のTiDB Lightningの安定性を向上#43510 #43657 @D3Hunter @lance6716
v7.1.0 以降、 TiDB Lightning には、TiB レベルのデータをインポートする際の安定性を向上させるために 4つの設定項目が追加されました。
tikv-importer.region-split-batch-sizeバッチでリージョンを分割する際のリージョンの数を制御します。デフォルト値は4096です。tikv-importer.region-split-concurrencyリージョン分割時の同時実行を制御します。デフォルト値は CPU コアの数です。tikv-importer.region-check-backoff-limit、分割および分散処理後にリージョンがオンラインになるまでの再試行回数を制御します。デフォルト値は1800で、最大再試行間隔は 2秒です。再試行の間にいずれかのリージョンがオンラインになった場合、再試行回数は増加しません。tikv-importer.pause-pd-scheduler-scopeTiDB Lightning がPD スケジューリングを一時停止する範囲を制御します。値のオプションは"table"と"global"です。デフォルト値は"table"です。v6.1.0 より前のバージョンの TiDB では、データインポート中にグローバルスケジューリングを一時停止する"global"オプションのみを設定できます。v6.1.0 以降では、ターゲットテーブルデータが格納されているリージョンのスケジューリングのみを一時停止する"table"オプションがサポートされています。データ量が多いシナリオでは、安定性を向上させるために、この設定項目を"global"に設定することをお勧めします。詳細についてはドキュメントを参照してください。
SQL
INSERT INTO SELECT文を使用したTiFlashクエリ結果の保存をサポート (GA) #37515 @gengliqiTiDB v6.5.0以降、
INSERT INTO SELECT文のSELECTの句(分析クエリ)をTiFlashにプッシュダウンできるようになりました。これにより、 TiFlashクエリの結果をINSERT INTOの句で指定されたTiDBテーブルに簡単に保存し、さらに分析することができます。これは、結果のキャッシュ(つまり、結果のマテリアライゼーション)として機能します。この機能はバージョン7.1.0で一般公開されています。
INSERT INTO SELECTのSELECT句の実行中、オプティマイザは、 SQLモードとTiFlashレプリカのコスト見積もりに基づいて、クエリをTiFlashにプッシュダウンするかどうかをインテリジェントに決定できます。そのため、実験的段階で導入されたtidb_enable_tiflash_read_for_write_stmtシステム変数は非推奨となりました。TiFlashのINSERT INTO SELECT文の計算規則はSTRICT SQL Mode要件を満たしていないため、TiDBは、現在のセッションのSQLモードが厳密でない場合にのみ、INSERT INTO SELECT文のSELECT句をTiFlashにプッシュダウンすることを許可します。つまり、sql_mode値にSTRICT_TRANS_TABLESとSTRICT_ALL_TABLESが含まれません。詳細についてはドキュメントを参照してください。
MySQL互換の多値インデックスが一般提供(GA)される#39592 @xiongjiwei @qw4990 @YangKeao
JSON列内の配列の値をフィルタリングすることは一般的な操作ですが、通常のインデックスではこのような操作を高速化できません。配列に多値インデックスを作成すると、フィルタリングのパフォーマンスが大幅に向上します。JSON列の配列に多値インデックスがある場合、
MEMBER OF()、JSON_CONTAINS()、またはJSON_OVERLAPS()で検索条件をフィルタリングするために多値インデックスを使用できます。これにより、 I/O消費量が削減され、操作速度が向上します。バージョン7.1.0では、多値インデックス機能が一般提供(GA)されました。より包括的なデータ型をサポートし、TiDBツールとの互換性も備えています。多値インデックスを使用することで、本番環境におけるJSON配列の検索操作を高速化できます。
詳細についてはドキュメントを参照してください。
ハッシュおよびキーパーティションテーブルのパーティション管理を改善#42728 @mjonss
v7.1.0より前では、TiDBのハッシュおよびキーパーティションテーブルは、パーティション管理ステートメント
TRUNCATE PARTITIONをサポートしていました。v7.1.0以降では、ハッシュおよびキーパーティションテーブルは、パーティション管理ステートメントADD PARTITIONおよびCOALESCE PARTITIONもサポートするようになりました。そのため、必要に応じてハッシュおよびキーパーティションテーブルのパーティション数を柔軟に調整できます。例えば、パーティション管理ステートメントADD PARTITIONでパーティション数を増やしたり、パーティション管理ステートメントCOALESCE PARTITIONでパーティション数を減らしたりすることができます。詳細についてはドキュメントを参照してください。
範囲INTERVALパーティションの構文が一般公開(GA) になります #35683 @mjonss
バージョン6.3.0で導入されたRange INTERVALパーティショニングの構文がGAになりました。この構文を使用すると、すべてのパーティションを列挙することなく、任意の間隔でRangeパーティショニングを定義できるため、RangeパーティショニングのDDL文の長さが大幅に短縮されます。この構文は、従来のRangeパーティショニングの構文と同等です。
詳細についてはドキュメントを参照してください。
生成列は一般公開(GA)されます @bb7133
生成列はデータベースにとって貴重な機能です。テーブル作成時に、列の値をユーザーが明示的に挿入または更新するのではなく、テーブル内の他の列の値に基づいて計算するように定義できます。この生成列は、仮想列または保存列のいずれかです。TiDBは以前のバージョンからMySQL互換の生成列をサポートしており、この機能はv7.1.0でGAになります。
生成列を使用すると、TiDBのMySQL互換性が向上し、MySQLからの移行プロセスが簡素化されます。また、データメンテナンスの複雑さが軽減され、データの一貫性とクエリ効率が向上します。
詳細についてはドキュメントを参照してください。
DB操作
DDL 操作を手動でキャンセルせずに、スムーズなクラスタ アップグレードをサポート (実験的) #39751 @zimulala
TiDB v7.1.0 より前のバージョンでは、クラスターをアップグレードするには、アップグレード前に実行中またはキューに入れられた DDL タスクを手動でキャンセルし、アップグレード後に再度追加する必要があります。
よりスムーズなアップグレードを実現するために、TiDB v7.1.0 では DDL タスクの自動一時停止と再開をサポートしています。v7.1.0 以降では、事前に DDL タスクを手動でキャンセルすることなく、クラスターをアップグレードできます。TiDB は、アップグレード前に実行中またはキューに登録されているユーザー DDL タスクを自動的に一時停止し、ローリングアップグレード後にこれらのタスクを再開します。これにより、TiDB クラスターのアップグレードが容易になります。
詳細についてはドキュメントを参照してください。
可観測性
オプティマイザ診断情報を強化 #43122 @time-and-fate
SQLパフォーマンス診断では、十分な情報を取得することが鍵となります。TiDB v7.1.0では、様々な診断ツールにオプティマイザ実行時情報が追加され、実行計画の選択方法に関するより詳細な情報を提供し、SQLパフォーマンスの問題のトラブルシューティングを支援します。新しい情報には以下が含まれます。
PLAN REPLAYERの出力はdebug_trace.json。EXPLAINの出力におけるoperator info部分的な統計詳細。スロークエリの
Statsフィールドの部分的な統計詳細。詳細については、
PLAN REPLAYERを使用してクラスターの現場情報を保存および復元します 、EXPLAINウォークスルー 、 スロークエリを特定するを参照してください。
セキュリティ
TiFlashシステムテーブル情報のクエリに使用されるインターフェイスを置き換えます#6941 @flowbehappy
v7.1.0 以降、TiDB の
INFORMATION_SCHEMA.TIFLASH_TABLESおよびINFORMATION_SCHEMA.TIFLASH_SEGMENTSシステムテーブルのクエリサービスを提供する際に、 TiFlash はHTTP ポートではなく gRPC ポートを使用するようになりました。これにより、HTTP サービスのセキュリティリスクが回避されます。v7.1.0 以降、TiDB は LDAP 認証をサポートし、
authentication_ldap_saslとauthentication_ldap_simple2つの認証プラグインを提供します。詳細についてはドキュメントを参照してください。
データベース監査機能の強化(Enterprise Edition)
v7.1.0 では、TiDB Enterprise Edition でデータベース監査機能が強化され、その機能が大幅に拡張され、ユーザーエクスペリエンスが向上して、企業のデータベース セキュリティ コンプライアンスのニーズに対応できるようになりました。
より詳細な監査イベント定義とよりきめ細かな監査設定のために、「フィルター」と「ルール」の概念を導入します。
JSON 形式でのルールの定義をサポートし、よりユーザーフレンドリーな構成方法を提供します。
自動ログローテーションとスペース管理関数を追加し、保持時間とログサイズの 2つの次元でのログローテーションの構成をサポートします。
監査ログをTEXTと JSON 形式の両方で出力できるようにすることで、サードパーティツールとの統合が容易になります。
監査ログの秘匿化をサポートします。セキュリティ強化のため、すべてのリテラルを置き換えることができます。
データベース監査は、TiDB Enterprise Editionの重要な機能です。この機能は、企業のデータセキュリティとコンプライアンスを確保するための強力な監視・監査ツールを提供します。企業の管理者は、データベース操作の発生源と影響を追跡し、不正なデータ盗難や改ざんを防止することができます。さらに、データベース監査は、企業が様々な規制やコンプライアンス要件を満たし、法的および倫理的コンプライアンスを確保するのにも役立ちます。この機能は、企業の情報セキュリティにとって重要なアプリケーション価値を持っています。
詳細については、 ユーザーガイドご覧ください。この機能はTiDB Enterprise Editionに含まれています。この機能を使用するには、 TiDB Enterpriseページに移動してTiDB Enterprise Editionを入手してください。
互換性の変更
動作の変更
セキュリティを向上させるために、 TiFlashはHTTPサービスポート(デフォルト
8123)を廃止し、代わりにgRPCポートを使用します。TiFlash をv7.1.0 にアップグレードした場合、TiDB を v7.1.0 にアップグレードする際に、TiDB はTiFlashシステムテーブル (
INFORMATION_SCHEMA.TIFLASH_TABLESとINFORMATION_SCHEMA.TIFLASH_SEGMENTS) を読み取ることができません。TiDB バージョン v6.2.0 から v7.0.0 のTiDB Lightning は、TiDB クラスターのバージョンに基づいてグローバルスケジューリングを一時停止するかどうかを決定します。TiDB クラスター バージョン >= v6.1.0 の場合、スケジュールはターゲットテーブルデータを格納するリージョンに対してのみ一時停止され、ターゲットテーブルのインポートが完了すると再開されます。その他のバージョンの場合、 TiDB Lightning はグローバルスケジューリングを一時停止します。TiDB v7.1.0 以降では、
pause-pd-scheduler-scopeを設定することで、グローバルスケジューリングを一時停止するかどうかを制御できます。デフォルトでは、 TiDB Lightning はターゲットテーブルデータを格納するリージョンのスケジュールを一時停止します。ターゲットクラスターのバージョンが v6.1.0 より前の場合、エラーが発生します。この場合、パラメータの値を"global"に変更して再試行できます。TiDB v7.1.0で
FLASHBACK CLUSTER TO TIMESTAMPを使用すると、FLASHBACK操作が完了した後も、一部のリージョンがFLASHBACKプロセスに残る可能性があります。v7.1.0ではこの機能の使用を避けることをお勧めします。詳細については、問題を参照してください。この問題が発生した場合は、機能TiDBスナップショットのバックアップと復元を使用してデータを復元できます。 #44292
システム変数
コンフィグレーションファイルのパラメータ
改善点
TiDB
- 対応する列の個別値の数を、
SHOW INDEX結果の Cardinality 列に表示します。 #42227 @winoros - TTLスキャンクエリがTiKVブロックキャッシュに影響を与えないようにするには
SQL_NO_CACHEを使用します。 #43206 @lcwangchao MAX_EXECUTION_TIMEに関連するエラーメッセージを改善し、MySQL と互換性を持たせます #43031 @dveeden- IndexLookUp のパーティションテーブルでの MergeSort オペレーターの使用をサポート #26166 @Defined2014
- MySQL と互換性を持たせるために
caching_sha2_password拡張します #43576 @asjdf
- 対応する列の個別値の数を、
TiKV
- パーティション化されたRaft KV を使用する場合、分割操作による書き込み QPS への影響を軽減します。 #14447 @SpadeA-Tang
- パーティション化されたRaft KV を使用するときにスナップショットが占めるスペースを最適化します #14581 @bufferflies
- TiKV でリクエストの処理の各段階のより詳細な時間情報を提供します #12362 @cfzjywxk
- ログバックアップで PD をメタストアとして使用します #13867 @YuJuncen
PD
- スナップショットの実行内容に基づいてストア制限のサイズを自動調整するコントローラを追加します。このコントローラを有効にするには、
store-limit-versionをv2(実験的)に設定してください。有効にすると、スケールインまたはスケールアウトの速度を制御するためにstore limit設定を手動で調整する必要がなくなります。 #6147 @bufferflies - ストレージエンジンが raft-kv2 の場合、ホットスポット スケジューラによって不安定な負荷のリージョンが頻繁にスケジュールされるのを避けるために、履歴負荷情報を追加します。 #6297 @bufferflies
- リーダーのヘルスチェックメカニズムを追加します。etcdリーダーが配置されているPDサーバーがリーダーとして選出できない場合、PDはetcdリーダーをアクティブに切り替え、PDリーダーが利用可能であることを確認します。 #6403 @nolouch
- スナップショットの実行内容に基づいてストア制限のサイズを自動調整するコントローラを追加します。このコントローラを有効にするには、
TiFlash
- 分散ストレージおよびコンピューティングアーキテクチャにおけるTiFlash のパフォーマンスと安定性を向上#6882 @JaySon-Huang @breezewish @JinheLin
- ビルド側として小さいテーブルを選択することで、セミ結合またはアンチセミ結合でのクエリパフォーマンスの最適化をサポートします。 #7280 @yibin87
- デフォルト設定でBRおよびTiDB LightningからTiFlashへのデータインポートのパフォーマンスを向上 #7272 @breezewish
ツール
Backup & Restore (BR)
TiCDC
- オブジェクトストレージにデータを複製するシナリオでDDLイベントが発生したときにディレクトリ構造を最適化する#8890 @CharlesCheung96
- TiCDC レプリケーションタスクが失敗したときにアップストリームの GC TLS を設定する方法を最適化します#8403 @charleszheng44
- Kafka-on-Pulsar ダウンストリームへのデータ複製をサポート#8892 @Rustin170506
- Kafka にデータを複製する際に更新が発生した後に変更された列のみを複製するためのオープンプロトコルプロトコルの使用をサポートします。 #8706 @sdojjy
- 下流の障害やその他のシナリオにおける TiCDC のエラー処理を最適化する#8657 @hicqu
- TLS を有効にするシナリオで認証アルゴリズムを設定するかどうかを制御する設定項目
insecure-skip-verifyを追加します。 #8867 @Rustin170506
TiDB Lightning
バグ修正
TiDB
- パーティションを再編成した後、手動で
ANALYZE TABLEを実行するプロンプトが表示されない問題を修正しました。 #42183 @CbcWestwolf DROP TABLE操作が実行されているときにADMIN SHOW DDL JOBS結果にテーブル名が表示されない問題を修正#42268 @tiancaiamao- Grafana モニタリング パネルで
Ignore Event Per MinuteとStats Cache LRU Costチャートが正常に表示されないことがある問題を修正しました #42562 @pingandb INFORMATION_SCHEMA.COLUMNSテーブルをクエリするときにORDINAL_POSITION列が誤った結果を返す問題を修正しました #43379 @bb7133- キャッシュテーブルに新しい列が追加された後、列のデフォルト値ではなく値が
NULLになる問題を修正しました。 #42928 @lqs - 述語をプッシュダウンするときに CTE 結果が正しくない問題を修正しました #43645 @winoros
- 多数のパーティションとTiFlashレプリカを持つパーティションテーブルに対して
TRUNCATE TABLEを実行するときに書き込み競合によって発生する DDL 再試行の問題を修正しました。 #42940 @mjonss - パーティションテーブル の作成時に
SUBPARTITIONを使用すると警告が表示されない問題を修正 #41200 @mjonss #41198 - 生成列の値オーバーフローの問題を処理する際の MySQL との非互換性の問題を修正しました #40066 @jiyfhust
REORGANIZE PARTITION他の DDL 操作と同時に実行できない問題を修正 #42442 @bb7133- DDL でパーティション再編成タスクをキャンセルすると、後続の DDL 操作が失敗する可能性がある問題を修正しました#42448 @lcwangchao
- 特定の条件下で削除操作のアサーションが正しくない問題を修正#42426 @tiancaiamao
- cgroup 情報の読み取りエラーにより、TiDBサーバーが起動できない問題を修正しました。エラーメッセージは「can't read file memory.stat from cgroup v1: open /sys/memory.stat no such file or directory」です#42659 @hawkingrei
- グローバルインデックスを持つパーティションテーブルの行のパーティションキーを更新するときに発生する
Duplicate Key問題を修正しました #42312 @L-maple - TTLモニタリングパネルの
Scan Worker Time By Phaseチャートにデータが表示されない問題を修正しました #42515 @lcwangchao - グローバルインデックスを持つパーティションテーブルに対する一部のクエリが誤った結果を返す問題を修正#41991 #42065 @L-maple
- パーティションテーブルの再編成プロセス中に一部のエラーログが表示される問題を修正しました #42180 @mjonss
INFORMATION_SCHEMA.DDL_JOBSテーブルのQUERY列のデータ長が列定義を超える可能性がある問題を修正しました #42440 @tiancaiamaoINFORMATION_SCHEMA.CLUSTER_HARDWAREテーブルでコンテナに誤った値が表示される可能性がある問題を修正しました #42851 @hawkingreiORDER BY+LIMITを使用してパーティションテーブルをクエリすると誤った結果が返される問題を修正しました #43158 @Defined2014- 取り込み方法を使用して複数の DDL タスクが同時に実行される問題を修正しました #42903 @tangenta
Limitを使用してパーティションテーブルをクエリしたときに返される誤った値を修正しました #24636- IPv6環境で誤ったTiDBアドレスが表示される問題を修正#43260 @nexustar
- システム変数
tidb_enable_tiflash_read_for_write_stmtとtidb_enable_exchange_partitionに誤った値が表示される問題を修正しました #43281 @gengliqi tidb_scatter_regionを有効にすると、パーティションが切り捨てられた後にリージョンが自動的に分割されない問題を修正しました#43174 #43028 @jiyfhust- 生成列を持つテーブルにチェックを追加し、これらの列でサポートされていない DDL 操作のエラーを報告します#38988 #24321 @tiancaiamao
- 特定の型変換エラーでエラーメッセージが正しく表示されない問題を修正 #41730 @hawkingrei
- TiDBノードが正常にシャットダウンした後、このノードでトリガーされたDDLタスクがキャンセルされる問題を修正しました#43854 @zimulala
- PDメンバーのアドレスが変更されると、
AUTO_INCREMENT列のIDの割り当てが長時間ブロックされる問題を修正#42643 @tiancaiamao - DDL実行中に
GC lifetime is shorter than transaction durationエラーを報告する問題を修正#40074 @tangenta - メタデータロックが予期せずDDL実行をブロックする問題を修正#43755 @wjhuang2016
- IPv6環境でクラスターが一部のシステムビューを照会できない問題を修正 #43286 @Defined2014
- 動的プルーニングモードで内部結合中にパーティションが見つからない問題を修正 #43686 @mjonss
- TiDBがテーブルを分析するときに構文エラーを報告する問題を修正しました #43392 @guo-shaoge
- TiCDC がテーブル名の変更中に一部の行の変更を失う可能性がある問題を修正しました #43338 @tangenta
- クライアントがカーソル読み取りを使用すると TiDBサーバーがクラッシュする問題を修正しました #38116 @YangKeao
ADMIN SHOW DDL JOBS LIMIT誤った結果を返す問題を修正#42298 @CbcWestwolfUNIONでユニオンビューと一時テーブルをクエリするときに発生する TiDBのpanic問題を修正しました。 #42563 @lcwangchao- トランザクションで複数のステートメントをコミットするときにテーブル名の変更が有効にならない問題を修正しました #39664 @tiancaiamao
- 時間変換中に準備済みプランキャッシュと非プリペアドプランキャッシュの動作間の非互換性の問題を修正しました #42439 @qw4990
- Decimal 型のプランキャッシュによって発生する誤った結果を修正しました #43311 @qw4990
- 間違ったフィールドタイプチェックによる、null 認識アンチ結合 (NAAJ) での TiDBのpanic問題を修正しました。 #42459 @AilinKid
- RC分離レベルでの悲観的トランザクションにおけるDML実行の失敗により、データとインデックスの間に不整合が発生する可能性がある問題を修正しました。 #43294 @ekexium
- 極端なケースで、悲観的トランザクションの最初のステートメントが再試行されるときに、このトランザクションのロックを解決するとトランザクションの正確性に影響する可能性がある問題を修正しました#42937 @MyonKeminta
- GC がロックを解決するときに、まれに悲観的トランザクションの残余悲観的ロックがデータの正確性に影響を与える可能性がある問題を修正しました。 #43243 @MyonKeminta
LOCKからPUTへの最適化により、特定のクエリで重複データが返される問題を修正しました。 #28011 @zyguan- データが変更された場合、一意インデックスのロック動作がデータが変更されていない場合のロック動作と一致しない問題を修正しました#36438 @zyguan
- パーティションを再編成した後、手動で
TiKV
tidb_pessimistic_txn_fair_lockingを有効にすると、極端なケースで、失敗した RPC 再試行によって期限切れになったリクエストが、解決ロック操作中にデータの正確性に影響を与える可能性がある問題を修正しました。 #14551 @MyonKemintatidb_pessimistic_txn_fair_lockingを有効にすると、極端なケースで、失敗した RPC 再試行によって期限切れのリクエストが発生し、トランザクションの競合が無視され、トランザクションの一貫性に影響する可能性がある問題を修正しました。 #14311 @MyonKeminta- 暗号化キーIDの競合により古いキーが削除される可能性がある問題を修正しました #14585 @tabokie
- クラスタを以前のバージョンから v6.5 以降のバージョンにアップグレードしたときに、累積したロック レコードによって発生するパフォーマンス低下の問題を修正しました。 #14780 @MyonKeminta
- PITRリカバリプロセス中に
raft entry is too largeエラーが発生する問題を修正 #14313 @YuJuncen - PITRリカバリプロセス中に
log_batch2GBを超えるによりTiKVがパニックになる問題を修正 #13848 @YuJuncen
PD
- TiKVパニック後にPD監視パネルの
low space storeの数が異常になる問題を修正 #6252 @HuSharp - PDリーダースイッチ後にリージョンヘルス監視データが削除される問題を修正 #6366 @iosmanthus
- ルールチェッカーが
schedule=denyラベルの不健全な領域を修復できない問題を修正しました #6426 @nolouch - TiKVまたはTiFlashの再起動後に既存のラベルの一部が失われる問題を修正#6467 @JmPotato
- レプリケーションモードの学習ノードがある場合、レプリケーションステータスを切り替えることができない問題を修正しました。 #14704 @nolouch
- TiKVパニック後にPD監視パネルの
TiFlash
- 遅延マテリアライゼーションを有効にした後に、
TIMESTAMPまたはTIMEタイプのデータをクエリするとエラーが返される問題を修正しました。 #7455 @Lloyd-Pottiger - 大規模な更新トランザクションにより、 TiFlash が繰り返しエラーを報告し、 を再起動する可能性がある問題を修正しました。 #7316 @JaySon-Huang
- 遅延マテリアライゼーションを有効にした後に、
ツール
Backup & Restore (BR)
TiCDC
- TiCDC タイムゾーン設定の問題を修正 #8798 @Rustin170506
- PDアドレスまたはリーダーに障害が発生したときにTiCDCが自動的に回復できない問題を修正#8812 #8877 @asddongmen
- 上流の TiKV ノードの 1 つがクラッシュするとチェックポイントの遅延が増加する問題を修正しました #8858 @hicqu
- オブジェクトストレージにデータを複製する際に、上流の
EXCHANGE PARTITION操作が下流に正しく複製されない問題を修正しました。 #8914 @CharlesCheung96 - いくつかの特殊なシナリオでソートコンポーネントの過剰なメモリ使用によって引き起こされる OOM 問題を修正しました#8974 @hicqu
- 下流の Kafka シンクがローリング再起動されたときに発生する TiCDC ノードpanicを修正しました#9023 @asddongmen
TiDB Data Migration (DM)
TiDBDumpling
TiDB Binlog
TiDB Lightning
- データインポート中のパフォーマンス低下の問題を修正 #42456 @lance6716
write to tikv with no leader returned大量データインポート時の問題を修正#43055 @lance6716- データインポート中にログが
keys within region is empty, skip doIngest過剰になる問題を修正 #43197 @D3Hunter - 部分書き込み中にpanicが発生する可能性がある問題を修正 #43363 @lance6716
- 幅の広いテーブルをインポートするときに OOM が発生する可能性がある問題を修正しました #43728 @D3Hunter
- TiDB Lightning Grafanaダッシュボードでデータが欠落する問題を修正 #43357 @lichunzhu
keyspace-nameの設定が間違っているためにインポートに失敗する問題を修正しました #43684 @zeminzhou- 範囲部分書き込み中にデータのインポートがスキップされる可能性がある問題を修正#43768 @lance6716
パフォーマンステスト
TiDB v7.1.0 のパフォーマンスについては、 TiDB Cloud Dedicated クラスターのTPC-CパフォーマンステストレポートとSysbenchパフォーマンステストレポートを参照してください。
貢献者
TiDB コミュニティの以下の貢献者に感謝いたします。