📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

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が部分的なソートを補うために多くの追加作業を実行することになりました。また、これらのジョブを実行するには、TiDBノードがソート用のローカルディスク領域をTiKVにロードする前に割り当てる必要がありました。
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エンジンの使用をサポートします。
SQL 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 ノードを指定します (実験的) IMPORT INTOまたはADD INDEX SQL 文を、既存の TiDB ノードの一部、または新規に追加された TiDB ノードに対して実行するかどうかを柔軟に指定できます。このアプローチにより、他の TiDB ノードからのリソース分離が可能になり、業務への影響を防ぎながら、先行する SQL 文の実行に最適なパフォーマンスを確保できます。

機能の詳細

スケーラビリティ

  • 分散実行フレームワーク (DXF) のバックエンドADD INDEXまたはIMPORT INTOタスクを並列実行するための TiDB ノードの選択をサポート (実験的) #46453 @ ywqzzy

    リソースを大量に消費するクラスターでADD INDEXまたはIMPORT INTOタスクを並列実行すると、TiDBノードのリソースを大量に消費し、クラスターのパフォーマンス低下につながる可能性があります。v7.4.0以降では、システム変数tidb_service_scope使用して、 TiDB 分散実行フレームワーク (DXF)以下の各TiDBノードのサービススコープを制御できます。既存のTiDBノードを複数選択するか、新しいTiDBノードにTiDBサービススコープを設定すると、すべての並列タスクADD INDEXIMPORT INTOこれらのノードでのみ実行されます。このメカニズムにより、既存のサービスへのパフォーマンスへの影響を回避できます。

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

  • パーティション化されたRaft KVstorageエンジンの強化 (実験的) #11515 #12842 @ 忙しいカケス @ トニー・シュッキ @ タボキ @ バッファフライ @ 5kbps @ スペードA-タン @ ノルーシュ

    TiDB v6.6.0 では、実験的機能として Partitioned Raft KVstorageエンジンが導入されました。このエンジンは、複数の RocksDB インスタンスを使用して TiKVリージョンデータを格納し、各リージョンのデータは個別の RocksDB インスタンスに独立して格納されます。

    TiDB v7.4.0では、Partitioned Raft KVstorageエンジンの互換性と安定性がさらに向上しました。大規模データテストを通じて、DM、 Dumpling、 TiDB Lightning、TiCDC、 BR、PITRといったTiDBエコシステムツールおよび機能との互換性が確保されています。さらに、Partitioned Raft KVstorageエンジンは、読み取りと書き込みが混在するワークロードにおいてもより安定したパフォーマンスを提供し、特に書き込み負荷の高いシナリオに適しています。さらに、各TiKVノードは8コアCPUをサポートし、8TBのデータstorageと64GBのメモリを搭載できるようになりました。

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

  • TiFlashは、分散storageおよびコンピューティングアーキテクチャ(GA)をサポートします#6882 @ ジェイソン・ファン @ ジンヘリン @ そよ風のような @ リデズ @ カルビンネオ @ ロイド・ポティガー

    v7.0.0では、 TiFlashは実験的機能として、分散storageおよびコンピューティングアーキテクチャを導入しました。一連の改良を経て、v7.4.0以降、 TiFlashの分散storageおよびコンピューティングアーキテクチャがGAとなります。

    このアーキテクチャでは、 TiFlashノードは2種類(コンピューティングノードと書き込みノード)に分かれており、S3 APIと互換性のあるオブジェクトstorageをサポートします。どちらのノードも、コンピューティング容量またはstorage容量を個別に拡張できます。分散storageおよびコンピューティングアーキテクチャでは、 TiFlashレプリカの作成、データのクエリ、オプティマイザーヒントの指定など、結合storageおよびコンピューティングアーキテクチャと同様にTiFlashを使用できます。

    TiFlashの分散storageおよびコンピューティングアーキテクチャ結合storageおよびコンピューティングアーキテクチャは、同じクラスター内で使用したり、相互に変換したりすることはできません。TiFlashをデプロイする際に、使用するアーキテクチャを設定できます。

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

