TiDB 7.4.0 リリースノート
発売日: 2023年10月12日
TiDB バージョン: 7.4.0
クイックアクセス: クイックスタート
7.4.0 では、次の主要な機能と改善が導入されています。
カテゴリ | 特徴 | 説明 |
---|---|---|
信頼性と可用性 | グローバルソートによるIMPORT INTO およびADD INDEX 操作のパフォーマンスと安定性を向上 (実験的) | v7.4.0 より前では、 TiDB Distributed eXecution Framework (DXF)を使用したADD INDEX やIMPORT INTO などのタスクは、ローカライズされた部分的なソートを意味し、最終的には TiKV が部分的なソートを補うために多くの追加作業を実行することになりました。また、これらのジョブでは、TiKV にロードする前に、TiDB ノードがソート用のローカル ディスク領域を割り当てる必要がありました。v7.4.0 で導入されたグローバル ソート機能により、データは TiKV にロードされる前にグローバル ソートのために一時的に外部共有storage(このバージョンでは S3) に保存されます。これにより、TiKV が余分なリソースを消費する必要がなくなり、 ADD INDEX やIMPORT INTO などの操作のパフォーマンスと安定性が大幅に向上します。 |
バックグラウンドタスクのリソース制御(実験的) | v7.1.0 では、ワークロード間のリソースとstorageのアクセスの干渉を軽減するために、 リソース制御機能が導入されました。TiDB v7.4.0 では、この制御がバックグラウンド タスクにも適用されます。v7.4.0 では、リソース制御によって、自動分析、バックアップと復元、 TiDB Lightningによる一括ロード、オンライン DDL などのバックグラウンド タスクによって生成されたリソースが識別および管理されるようになりました。これは、最終的にはすべてのバックグラウンド タスクに適用されます。 | |
TiFlash はストレージとコンピューティングの分離と S3 (GA) をサポートします | TiFlash分散storageおよびコンピューティングアーキテクチャと S3 共有storageが一般提供開始:
| |
構文 | TiDBはパーティションタイプの管理をサポート | v7.4.0 より前では、範囲/リスト パーティション テーブルは、 TRUNCATE 、 EXCHANGE 、 ADD 、 DROP 、 REORGANIZE などのパーティション管理操作をサポートし、ハッシュ/キー パーティション テーブルは、 ADD やCOALESCE などのパーティション管理操作をサポートします。現在、TiDB は次のパーティション タイプ管理操作もサポートしています。
|
MySQL 8.0 互換性: 照合順序utf8mb4_0900_ai_ci サポート | MySQL 8.0 の注目すべき変更点の 1 つは、デフォルトの文字セットが utf8mb4 になり、 utf8mb4 のデフォルトの照合照合順序がutf8mb4_0900_ai_ci になったことです。TiDB v7.4.0 でこれに対するサポートが追加されたことで、MySQL 8.0 との互換性が向上し、デフォルトの照合順序を持つ MySQL 8.0 データベースからの移行とレプリケーションがよりスムーズになりました。 | |
DB 操作と可観測性 | IMPORT INTO およびADD INDEX SQL ステートメントを実行するためのそれぞれの TiDB ノードを指定します (実験的) | 既存の TiDB ノードまたは新しく追加された TiDB ノードの一部でIMPORT INTO またはADD INDEX SQL ステートメントを実行するかどうかを柔軟に指定できます。このアプローチにより、残りの TiDB ノードからのリソースの分離が可能になり、ビジネス オペレーションへの影響を防ぎながら、前述の SQL ステートメントを実行するための最適なパフォーマンスを確保できます。 |
機能の詳細
スケーラビリティ
分散実行フレームワーク (DXF) のバックエンド
ADD INDEX
またはIMPORT INTO
タスクを並列実行するための TiDB ノードの選択をサポート (実験的) #46453 @ うわーリソースを大量に消費するクラスターで
ADD INDEX
またはIMPORT INTO
タスクを並列に実行すると、大量の TiDB ノード リソースが消費され、クラスターのパフォーマンスが低下する可能性があります。v7.4.0 以降では、システム変数tidb_service_scope
使用して、 TiDB 分散実行フレームワーク (DXF)の下にある各 TiDB ノードのサービス スコープを制御できます。複数の既存の TiDB ノードを選択するか、新しい TiDB ノードの TiDB サービス スコープを設定すると、すべての並列ADD INDEX
およびIMPORT INTO
タスクがこれらのノードでのみ実行されます。このメカニズムにより、既存のサービスへのパフォーマンスへの影響を回避できます。詳細についてはドキュメント参照してください。
パーティション化されたRaft KVstorageエンジンを強化する (実験的) #11515 #12842 @ 忙しいカケス @ トニー @ タボキ @ バッファフライ @ 5kbpsの @ スペードA-タン @ ノルーシュ
TiDB v6.6.0 では、実験的機能としてパーティション化されたRaft KVstorageエンジンが導入されました。このエンジンは、複数の RocksDB インスタンスを使用して TiKVリージョンデータを保存し、各リージョンのデータは個別の RocksDB インスタンスに独立して保存されます。
v7.4.0 では、TiDB は Partitioned Raft KVstorageエンジンの互換性と安定性をさらに向上させました。大規模データ テストを通じて、DM、 Dumpling、 TiDB Lightning、TiCDC、 BR、PITR などの TiDB エコシステム ツールおよび機能との互換性が確保されています。さらに、Partitioned Raft KVstorageエンジンは、読み取りと書き込みが混在するワークロードでより安定したパフォーマンスを提供するため、書き込みが多いシナリオに特に適しています。さらに、各 TiKV ノードは 8 コア CPU をサポートし、8 TB のデータstorageと 64 GB のメモリで構成できるようになりました。
詳細についてはドキュメント参照してください。
TiFlashは分散storageおよびコンピューティングアーキテクチャ(GA)をサポートします#6882 @ ジェイソン・ファン @ ジンヘリン @ そよ風のような @ リデズ @ カルビンネオ @ ロイド・ポティガー
v7.0.0 では、 TiFlash は分散storageおよびコンピューティングアーキテクチャを実験的機能として導入します。一連の改善により、 TiFlashの分散storageおよびコンピューティングアーキテクチャは、v7.4.0 から GA になります。
このアーキテクチャでは、 TiFlashノードは 2 種類 (コンピューティング ノードと書き込みノード) に分かれており、S3 API と互換性のあるオブジェクトstorageをサポートします。両方の種類のノードは、コンピューティングまたはstorage容量を個別に拡張できます。分散storageおよびコンピューティングアーキテクチャでは、 TiFlashレプリカの作成、データのクエリ、オプティマイザー ヒントの指定など、結合storageおよびコンピューティングアーキテクチャと同じようにTiFlash を使用できます。
TiFlash の分散storageおよびコンピューティングアーキテクチャと結合storageおよびコンピューティングアーキテクチャは、同じクラスター内で使用したり、相互に変換したりすることはできないことに注意してください。TiFlashをデプロイするときに、使用するアーキテクチャを構成できます。
詳細についてはドキュメント参照してください。
パフォーマンス
JSON 演算子
MEMBER OF
を TiKV #46307 @ うわーにプッシュダウンするサポートvalue MEMBER OF(json_array)
詳細についてはドキュメント参照してください。
任意のフレーム定義タイプのウィンドウ関数をTiFlash #7376 @ 翻訳者にプッシュダウンするサポート
v7.4.0 より前のTiFlashでは、
PRECEDING
またはFOLLOWING
含むウィンドウ関数はサポートされておらず、そのようなフレーム定義を含むすべてのウィンドウ関数をTiFlashにプッシュダウンすることはできません。v7.4.0 以降では、 TiFlash はすべてのウィンドウ関数のフレーム定義をサポートします。この機能は自動的に有効になり、フレーム定義を含むウィンドウ関数は、関連する要件が満たされると、自動的にTiFlashにプッシュダウンされて実行されます。クラウド ストレージ ベースのグローバル ソート機能を導入して、並列実行における
ADD INDEX
およびIMPORT INTO
タスクのパフォーマンスと安定性を向上します (実験的) #45719 @ 翻訳:v7.4.0 より前では、Distributed eXecution Framework (DXF) で
ADD INDEX
やIMPORT INTO
などのタスクを実行する場合、各 TiDB ノードは、エンコードされたインデックス KV ペアとテーブル データ KV ペアをソートするために、大量のローカル ディスク領域を割り当てる必要があります。ただし、グローバル ソート機能がないため、プロセス中に異なる TiDB ノード間および各ノード内でデータが重複する可能性があります。その結果、TiKV はこれらの KV ペアをstorageエンジンにインポートしながら、常に圧縮操作を実行する必要があり、ADD INDEX
とIMPORT INTO
のパフォーマンスと安定性に影響します。v7.4.0 では、TiDB にグローバルソート機能が導入されました。エンコードされたデータをローカルに書き込んでそこでソートする代わりに、データはクラウドstorageに書き込まれ、グローバル ソートされるようになりました。ソートされると、インデックス データとテーブル データの両方が TiKV に並行してインポートされるため、パフォーマンスと安定性が向上します。
詳細についてはドキュメント参照してください。
非準備済みステートメントの実行プランのキャッシュをサポート (GA) #36598 @ qw4990
TiDB v7.0.0 では、同時実行 OLTP の負荷容量を向上させるための実験的機能として、非準備プラン キャッシュが導入されています。v7.4.0 では、この機能が GA になります。実行プラン キャッシュはより多くのシナリオに適用され、TiDB の同時実行処理容量が向上します。
準備されていないプラン キャッシュを有効にすると、追加のメモリと CPU オーバーヘッドが発生する可能性があり、すべての状況に適しているとは限りません。v7.4.0 以降では、この機能はデフォルトで無効になっています。1
tidb_enable_non_prepared_plan_cache
使用して有効にし、tidb_session_plan_cache_size
使用してキャッシュ サイズを制御できます。さらに、この機能はデフォルトでは DML 文をサポートしておらず、SQL 文には一定の制限があります。詳細については、 制限参照してください。
詳細についてはドキュメント参照してください。
信頼性
TiFlashはクエリレベルのデータスピルをサポート#7738 @ 風の話し手
v7.0.0 以降、 TiFlash は
GROUP BY
、ORDER BY
、JOIN
3 つの演算子のデータ スピルの制御をサポートしています。この機能により、データ サイズが使用可能なメモリを超えた場合に、クエリの終了やシステム クラッシュなどの問題が回避されます。ただし、演算子ごとにスピルを個別に管理するのは面倒で、全体的なリソース制御には効果がありません。v7.4.0 では、 TiFlashにクエリ レベルのデータ スピルが導入されています。TiFlash ノードでのクエリのメモリ制限を
tiflash_mem_quota_query_per_node
に設定し、データ スピルをトリガーするメモリ比率をtiflash_query_spill_ratio
に設定することで、クエリのメモリ使用量を簡単に管理し、 TiFlashメモリリソースをより適切に制御できます。詳細についてはドキュメント参照してください。
ユーザー定義の TiKV 読み取りタイムアウト#45380 @ クレイジーcs520をサポート
通常、TiKV は数ミリ秒という非常に高速にリクエストを処理します。ただし、TiKV ノードでディスク I/O ジッターまたはネットワークレイテンシーが発生すると、リクエストの処理時間が大幅に長くなる可能性があります。v7.4.0 より前のバージョンでは、TiKV リクエストのタイムアウト制限は固定されており、調整できません。そのため、TiKV ノードで問題が発生すると、TiDB は固定期間のタイムアウト応答を待機する必要があり、ジッター発生中のアプリケーション クエリ パフォーマンスに顕著な影響が生じます。
TiDB v7.4.0 では、新しいシステム変数
tikv_client_read_timeout
が導入され、クエリで TiDB が TiKV に送信する RPC 読み取り要求のタイムアウトをカスタマイズできるようになりました。つまり、TiKV ノードに送信された要求がディスクまたはネットワークの問題により遅延した場合、TiDB はより早くタイムアウトして他の TiKV ノードに要求を再送信できるため、クエリのレイテンシーが短縮されます。すべての TiKV ノードでタイムアウトが発生した場合、TiDB はデフォルトのタイムアウトを使用して再試行します。さらに、クエリでオプティマイザーヒント/*+ SET_VAR(TIKV_CLIENT_READ_TIMEOUT=N) */
使用して、TiDB が TiKV RPC 読み取り要求を送信するタイムアウトを設定することもできます。この機能強化により、不安定なネットワークまたはstorage環境に適応する柔軟性が TiDB に与えられ、クエリのパフォーマンスが向上し、ユーザーエクスペリエンスが強化されます。詳細についてはドキュメント参照してください。
オプティマイザヒント#45892 @ ウィノロスを使用して、一部のシステム変数値を一時的に変更することをサポートします。
TiDB v7.4.0 では、MySQL 8.0 と同様のオプティマイザヒント
SET_VAR()
が導入されています。SQL 文にヒントSET_VAR()
を含めることで、文の実行中にシステム変数の値を一時的に変更できます。これにより、さまざまな文の環境を設定できます。たとえば、リソースを大量に消費する SQL 文の並列処理を積極的に増やしたり、変数を通じてオプティマイザの動作を変更したりできます。変更できるシステム変数は、ヒント
SET_VAR()
のシステム変数で確認できます。予期しない動作が発生する可能性があるため、明示的にサポートされていない変数を変更しないことを強くお勧めします。詳細についてはドキュメント参照してください。
TiFlashはリソース制御#7660 @ グオシャオゲをサポート
TiDB v7.1.0 では、リソース制御機能が一般提供され、TiDB と TiKV のリソース管理機能が提供されます。v7.4.0 では、 TiFlashがリソース制御機能をサポートし、TiDB の全体的なリソース管理機能が向上します。TiFlash のTiFlash制御は既存の TiDB リソース制御機能と完全に互換性があり、既存のリソース グループは TiDB、TiKV、およびTiFlashのリソースを同時に管理します。
TiFlashリソース制御機能を有効にするかどうかを制御するには、 TiFlashパラメータ
enable_resource_control
を設定します。この機能を有効にすると、 TiFlash はTiDB のリソース グループ設定に基づいてリソースのスケジュールと管理を実行し、全体的なリソースの適切な割り当てと使用を保証します。詳細についてはドキュメント参照してください。
TiFlashはパイプライン実行モデル(GA) #6518 @ シーライズをサポートします
v7.2.0 以降、 TiFlash はパイプライン実行モデルを導入しています。このモデルは、すべてのスレッド リソースを集中管理し、タスク実行を均一にスケジュールすることで、リソースの過剰使用を回避しながらスレッド リソースの使用率を最大化します。v7.4.0 では、 TiFlash はスレッド リソース使用状況の統計を改善し、パイプライン実行モデルは GA 機能となり、デフォルトで有効になっています。この機能はTiFlashリソース制御機能と相互に依存しているため、TiDB v7.4.0 では、以前のバージョンでパイプライン実行モデルを有効にするかどうかを制御するために使用されていた変数
tidb_enable_tiflash_pipeline_model
が削除されています。代わりに、 TiFlashパラメータtidb_enable_resource_control
を構成することで、パイプライン実行モデルとTiFlashリソース制御機能を有効または無効にすることができます。詳細についてはドキュメント参照してください。
オプティマイザモード#46080 @ 時間と運命のオプションを追加
v7.4.0 では、TiDB に新しいシステム変数
tidb_opt_objective
が導入され、オプティマイザが使用する推定方法を制御しま す。デフォルト値moderate
、データの変更に基づいて推定を調整するために実行時統計を使用するという、オプティマイザの以前の動作を維持します。この変数をdeterminate
に設定すると、オプティマイザは実行時修正を考慮せずに、統計のみに基づいて実行プランを生成します。長期にわたって安定した OLTP アプリケーションの場合、または既存の実行プランに自信がある場合は、テスト後に
determinate
モードに切り替えることをお勧めします。これにより、プランの変更の可能性が減ります。詳細についてはドキュメント参照してください。
TiDB リソース制御はバックグラウンドタスクの管理をサポートします (実験的) #44517 @ 栄光
データ バックアップや自動統計収集などのバックグラウンド タスクは、優先度は低いですが、多くのリソースを消費します。これらのタスクは通常、定期的または不定期にトリガーされます。実行中は多くのリソースを消費するため、オンラインの高優先度タスクのパフォーマンスに影響します。v7.4.0 以降、TiDB リソース制御機能はバックグラウンド タスクの管理をサポートします。この機能により、オンライン アプリケーションに対する低優先度タスクのパフォーマンスへの影響が軽減され、合理的なリソース割り当てが可能になり、クラスターの安定性が大幅に向上します。
TiDB は次の種類のバックグラウンド タスクをサポートします。
lightning
: TiDB LightningまたはIMPORT INTO
使用してインポート タスクを実行します。br
: BR使用してバックアップおよび復元タスクを実行します。PITR はサポートされていません。ddl
: Reorg DDL のバッチ データ書き戻しフェーズ中のリソース使用量を制御します。stats
: 手動で実行されるか、TiDB によって自動的にトリガーされる統計を収集するタスク。
デフォルトでは、バックグラウンド タスクとしてマークされているタスク タイプは空で、バックグラウンド タスクの管理は無効になっています。このデフォルトの動作は、TiDB v7.4.0 より前のバージョンと同じです。バックグラウンド タスクを管理するには、
default
リソース グループのバックグラウンド タスク タイプを手動で変更する必要があります。詳細についてはドキュメント参照してください。
ロック統計が一般公開 (GA) される#46351 @ ハイラスティン
v7.4.0 では、 ロック統計一般提供されました。運用上のセキュリティを確保するために、統計のロックとロック解除には、統計の収集と同じ権限が必要です。さらに、TiDB は特定のパーティションの統計のロックとロック解除をサポートしており、柔軟性が向上しています。データベース内のクエリと実行プランに自信があり、変更が発生しないようにしたい場合は、統計をロックして安定性を高めることができます。
詳細についてはドキュメント参照してください。
テーブル#46695 @ コーダープレイのハッシュ結合を選択するかどうかを制御するシステム変数を導入します。
MySQL 8.0 では、新しい機能としてテーブルのハッシュ結合が導入されています。この機能は主に、比較的大きな 2 つのテーブルと結果セットを結合するために使用されます。ただし、トランザクション ワークロードや、 MySQL 5.7で実行される一部のアプリケーションでは、テーブルのハッシュ結合によってパフォーマンス リスクが生じる可能性があります。MySQL では、ハッシュ結合をグローバル レベルとセッション レベルのどちらで選択するかを制御する
optimizer_switch
が提供されています。v7.4.0 以降、TiDB では、テーブルのハッシュ結合を制御するためのシステム変数
tidb_opt_enable_hash_join
導入されています。これはデフォルトで有効になっています (ON
)。実行プランでテーブル間のハッシュ結合を選択する必要がないことが確実な場合は、変数をOFF
に変更して、実行プランのロールバックの可能性を減らし、システムの安定性を向上させることができます。詳細についてはドキュメント参照してください。
統計キャッシュのメモリ制御が一般提供開始 (GA) #45367 @ ホーキングレイ
TiDB インスタンスはテーブル統計をキャッシュして、実行プランの生成を高速化し、SQL パフォーマンスを向上させることができます。v6.1.0 以降、TiDB ではシステム変数
tidb_stats_cache_mem_quota
が導入されています。このシステム変数を構成することで、統計キャッシュのメモリ使用量制限を設定できます。キャッシュが制限に達すると、TiDB は非アクティブなキャッシュ エントリを自動的に削除し、インスタンスのメモリ使用量を制御して安定性を向上させます。v7.4.0 以降では、この機能が一般提供 (GA) されます。
詳細についてはドキュメント参照してください。
構文
TiDBはパーティションタイプの管理#42728 @ ミョンスをサポートします
v7.4.0 より前では、TiDB のパーティション テーブルのパーティション タイプを変更することはできませんでした。v7.4.0 以降、TiDB はパーティション テーブルを非パーティション テーブルに、または非パーティション テーブルをパーティション テーブルに変更すること、およびパーティション タイプの変更をサポートします。したがって、パーティションテーブルのパーティション タイプと数を柔軟に調整できるようになりました。たとえば、
ALTER TABLE t PARTITION BY ...
ステートメントを使用してパーティション タイプを変更できます。詳細についてはドキュメント参照してください。
TiDBは
ROLLUP
修飾子とGROUPING
関数#44487 @ アイリンキッドの使用をサポートしていますWITH ROLLUP
修飾子とGROUPING
関数は、多次元データ要約のデータ分析でよく使用されます。v7.4.0 以降では、GROUP BY
節でWITH ROLLUP
修飾子とGROUPING
関数を使用できます。たとえば、SELECT ... FROM ... GROUP BY ... WITH ROLLUP
構文でWITH ROLLUP
修飾子を使用できます。詳細についてはドキュメント参照してください。
DB操作
照合照合順序
utf8mb4_0900_ai_ci
とutf8mb4_0900_bin
#37566 @ ヤンケオ @ ジムララ @ bb7133をサポートTiDB v7.4.0 では、MySQL 8.0 からのデータ移行のサポートが強化され、
utf8mb4_0900_ai_ci
とutf8mb4_0900_bin
2 つの照合順序が追加されました。utf8mb4_0900_ai_ci
MySQL 8.0 のデフォルトの照合照合順序です。TiDB v7.4.0 では、MySQL 8.0 と互換性のあるシステム変数
default_collation_for_utf8mb4
も導入されています。これにより、utf8mb4 文字セットのデフォルトの照合順序を指定できるようになり、 MySQL 5.7以前のバージョンからの移行やデータ複製との互換性が確保されます。詳細についてはドキュメント参照してください。
可観測性
ログへのセッション接続 ID とセッション エイリアスの追加をサポート#46071 @ lcwangchao
SQL 実行の問題をトラブルシューティングする場合、多くの場合、根本原因を特定するために TiDBコンポーネントログの内容を相関させる必要があります。v7.4.0 以降、TiDB はセッション接続 ID (
CONNECTION_ID
) をセッション関連ログ (TiDB ログ、スロー クエリ ログ、TiKV のコプロセッサからのスロー ログなど) に書き込むことができます。セッション接続 ID に基づいて複数の種類のログの内容を相関させることで、トラブルシューティングと診断の効率を向上させることができます。さらに、セッション レベルのシステム変数
tidb_session_alias
を設定することで、上記のログにカスタム識別子を追加できます。ログにアプリケーション識別情報を挿入するこの機能により、ログの内容とアプリケーションを関連付け、アプリケーションからログへのリンクを構築し、診断の難易度を軽減できます。TiDBダッシュボードは、テーブルビューでの実行プランの表示をサポートしています#1589 @ バウリン
v7.4.0 では、TiDB ダッシュボードは、診断エクスペリエンスを向上させるために、スロー クエリ ページとSQL ステートメントページで実行プランをテーブル ビューで表示することをサポートしています。
詳細についてはドキュメント参照してください。
データ移行
IMPORT INTO
機能を#46704 @ D3ハンター強化v7.4.0 以降では、
IMPORT INTO
ステートメントにCLOUD_STORAGE_URI
オプションを追加してグローバルソート機能 (実験的) を有効にし、インポートのパフォーマンスと安定性を向上させることができます。7CLOUD_STORAGE_URI
では、エンコードされたデータのクラウドstorageアドレスを指定できます。さらに、v7.4.0 では、
IMPORT INTO
機能に次の機能が導入されています。Split_File
オプションの構成をサポートします。これにより、大きな CSV ファイルを複数の 256 MiB の小さな CSV ファイルに分割して並列処理し、インポート パフォーマンスを向上させることができます。- 圧縮された CSV および SQL ファイルのインポートをサポートします。サポートされている圧縮形式には、
.gzip
、.gz
、.zstd
、.zst
、.snappy
が含まれます。
詳細についてはドキュメント参照してください。
Dumpling は、データを CSV ファイルにエクスポートするときにユーザー定義のターミネータをサポートします#46982 @ GMHDBJD
v7.4.0 より前のバージョンでは、 Dumpling はデータを CSV ファイルにエクスポートするときに行末文字として
"\r\n"
使用します。その結果、行末文字として"\n"
のみを認識する特定の下流システムでは、エクスポートされた CSV ファイルを解析できないか、ファイルを解析する前にサードパーティ製の変換ツールを使用する必要があります。v7.4.0 以降、 Dumpling は新しいパラメータ
--csv-line-terminator
を導入します。このパラメータを使用すると、データを CSV ファイルにエクスポートするときに、必要なターミネータを指定できます。このパラメータは"\r\n"
と"\n"
サポートします。以前のバージョンとの一貫性を保つために、デフォルトのターミネータは"\r\n"
です。詳細についてはドキュメント参照してください。
TiCDCはPulsar #9413 @ ヤムチャイナ @ アズドンメンへのデータ複製をサポートします
Pulsar は、リアルタイム データ ストリーミング エクスペリエンスを大幅に強化するクラウド ネイティブの分散メッセージ ストリーミング プラットフォームです。v7.4.0 以降、TiCDC は変更データを
canal-json
形式で Pulsar に複製し、Pulsar とのシームレスな統合を実現します。この機能により、TiCDC は TiDB の変更を簡単にキャプチャして Pulsar に複製する機能を提供し、データ処理と分析機能に新たな可能性をもたらします。特定のビジネス ニーズを満たすために、Pulsar から新しく生成された変更データを読み取って処理する独自のコンシューマー アプリケーションを開発できます。詳細についてはドキュメント参照してください。
TiCDC はクレームチェックパターン#9153 @ 3エースショーハンドで大きなメッセージの処理を改善します
v7.4.0 より前のバージョンでは、TiCDC は Kafka の最大メッセージ サイズ (
max.message.bytes
) を超える大きなメッセージをダウンストリームに送信できませんでした。v7.4.0 以降では、Kafka をダウンストリームとして変更フィードを構成するときに、大きなメッセージを格納する外部storageの場所を指定し、外部storage内の大きなメッセージのアドレスを含む参照メッセージを Kafka に送信できます。コンシューマーがこの参照メッセージを受信すると、外部storageアドレスからメッセージ コンテンツを取得できます。詳細についてはドキュメント参照してください。
互換性の変更
注記:
このセクションでは、v7.3.0 から現在のバージョン (v7.4.0) にアップグレードするときに知っておく必要のある互換性の変更について説明します。v7.2.0 以前のバージョンから現在のバージョンにアップグレードする場合は、中間バージョンで導入された互換性の変更も確認する必要がある可能性があります。
行動の変化
v7.4.0 以降、TiDB は MySQL 8.0 の重要な機能と互換性があり、
version()
8.0.11
で始まるバージョンを返します。TiFlashを以前のバージョンから v7.4.0 にアップグレードした後は、元のバージョンへのインプレース ダウングレードはサポートされません。これは、v7.4 以降、 TiFlash がPageStorage V3 のデータ圧縮ロジックを最適化して、データ圧縮中に生成される読み取りおよび書き込み増幅を削減し、基礎となるstorageファイル名の一部が変更されるためです。
TSO タイムスタンプの論理部分を抽出できるように
TIDB_PARSE_TSO_LOGICAL()
関数が追加されました。MySQL 8.0 との互換性を向上させるために
information_schema.CHECK_CONSTRAINTS
テーブルが追加されました。複数の変更を含むトランザクションの場合、更新イベントで主キーまたは null 以外の一意のインデックス値が変更されると、TiCDC はイベントを削除イベントと挿入イベントに分割し、すべてのイベントが挿入イベントに先行する削除イベントのシーケンスに従うようにします。詳細については、 ドキュメント参照してください。
システム変数
変数名 | タイプを変更 | 説明 |
---|---|---|
tidb_enable_tiflash_pipeline_model | 削除されました | この変数は、 TiFlashパイプライン実行モデルを有効にするかどうかを制御するために使用されます。v7.4.0 以降では、 TiFlashリソース制御機能を有効にすると、 TiFlashパイプライン実行モデルが自動的に有効になります。 |
tidb_enable_non_prepared_plan_cache | 修正済み | さらにテストを行った後、デフォルト値をON からOFF に変更します。これは、準備されていない実行プラン キャッシュが無効であることを意味します。 |
default_collation_for_utf8mb4 | 新しく追加された | utf8mb4 文字セットのデフォルトの照合順序を制御します。デフォルト値はutf8mb4_bin です。 |
tidb_cloud_storage_uri | 新しく追加された | 有効にするクラウドstorageURI を指定しますグローバルソート 。 |
tidb_opt_enable_hash_join | 新しく追加された | オプティマイザがテーブルのハッシュ結合を選択するかどうかを制御します。デフォルトの値はON です。 OFF に設定すると、他の実行プランが利用できない場合を除き、オプティマイザはテーブルのハッシュ結合を選択しません。 |
tidb_opt_objective | 新しく追加された | この変数は、オプティマイザの目的を制御します。1 moderate 、TiDB v7.4.0 より前のバージョンのデフォルトの動作を維持し、オプティマイザはより多くの情報を使用して、より優れた実行プランを生成しようとしますdeterminate モードはより保守的になり、実行プランがより安定する傾向があります。 |
tidb_request_source_type | 新しく追加された | 現在のセッションのタスク タイプを明示的に指定します。これはリソース管理によって識別および制御されます。例: SET @@tidb_request_source_type = "background" 。 |
tidb_schema_version_cache_limit | 新しく追加された | この変数は、TiDB インスタンスにキャッシュできる履歴スキーマ バージョンの数を制限します。デフォルト値は16 で、これは、TiDB がデフォルトで 16 個の履歴スキーマ バージョンをキャッシュすることを意味します。 |
tidb_service_scope | 新しく追加された | この変数はインスタンス レベルのシステム変数です。これを使用して、 TiDB 分散実行フレームワーク (DXF)の下にある TiDB ノードのサービス スコープを制御できます。TiDB ノードのtidb_service_scope background に設定すると、DXF はその TiDB ノードがADD INDEX やIMPORT INTO などの DXF タスクを実行するようにスケジュールします。 |
tidb_session_alias | 新しく追加された | 現在のセッションに関連するログ内のsession_alias 列目の値を制御します。 |
tiflash_mem_quota_query_per_node | 新しく追加された | TiFlashノードでのクエリの最大メモリ使用量を制限します。クエリのメモリ使用量がこの制限を超えると、 TiFlash はエラーを返し、クエリを終了します。デフォルト値は0 で、制限がないことを意味します。 |
tiflash_query_spill_ratio | 新しく追加された | TiFlash クエリレベルのスピルのしきい値を制御します。デフォルト値は0.7 です。 |
tikv_client_read_timeout | 新しく追加された | クエリで TiKV RPC 読み取り要求を送信する TiDB のタイムアウトを制御します。デフォルト値0 は、デフォルトのタイムアウト (通常は 40 秒) が使用されることを示します。 |
コンフィグレーションファイルのパラメータ
コンフィグレーションファイル | コンフィグレーションパラメータ | タイプを変更 | 説明 |
---|---|---|---|
ティビ | enable-stats-cache-mem-quota | 修正済み | デフォルト値はfalse からtrue に変更され、TiDB 統計のキャッシュのメモリ制限がデフォルトで有効になっていることを意味します。 |
ティクヴ | [`rocksdb.[defaultcf | writecf | lockcf].periodic-compaction-seconds`](/tikv-configuration-file.md#periodic-compaction-seconds-new-in-v720) |
ティクヴ | [`rocksdb.[defaultcf | writecf | lockcf].ttl`](/tikv-configuration-file.md#ttl-new-in-v720) |
TiFlash | flash.compact_log_min_gap | 新しく追加された | 現在のRaftステート マシンによって進められたapplied_index と最後のディスク スピル時のapplied_index とのギャップがcompact_log_min_gap を超えると、 TiFlash はTiKV からCompactLog コマンドを実行し、データをディスクにスピルします。 |
TiFlash | profiles.default.enable_resource_control | 新しく追加された | TiFlashリソース制御機能を有効にするかどうかを制御します。 |
TiFlash | storage.format_version | 修正済み | デフォルト値を4 から5 に変更します。新しい形式では、小さいファイルを結合することで物理ファイルの数を減らすことができます。 |
Dumpling | --csv-line-terminator | 新しく追加された | CSV ファイルの希望するターミネータを指定します。このオプションは"\r\n" と"\n" サポートします。デフォルト値は"\r\n" で、以前のバージョンと一致しています。 |
ティCDC | claim-check-storage-uri | 新しく追加された | large-message-handle-option claim-check に設定する場合、 claim-check-storage-uri 有効な外部storageアドレスに設定する必要があります。そうしないと、変更フィードを作成するとエラーが発生します。 |
ティCDC | large-message-handle-compression | 新しく追加された | エンコード中に圧縮を有効にするかどうかを制御します。デフォルト値は空で、有効になっていないことを意味します。 |
ティCDC | large-message-handle-option | 修正済み | この設定項目は、新しい値claim-check を追加します。これをclaim-check に設定すると、TiCDC Kafka シンクは、メッセージ サイズが制限を超えた場合にメッセージを外部storageに送信することをサポートし、外部storage内のこの大きなメッセージのアドレスを含むメッセージを Kafka に送信します。 |
廃止および削除された機能
- マイダンパー v7.5.0 で廃止され、その機能のほとんどはDumplingに置き換えられました。mydumper の代わりにDumpling を使用することを強くお勧めします。
- TiKV インポーターは v7.5.0 で廃止されます。代わりにTiDB Lightningの物理インポートモード使用することを強くお勧めします。
- TiCDC の
enable-old-value
パラメータが削除されます#9667 @ 3エースショーハンド
改善点
ティビ
- パーティションテーブル#47071 #47104 #46804 @ ホーキングレイでの
ANALYZE
操作のメモリ使用量とパフォーマンスを最適化します - 統計ガベージコレクションのメモリ使用量とパフォーマンスを最適化する#31778 @ ウィノロス
- インデックスマージ交差のプッシュダウン
limit
を最適化してクエリパフォーマンス#46863 @ アイリンキッドを向上させる IndexLookup
多数のテーブル取得タスクが含まれる場合に、誤ってフルテーブルスキャンを選択する可能性を最小限に抑えるためにコストモデルを改善します#45132 @ qw4990- 結合除去ルールを最適化して、
join on unique keys
#46248 @ 修正DBのクエリパフォーマンスを向上させます。 - 実行エラーを回避するために、複数値インデックス列の照合順序を
binary
に変更します#46717 @ ヤンケオ
- パーティションテーブル#47071 #47104 #46804 @ ホーキングレイでの
ティクヴ
- OOM #15458 @ 金星の上防ぐためにリゾルバのメモリ使用量を最適化します
- ルータオブジェクトのLRUCacheを排除してメモリ使用量を削減し、OOM #15430 @ コナー1996を防止します。
- TiCDC リゾルバ#15412 @ 金星の上のメモリ使用量を削減
- RocksDB 圧縮によるメモリ変動を軽減#15324 @ 金星の上
- Partitioned Raft KV #15269 @ 金星の上のフロー制御モジュールのメモリ消費を削減
- 接続再試行のプロセスで PD クライアントのバックオフ メカニズムを追加します。これにより、エラー再試行中に再試行間隔が徐々に長くなり、PD の負荷が軽減されます#15428 @ ノルーシュ
- RocksDB #15424 @ 栄光の
background_compaction
動的に調整するサポート
PD
TiFlash
ツール
バックアップと復元 (BR)
- リージョンリーダーシップの移行が発生すると、PITR ログバックアップの進行のレイテンシーが長くなるという問題を緩和します#13638 @ ユジュンセン
- HTTPクライアント#46011 @ リーヴルスで
MaxIdleConns
とMaxIdleConnsPerHost
パラメータを設定することにより、ログバックアップとPITRリストアタスクの接続再利用のサポートを強化します。 - PD または外部 S3storageへの接続に失敗した場合のBRのフォールト トレランスを向上#42909 @ リーヴルス
- 新しい復元パラメータ
WaitTiflashReady
を追加します。このパラメータを有効にすると、 TiFlashレプリカが正常に複製された後に復元操作が完了します#43828 #46302 @ 3ポインター - ログバックアップのCPUオーバーヘッドを削減
resolve lock
#40759 @ 3ポインター
ティCDC
TiDB Lightning
バグ修正
ティビ
- ハッシュパーティション化されていないテーブルに対して
BatchPointGet
演算子が誤った結果を返す問題を修正#45889 @ 定義2014 - ハッシュパーティションテーブル#46779 @ ジフハウスに対して
BatchPointGet
演算子が誤った結果を返す問題を修正しました。 - TiDBパーサーが状態のままになり、解析エラーが発生する問題を修正#45898 @ qw4990
EXCHANGE PARTITION
制約#45922 @ ミョンスをチェックしない問題を修正tidb_enforce_mpp
システム変数が正しく復元できない問題を修正#46214 @ 翻訳者LIKE
節の_
誤って処理される問題を修正#46287 #46618 @ 定義2014- TiDBがスキーマ#46325 @ ヒヒフフ取得に失敗した場合、
schemaTs
が0に設定される問題を修正しました。 AUTO_ID_CACHE=1
が#46444 @ 天菜まおに設定されている場合にDuplicate entry
発生する可能性がある問題を修正しましたAUTO_ID_CACHE=1
が#46454 @ 天菜まおに設定されている場合に、panic後に TiDB がゆっくりと回復する問題を修正しました。AUTO_ID_CACHE=1
が#46545 @ 天菜まおに設定されている場合にSHOW CREATE TABLE
のnext_row_id
が間違っている問題を修正しました- サブクエリ#45838 @ 翻訳者で CTE を使用すると解析中に発生するpanic問題を修正しました
EXCHANGE PARTITION
が失敗またはキャンセルされた場合に、パーティション化されたテーブルの制限が元のテーブルに残る問題を修正#45920 #45791 @ ミョンス- リストパーティションの定義で
NULL
と空の文字列#45694 @ ミョンス両方の使用がサポートされない問題を修正 - パーティション交換#46492 @ ミョンス中にパーティション定義に準拠していないデータを検出できない問題を修正
tmp-storage-quota
設定が有効にならない問題を修正#45161 #26806 @ うわーWEIGHT_STRING()
関数が照合順序#45725 @ ドヴェーデンと一致しない問題を修正しました- インデックス結合のエラーによりクエリが停止する可能性がある問題を修正#45716 @ うわー
DATETIME
またはTIMESTAMP
列を数値定数#38361 @ いびん87と比較するときに動作が MySQL と一致しない問題を修正しました。- 符号なし型を
Duration
型定数#45410 @ うわーと比較したときに発生する誤った結果を修正 - アクセスパスのプルーニングロジックが
READ_FROM_STORAGE(TIFLASH[...])
ヒントを無視し、Can't find a proper physical plan
エラー#40146 @ アイリンキッドが発生する問題を修正しました。 GROUP_CONCAT
ORDER BY
列#41986 @ アイリンキッドを解析できない問題を修正- 深くネストされた式に対してハッシュコードが繰り返し計算され、メモリ使用量が増加し、OOM #42788 @ アイリンキッド発生する問題を修正しました。
- CAST に精度損失がない場合に
cast(col)=range
条件で FullScan が発生する問題を修正#45199 @ アイリンキッド - MPP 実行プランで集計がユニオンを介してプッシュダウンされると、結果が正しくなくなる問題を修正しました#45850 @ アイリンキッド
in (?)
とのバインディングがin (?, ... ?)
#44298 @ qw4990と一致しない問題を修正non-prep plan cache
実行プラン#47008 @ qw4990を再利用するときに接続照合順序を考慮しないことによって発生するエラーを修正- 実行されたプランがプランキャッシュ#46159 @ qw4990にヒットしない場合に警告が報告されない問題を修正しました
plan replayer dump explain
エラー#46197 @ 時間と運命を報告する問題を修正- CTE で DML ステートメントを実行するとpanicが発生する可能性がある問題を修正#46083 @ ウィノロス
- 2つのサブクエリ#46160 @ qw4990を結合するときに
TIDB_INLJ
ヒントが有効にならない問題を修正 MERGE_JOIN
の結果が間違っている問題を修正#46580 @ qw4990
- ハッシュパーティション化されていないテーブルに対して
ティクヴ
- Titan が有効になっているときに TiKV が起動に失敗し、
Blob file deleted twice
エラーが発生する問題を修正しました#15454 @ コナー1996 - スレッド自発的およびスレッド非自発的モニタリング パネル#15413 @ スペードA-タンにデータがない問題を修正しました
- raftstore-applys #15371 @ コナー1996が継続的に増加するデータエラーを修正
- リージョン#13311 @ ジグアンのメタデータが正しくないことが原因で発生する TiKVpanicの問題を修正しました。
sync_recovery
からsync
#15366 @ ノルーシュに切り替えた後に QPS が 0 に低下する問題を修正- オンライン安全でないリカバリがタイムアウト#15346 @ コナー1996で中止されない問題を修正
- CpuRecord #15304 @ 金星の上によって発生する可能性のあるメモリリークの問題を修正しました
- バックアップクラスタがダウンし、プライマリクラスタが#12914 @ コナー1996でクエリされたときに
"Error 9002: TiKV server timeout"
発生する問題を修正しました - プライマリ クラスターが#12320 @ ディスクに回復した後に TiKV が再起動するとバックアップ TiKV が停止する問題を修正しました。
- Titan が有効になっているときに TiKV が起動に失敗し、
PD
- フラッシュバック#6912 @ 金星の上中にリージョン情報が更新されず保存されない問題を修正
- ストア構成#6918 @ バッファフライの同期が遅いために PD リーダーの切り替えが遅くなる問題を修正しました。
- Scatter Peers #6962 @ バッファフライでグループが考慮されない問題を修正
- RU消費量が0未満の場合にPDがクラッシュする問題を修正#6973 @ キャビンフィーバーB
- 変更された分離レベルがデフォルトの配置ルール#7121 @ rleungxに同期されない問題を修正しました
- クラスターが大きい場合、クライアントが定期的に更新すると
min-resolved-ts
PD OOM が発生する可能性がある問題を修正#46664 @ ヒューシャープ
TiFlash
ツール
バックアップと復元 (BR)
ティCDC
- PD のスケールアップおよびスケールダウン中に TiCDC が無効な古いアドレスにアクセスする問題を修正#9584 @ ふびんず @ アズドンメン
- 一部のシナリオで changefeed が失敗する問題を修正#9309 #9450 #9542 #9685 @ ヒック @ チャールズ・チュン96
- アップストリーム#9430 @ スドジで 1 つのトランザクションで複数の行の一意のキーが変更されると、レプリケーション書き込み競合が発生する可能性がある問題を修正しました。
- アップストリームの同じDDL文で複数のテーブルの名前を変更するとレプリケーションエラーが発生する問題を修正#9476 #9488 @ チャールズ・チュン96 @ アズドンメン
- CSV ファイルで中国語の文字が検証されない問題を修正#9609 @ チャールズ・チュン96
- すべての変更フィードが削除された後に上流の TiDB GC がブロックされる問題を修正#9633 @ スドジ
scale-out
が有効になっている場合にノード間で書き込みキーが不均等に分散される問題を修正#9665 @ スドジ- ログに機密ユーザー情報が記録される問題を修正#9690 @ スドジ
TiDB データ移行 (DM)
- DM が大文字と小文字を区別しない照合#9489 @ ヒヒフフで競合を正しく処理できない問題を修正
- DM バリデーターのデッドロック問題を修正し、再試行を#9257 @ D3ハンターに強化しました。
- 失敗した DDL がスキップされ、後続の DDL が実行されない場合に、DM によって返されるレプリケーション ラグが増大し続ける問題を修正#9605 @ D3ハンター
- オンライン DDL #9587 @ GMHDBJDをスキップするときに DM が上流のテーブル スキーマを適切に追跡できない問題を修正しました。
- 楽観的モード#9588 @ GMHDBJDでタスクを再開するときに DM がすべての DML をスキップする問題を修正
- DM が楽観的モード#9788 @ GMHDBJDでパーティション DDL をスキップする問題を修正
TiDB Lightning
寄稿者
TiDB コミュニティの以下の貢献者に感謝いたします。