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 INDEXIMPORT INTOなどのタスクは、ローカライズされた部分的なソートを意味し、最終的には TiKV が部分的なソートを補うために多くの追加作業を実行することになりました。また、これらのジョブでは、TiKV にロードする前に、TiDB ノードがソート用のローカル ディスク領域を割り当てる必要がありました。
v7.4.0 で導入されたグローバル ソート機能により、データは TiKV にロードされる前に、グローバル ソートのために外部共有storage(このバージョンでは S3) に一時的に保存されます。これにより、TiKV が余分なリソースを消費する必要がなくなり、 ADD INDEXIMPORT INTOなどの操作のパフォーマンスと安定性が大幅に向上します。
バックグラウンドタスクのリソース制御(実験的) v7.1.0 では、ワークロード間のリソースとstorageのアクセスの干渉を軽減するために、 リソース制御機能が導入されました。TiDB v7.4.0 では、この制御がバックグラウンド タスクにも適用されます。v7.4.0 では、リソース制御によって、自動分析、バックアップと復元、 TiDB Lightningによる一括ロード、オンライン DDL などのバックグラウンド タスクによって生成されたリソースが識別および管理されるようになりました。これは、最終的にはすべてのバックグラウンド タスクに適用されます。
TiFlash はストレージとコンピューティングの分離と S3 (GA) をサポートしますTiFlash分散storageおよびコンピューティングアーキテクチャと S3 共有storageが一般提供開始:
  • TiFlash のコンピューティングとstorageを分離します。これは、弾力的な HTAP リソース利用のマイルストーンです。
  • 低コストで共有storageを提供できる S3 ベースのstorageエンジンの使用をサポートします。
構文TiDBはパーティションタイプの管理をサポートv7.4.0 より前では、範囲/リスト パーティション テーブルは、 TRUNCATEEXCHANGEADDDROPREORGANIZEなどのパーティション管理操作をサポートし、ハッシュ/キー パーティション テーブルは、 ADDCOALESCEなどのパーティション管理操作をサポートします。

現在、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 INDEXIMPORT INTOなどのタスクを実行する場合、各 TiDB ノードは、エンコードされたインデックス KV ペアとテーブル データ KV ペアをソートするために、大量のローカル ディスク領域を割り当てる必要があります。ただし、グローバル ソート機能がないため、プロセス中に異なる TiDB ノード間および各ノード内でデータが重複する可能性があります。その結果、TiKV はこれらの KV ペアをstorageエンジンにインポートしながら、常に圧縮操作を実行する必要があり、 ADD INDEXIMPORT 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 BYORDER BYJOIN 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 : 再編成 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に変更して、実行プランのロールバックの可能性を減らし、システムの安定性を向上させることができます。

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