パフォーマンス

  • JSON 演算子MEMBER OFを TiKV #46307 @ wshwsh12にプッシュダウンする機能をサポート

    • value MEMBER OF(json_array)

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

  • 任意のフレーム定義タイプのウィンドウ関数をTiFlash #7376 @ xzhangxian1008にプッシュダウンする機能をサポート

    v7.4.0より前のTiFlashでは、 PRECEDINGまたはFOLLOWING含むウィンドウ関数をサポートしておらず、そのようなフレーム定義を含むウィンドウ関数はTiFlashにプッシュダウンできませんでした。v7.4.0以降、 TiFlashはすべてのウィンドウ関数のフレーム定義をサポートします。この機能は自動的に有効化され、フレーム定義を含むウィンドウ関数は、関連要件が満たされた場合に自動的にTiFlashにプッシュダウンされ、実行されます。

  • クラウドストレージベースのグローバルソート機能を導入して、並列実行におけるADD INDEXおよびIMPORT INTOタスクのパフォーマンスと安定性を向上します (実験的) #45719 @ wjhuang2016

    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 @ ウィンドトーカー

    TiFlash v7.0.0以降、 GROUP BY ORDER BY 3つの演算子のデータスピル制御がサポートされます。この機能により、データサイズが利用可能なメモリを超えた場合にクエリの終了やシステムクラッシュなどの問題を防ぐことができます。ただし、各演算子のスピルを個別に管理するのは煩雑で、全体JOINなリソース制御には効果的ではありません。

    v7.4.0では、 TiFlashにクエリレベルのデータスピルが導入されました。TiFlashTiFlashへのクエリのメモリ制限をtiflash_mem_quota_query_per_nodeに設定し、データスピルをトリガーするメモリ比率をtiflash_query_spill_ratioに設定することで、クエリのメモリ使用量を効率的に管理し、 TiFlashのメモリリソースをより適切に制御できます。

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

  • ユーザー定義の TiKV 読み取りタイムアウト#45380 @ crazycs520をサポート

    通常、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()が導入されました。ヒントSET_VAR() SQL文に含めることで、文の実行中にシステム変数の値を一時的に変更できます。これにより、様々な文の環境設定が容易になります。例えば、リソースを大量に消費する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 @ シーライズをサポートします。

    TiFlash v7.2.0 以降、パイプライン実行モデルが導入されました。このモデルは、すべてのスレッドリソースを一元管理し、タスク実行を均一にスケジュールすることで、スレッドリソースを最大限に活用し、リソースの過剰使用を回避します。v7.4.0 では、 TiFlash はスレッドリソースの使用状況の統計を改善し、パイプライン実行モデルは GA 機能となり、デフォルトで有効化されます。この機能はTiFlashリソース制御機能と相互に依存しているため、TiDB v7.4.0 では、以前のバージョンでパイプライン実行モデルの有効化/無効化に使用されていた変数tidb_enable_tiflash_pipeline_model削除されました。代わりに、 TiFlashパラメータtidb_enable_resource_controlを設定することで、パイプライン実行モデルとTiFlashリソース制御機能を有効化または無効化できます。

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

  • オプティマイザモード#46080 @ 時間と運命のオプションを追加

    TiDB v7.4.0 では、オプティマイザが使用する推定方法を制御する新しいシステム変数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用意されています。

    TiDB v7.4.0以降、テーブルのハッシュ結合を制御するためのシステム変数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) されます。

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

SQL

  • TiDBはパーティションタイプ管理#42728 @ ミョンスをサポート

    v7.4.0より前のバージョンでは、TiDBのパーティションテーブルのパーティションタイプは変更できませんでした。v7.4.0以降では、パーティションテーブルを非パーティションテーブルに変更したり、非パーティションテーブルをパーティションテーブルに変更したり、パーティションタイプの変更がサポートされるようになりました。これにより、パーティションテーブルのパーティションタイプと数を柔軟に調整できるようになりました。例えば、 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 つの照合順序が追加されました。5 utf8mb4_0900_ai_ci MySQL 8.0 のデフォルトの照合順序です。

    TiDB v7.4.0では、MySQL 8.0と互換性のあるシステム変数default_collation_for_utf8mb4も導入されました。これにより、utf8mb4文字セットのデフォルトの照合順序を指定できるようになり、 MySQL 5.7以前のバージョンからの移行やデータレプリケーションとの互換性が確保されます。

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

可観測性

  • ログ#46071 @ lcwangchaoにセッション接続 ID とセッション エイリアスを追加することをサポート

    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ハンター強化する

    バージョン7.4.0以降では、 IMPORT INTOステートメントにCLOUD_STORAGE_URIのオプションを追加することで、インポートのパフォーマンスと安定性を向上させるグローバルソート機能(実験的)を有効にすることができますCLOUD_STORAGE_URIのオプションでは、エンコードされたデータの保存先となるクラウドstorageのアドレスを指定できます。

    さらに、v7.4.0 では、 IMPORT INTO機能に次の機能が導入されています。

    • Split_Fileオプションの構成をサポートします。これにより、大きな CSV ファイルを複数の 256 MiB の小さな CSV ファイルに分割して並列処理し、インポート パフォーマンスを向上させることができます。
    • 圧縮されたCSVファイルとSQLファイル.snappyインポート.zstサポートします。サポートされている.zstd形式は、 .gzip .gz

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

  • Dumplingは、データをCSVファイルにエクスポートする際に、ユーザー定義のターミネータをサポートします#46982 @ GMHDBJD

    バージョン7.4.0より前のDumplingでは、データをCSVファイルにエクスポートする際に、行末文字として"\r\n"使用します。そのため、行末文字として"\n"しか認識しない下流システムでは、エクスポートされたCSVファイルを解析できないか、解析前にサードパーティ製の変換ツールを使用する必要があります。

    バージョン7.4.0以降、 Dumplingに新しいパラメータ--csv-line-terminatorが導入されました。このパラメータを使用すると、データをCSVファイルにエクスポートする際に、任意の終端文字を指定できます。このパラメータは"\r\n""\n"サポートしています。以前のバージョンとの一貫性を保つため、デフォルトの終端文字は"\r\n"です。

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

  • TiCDCはPulsar #9413 @ ヤムチナ @ アズドンメンへのデータ複製をサポート

    Pulsarは、クラウドネイティブかつ分散型のメッセージストリーミングプラットフォームであり、リアルタイムデータストリーミングエクスペリエンスを大幅に向上させます。v7.4.0以降、TiCDCは変更データをPulsarにcanal-json形式で複製し、Pulsarとのシームレスな統合を実現します。この機能により、TiCDCはTiDBの変更を容易にキャプチャしてPulsarに複製できるため、データ処理と分析機能に新たな可能性をもたらします。Pulsarから新たに生成された変更データを読み取り、処理する独自のコンシューマーアプリケーションを開発することで、特定のビジネスニーズに対応できます。

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

  • TiCDC はクレームチェックパターン#9153 @ 3エースショーハンドで大きなメッセージの処理を改善します

    バージョン7.4.0より前のTiCDCでは、Kafkaの最大メッセージサイズ( max.message.bytes )を超える大きなメッセージを下流に送信できませんでした。バージョン7.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です。3 にOFFすると、他に利用可能な実行プランがない限り、オプティマイザはテーブルのハッシュ結合を選択しません。
tidb_opt_objective新しく追加されたこの変数はオプティマイザの目的を制御します。1 moderate TiDB v7.4.0 より前のバージョンのデフォルトの動作を維持し、オプティマイザはより多くの情報を使用してより優れた実行プランを生成しようとします。3 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新しく追加されたTiDBがクエリ内でTiKV RPC読み取りリクエストを送信する際のタイムアウトを制御します。デフォルト値0 、デフォルトのタイムアウト(通常は40秒)が使用されることを示します。

コンフィグレーションファイルのパラメータ