構文

  • 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_ciutf8mb4_0900_bin #37566 @ ヤンケオ @ ジムララ @ bb7133をサポート

    TiDB v7.4.0 では、MySQL 8.0 からのデータ移行のサポートが強化され、 utf8mb4_0900_ai_ciutf8mb4_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オプションを追加してグローバルソート機能 (実験的) を有効にし、インポートのパフォーマンスと安定性をCLOUD_STORAGE_URIさせることができます。7 オプションでは、エンコードされたデータのクラウド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 INDEXIMPORT 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.[defaultcfwritecflockcf].periodic-compaction-seconds`](/tikv-configuration-file.md#periodic-compaction-seconds-new-in-v720)
ティクヴ[`rocksdb.[defaultcfwritecflockcf].ttl`](/tikv-configuration-file.md#ttl-new-in-v720)
TiFlashflash.compact_log_min_gap新しく追加された現在のRaftステート マシンによって進められたapplied_indexと最後のディスク スピル時のapplied_indexとの差がcompact_log_min_gapを超えると、 TiFlash はTiKV からCompactLogコマンドを実行し、データをディスクにスピルします。
TiFlashprofiles.default.enable_resource_control新しく追加されたTiFlashリソース制御機能を有効にするかどうかを制御します。
TiFlashstorage.format_version修正済みデフォルト値を4から5に変更します。新しい形式では、小さいファイルを結合することで物理ファイルの数を減らすことができます。
Dumpling--csv-line-terminator新しく追加されたCSV ファイルの希望するターミネータを指定します。このオプションは"\r\n""\n"サポートします。デフォルト値は"\r\n"で、以前のバージョンと一致しています。
ティCDCclaim-check-storage-uri新しく追加されたlarge-message-handle-option claim-checkに設定する場合、 claim-check-storage-uri有効な外部storageアドレスに設定する必要があります。そうしないと、変更フィードを作成するとエラーが発生します。
ティCDClarge-message-handle-compression新しく追加されたエンコード中に圧縮を有効にするかどうかを制御します。デフォルト値は空で、有効になっていないことを意味します。
ティCDClarge-message-handle-option修正済みこの設定項目は、新しい値claim-checkを追加します。これをclaim-checkに設定すると、TiCDC Kafka シンクは、メッセージ サイズが制限を超えた場合にメッセージを外部storageに送信することをサポートし、外部storage内のこの大きなメッセージのアドレスを含むメッセージを Kafka に送信します。

廃止および削除された機能

改善点

  • ティビ

    • パーティションテーブル#47071 #47104 #46804 @ ホーキングレイでのANALYZE操作のメモリ使用量とパフォーマンスを最適化します
    • 統計ガベージコレクション#31778 @ ウィノロスのメモリ使用量とパフォーマンスを最適化します
    • インデックスマージ交差のプッシュダウンlimitを最適化してクエリパフォーマンス#46863 @ アイリンキッドを向上させる
    • IndexLookup多数のテーブル取得タスクが含まれる場合に誤ってフルテーブルスキャンを選択する可能性を最小限に抑えるためにコストモデルを改善します#45132 @ qw4990
    • 結合除去ルールを最適化して、 join on unique keys #46248 @ 修正DBのクエリパフォーマンスを向上させます。
    • 実行エラーを回避するために、複数値インデックス列の照合順序をbinaryに変更します#46717 @ ヤンケオ
  • ティクヴ

    • OOM #15458 @ 金星の上を防ぐためにリゾルバのメモリ使用量を最適化します
    • ルータオブジェクトのLRUCacheを排除してメモリ使用量を減らし、OOM #15430 @ コナー1996を防止します。
    • TiCDC リゾルバ#15412 @ 金星の上のメモリ使用量を削減
    • RocksDB 圧縮によるメモリ変動を軽減#15324 @ 金星の上
    • Partitioned Raft KV #15269 @ 金星の上のフロー制御モジュールのメモリ消費を削減
    • 接続再試行のプロセスで PD クライアントのバックオフ メカニズムを追加します。これにより、エラー再試行中に再試行間隔が徐々に長くなり、PD の負荷が軽減されます#15428 @ ノルーシュ
    • RocksDB #15424 @ 栄光background_compaction動的に調整するサポート
  • PD

    • TSO 関連の問題の調査を容易にするために TSO トレース情報を最適化します#6856 @ 天菜まお
    • メモリ使用量を削減するために HTTP クライアント接続の再利用をサポート#6913 @ ノルーシュ
    • バックアップ クラスタが切断されたときに PD がクラスタ ステータスを自動的に更新する速度を向上#6883 @ ディスク
    • リソース制御クライアントの構成取得方法を強化し、最新の構成を動的に取得する#7043 @ ノルーシュ
  • TiFlash

    • TiFlash書き込みプロセスのスピルポリシーを最適化することで、ランダム書き込みワークロード中の書き込みパフォーマンスを向上します#7564 @ カルビンネオ
    • TiFlash #8068 @ カルビンネオのRaftレプリケーション プロセスに関するメトリックを追加します。
    • ファイルシステムの inode #7595 @ ホンユンヤンが枯渇するのを避けるために、小さなファイルの数を減らします。
  • ツール

    • バックアップと復元 (BR)

      • リージョンリーダーシップの移行が発生すると、PITR ログバックアップの進行のレイテンシーが長くなるという問題を緩和します#13638 @ ユジュンセン
      • HTTPクライアント#46011 @ リーヴルスMaxIdleConnsMaxIdleConnsPerHostパラメータを設定することにより、ログバックアップとPITR復元タスクの接続再利用のサポートを強化します。
      • PD または外部 S3storageへの接続に失敗した場合のBRのフォールト トレランスを向上#42909 @ リーヴルス
      • 新しい復元パラメータWaitTiflashReadyを追加します。このパラメータを有効にすると、 TiFlashレプリカが正常に複製された後に復元操作が完了します#43828 #46302 @ 3ポインター
      • ログバックアップのCPUオーバーヘッドを削減resolve lock #40759 @ 3ポインター
    • ティCDC

      • ADD INDEX DDL操作を複製する実行ロジックを最適化して、後続のDMLステートメント#9644 @ スドジをブロックしないようにします。
    • TiDB Lightning

      • リージョン分散フェーズ#46203 @ ミッタルリシャブ中のTiDB Lightningの再試行ロジックを最適化します。
      • データインポートフェーズ#46253 @ ランス6716中のno leaderエラーに対する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 TABLEnext_row_idが間違っている問題を修正しました
    • サブクエリ#45838 @ 翻訳者で CTE を使用すると解析中に発生するpanic問題を修正しました
    • EXCHANGE PARTITION失敗またはキャンセルされた場合に、パーティション化されたテーブルの制限が元のテーブルに残る問題を修正#45920 #45791 @ ミョンス
    • リストパーティションの定義でNULLと空の文字列#45694 @ ミョンスの両方の使用がサポートされない問題を修正
    • パーティション交換#46492 @ ミョンス中にパーティション定義に準拠していないデータを検出できない問題を修正
    • tmp-storage-quota設定が有効にならない問題を修正#45161 #26806 @ うわー
    • WEIGHT_STRING()関数が照合順序#45725 @ ドヴェーデンと一致しない問題を修正しました
    • インデックス結合のエラーによりクエリが停止する可能性がある問題を修正#45716 @ うわー
    • DATETIMEまたはTIMESTAMP列を数値定数#38361 @ いいえと比較するときに動作が 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 が停止する問題を修正しました。
  • PD

    • フラッシュバック#6912 @ 金星の上中にリージョン情報が更新されず保存されない問題を修正
    • ストア構成#6918 @ バッファフライの同期が遅いために PD リーダーの切り替えが遅くなる問題を修正しました。
    • Scatter Peers #6962 @ バッファフライでグループが考慮されない問題を修正しました
    • RU消費量が0未満の場合にPDがクラッシュする問題を修正#6973 @ キャビンフィーバーB
    • 変更された分離レベルがデフォルトの配置ルール#7121 @ rleungxに同期されない問題を修正しました
    • クラスターが大きい場合、クライアントが定期的に更新するとmin-resolved-ts PD OOM が発生する可能性がある問題を修正#46664 @ ヒューシャープ
  • TiFlash

  • ツール

    • バックアップと復元 (BR)

      • バックアップが失敗したときに誤解を招くエラーメッセージresolve lock timeout実際のエラーを隠してしまう問題を修正#43236 @ ユジュンセン
      • PITR を使用して暗黙の主キーを回復すると競合が発生する可能性がある問題を修正#46520 @ 3ポインター
      • PITR を使用してメタ kv を回復するとエラーが発生する可能性がある問題を修正#46578 @ リーヴルス
      • BR統合テストケース#46561 @ ピュアリンドのエラーを修正
    • ティCDC

    • 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 LightningがテーブルNONCLUSTERED auto_incrementAUTO_ID_CACHE=1をインポートした後、データを挿入するとエラーが返される問題を修正しました#46100 @ 天菜まお
      • checksum = "optional" #45382 @ 翻訳者のときにチェックサムがエラーを報告する問題を修正しました
      • PD クラスタ アドレスが#43436 @ リチュンジュに変更されるとデータのインポートが失敗する問題を修正しました

寄稿者

TiDB コミュニティの以下の貢献者に感謝いたします。

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