コンフィグレーションファイルコンフィグレーションパラメータタイプを変更説明
TiDBenable-stats-cache-mem-quota修正済みデフォルト値はfalseからtrueに変更され、TiDB 統計のキャッシュのメモリ制限がデフォルトで有効になることを意味します。
TiKV[`rocksdb.[defaultcfwritecflockcf].periodic-compaction-seconds`](/tikv-configuration-file.md#periodic-compaction-seconds-new-in-v720)
TiKV[`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に変更します。新しい形式では、小さなファイルを結合することで物理ファイルの数を削減できます。
TiFlashtask_scheduler_active_set_soft_limit修正済みデフォルト値をvcpu * 0.25からvcpu * 2に変更します。
Dumpling--csv-line-terminator新しく追加されたCSVファイルの終端文字を指定します。このオプションは"\r\n""\n"サポートします。デフォルト値は"\r\n"で、以前のバージョンと同じです。
TiCDCclaim-check-storage-uri新しく追加されたlarge-message-handle-option claim-checkに設定する場合、 claim-check-storage-uri有効な外部storageアドレスに設定する必要があります。そうでない場合、チェンジフィードの作成時にエラーが発生します。
TiCDClarge-message-handle-compression新しく追加されたエンコード中に圧縮を有効にするかどうかを制御します。デフォルト値は空で、無効を意味します。
TiCDClarge-message-handle-option修正済みこの設定項目は新しい値claim-checkを追加します。これをclaim-checkに設定すると、TiCDC Kafka シンクは、メッセージサイズが制限を超えた場合にメッセージを外部storageに送信することをサポートし、外部storage内のこの大きなメッセージのアドレスを含むメッセージを Kafka に送信します。

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

改善点

  • TiDB

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

    • OOM #15458 @ 金星の上を防ぐためにリゾルバのメモリ使用量を最適化します
    • ルータオブジェクトのLRUCacheを排除してメモリ使用量を削減し、OOM #15430 @ コナー1996を防止します。
    • TiCDC リゾルバ#15412 @ 金星の上のメモリ使用量を削減
    • RocksDB 圧縮#15324 @ 金星の上によるメモリ変動を削減
    • Partitioned Raft KV #15269 @ 金星の上のフロー制御モジュールのメモリ消費を削減
    • 接続再試行のプロセスでPDクライアントのバックオフメカニズムを追加し、エラー再試行中に再試行間隔を徐々に増やしてPD圧力#15428 @ ノルーシュを軽減します。
    • RocksDB #15424background_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ポイントシュート
    • TiCDC

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

      • リージョンスキャッタフェーズ#46203 @ ミッタルリシャブ中のTiDB Lightningの再試行ロジックを最適化します。
      • データインポートフェーズ#46253 @ ランス6716中のno leaderエラーに対するTiDB Lightningの再試行ロジックを最適化します。

バグ修正

  • TiDB

    • ハッシュパーティション化されていないテーブルに対してBatchPointGet演算子が誤った結果を返す問題を修正しました#45889 @ 定義2014
    • ハッシュパーティションテーブル#46779 @ ジフハウスに対してBatchPointGet演算子が誤った結果を返す問題を修正しました
    • TiDBパーサーが状態のままになり、解析エラーが発生する問題を修正#45898 @ qw4990
    • EXCHANGE PARTITION制約#45922 @ ミョンスをチェックしない問題を修正
    • tidb_enforce_mppシステム変数が正しく復元できない問題を修正#46214 @ djshow832
    • 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 @ 天菜まおに設定されている場合にnext_row_id in SHOW CREATE TABLEが間違っている問題を修正しました
    • サブクエリ#45838 @ djshow832で CTE を使用すると解析中に発生するpanic問題を修正しました
    • EXCHANGE PARTITION失敗またはキャンセルされた場合に、パーティションテーブルの制限が元のテーブルに残る問題を修正#45920 #45791 @ ミョンス
    • リストパーティションの定義で、 NULLと空の文字列#45694 @ ミョンスの両方の使用がサポートされていない問題を修正しました。
    • パーティション交換#46492 @ ミョンス中にパーティション定義に準拠していないデータを検出できない問題を修正
    • tmp-storage-quota設定が#45161 #26806 @ wshwsh12で有効にならない問題を修正
    • WEIGHT_STRING()関数が照合順序#45725 @ ドヴェーデンと一致しない問題を修正
    • インデックス結合のエラーによりクエリが停止する可能性がある問題を修正#45716 @ wshwsh12
    • DATETIMEまたはTIMESTAMP列を数値定数#38361 @ イービン87と比較するときに、MySQL と動作が一致しない問題を修正しました。
    • 符号なし型とDuration型定数#45410 @ wshwsh12を比較したときに発生する誤った結果を修正しました
    • アクセスパスプルーニングロジックが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
  • TiKV

    • 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 @ HuSharp
  • TiFlash

  • ツール

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

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

    • 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 @ lyzx2001のときにチェックサムがエラーを報告する問題を修正しました
      • PDクラスタアドレスが#43436 @ リチュンジュに変更されるとデータのインポートが失敗する問題を修正しました

寄稿者

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

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