重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

TiDB5.4リリースノート

発売日:2022年2月15日

TiDBバージョン:5.4.0

v5.4では、主な新機能または改善点は次のとおりです。

  • GBK文字セットをサポートする
  • 複数の列のインデックスのフィルタリング結果をマージするデータへのアクセスにインデックスマージを使用することをサポートします
  • セッション変数を使用した古いデータの読み取りをサポート
  • 統計を収集するための構成の永続化をサポート
  • TiKVのログストレージRaft EngineとしてRaftEngineの使用をサポート(実験的)
  • クラスタへのバックアップの影響を最適化する
  • バックアップストレージとしてのAzureBlobストレージの使用のサポート
  • TiFlashとMPPエンジンの安定性とパフォーマンスを継続的に改善します
  • TiDB Lightningにスイッチを追加して、データを含む既存のテーブルへのインポートを許可するかどうかを決定します
  • 連続プロファイリング機能の最適化(実験的)
  • TiSparkはユーザーの識別と認証をサポートします

互換性の変更

ノート:

以前のTiDBバージョンからv5.4.0にアップグレードするときに、すべての中間バージョンの互換性の変更に関する注意事項を知りたい場合は、対応するバージョンのリリースノートを確認できます。

システム変数

変数名タイプを変更する説明
tidb_enable_column_tracking新しく追加されましたTiDBがPREDICATE COLUMNSを収集できるようにするかどうかを制御します。デフォルト値はOFFです。
tidb_enable_paging新しく追加されましたページングの方法を使用して、 IndexLookUp人のオペレーターでコプロセッサー要求を送信するかどうかを制御します。デフォルト値はOFFです。
IndexLookupLimitを使用し、 LimitIndexScanにプッシュダウンできない読み取りクエリの場合、読み取りクエリの待機時間が長くなり、TiKVのunified read poolのCPU使用率が高くなる可能性があります。このような場合、 Limit演算子は少数のデータセットしか必要としないため、 tidb_enable_pagingONに設定すると、TiDBが処理するデータが少なくなり、クエリの待機時間とリソース消費が削減されます。
tidb_enable_top_sql新しく追加されましたTop SQL機能を有効にするかどうかを制御します。デフォルト値はOFFです。
tidb_persist_analyze_options新しく追加されましたANALYZE構成の永続性機能を有効にするかどうかを制御します。デフォルト値はONです。
tidb_read_staleness新しく追加されました現在のセッションで読み取ることができる履歴データの範囲を制御します。デフォルト値は0です。
tidb_regard_null_as_point新しく追加されましたオプティマイザが、インデックスアクセスのプレフィックス条件としてnull等価を含むクエリ条件を使用できるかどうかを制御します。
tidb_stats_load_sync_wait新しく追加されました統計の同期ロード機能を有効にするかどうかを制御します。デフォルト値0は、機能が無効になっていて、統計が非同期にロードされることを意味します。この機能が有効になっている場合、この変数は、SQL最適化がタイムアウトする前に統計の同期ロードを待機できる最大時間を制御します。
tidb_stats_load_pseudo_timeout新しく追加されましたSQLが失敗するか( OFF )、疑似統計の使用にフォールバックするか( ON )、統計の同期ロードがタイムアウトに達するタイミングを制御します。デフォルト値はOFFです。
tidb_backoff_lock_fast修正済みデフォルト値は100から10に変更されます。
tidb_enable_index_merge修正済みデフォルト値はOFFからONに変更されます。
  • TiDBクラスタをv4.0.0より前のバージョンからv5.4.0以降にアップグレードする場合、この変数はデフォルトでOFFです。
  • TiDBクラスタをv4.0.0以降からv5.4.0以降にアップグレードする場合、この変数はアップグレード前と同じままです。
  • v5.4.0以降の新しく作成されたTiDBクラスターの場合、この変数はデフォルトでONです。
tidb_store_limit修正済みv5.4.0より前では、この変数はインスタンスレベルおよびグローバルに構成できました。 v5.4.0以降、この変数はグローバル構成のみをサポートします。

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

Configuration / コンフィグレーションファイルConfiguration / コンフィグレーションタイプを変更する説明
TiDBstats-load-concurrency新しく追加されましたTiDB同期ロード統計機能が同時に処理できる列の最大数を制御します。デフォルト値は5です。
TiDBstats-load-queue-size新しく追加されましたTiDB同期ロード統計機能がキャッシュできる列要求の最大数を制御します。デフォルト値は1000です。
TiKVsnap-generator-pool-size新しく追加されましたsnap-generatorスレッドプールのサイズ。デフォルト値は2です。
TiKVlog.file.max-size log.file.max-days log.file.max-backups新しく追加されました詳細については、 TiKVConfiguration / コンフィグレーションファイルlog.fileを参照してください。
TiKVraft-engine新しく追加されましたenable recovery-mode target-file-size bytes-per-sync recovery-read-block-size purge-threshold recovery-read-block-size batch-compression-threshold recovery-threads dir詳細については、 TiKVConfiguration / コンフィグレーションファイル-raft raft-engineを参照してください。
TiKVbackup.enable-auto-tune新しく追加されましたv5.3.0では、デフォルト値はfalseです。 v5.4.0以降、デフォルト値はtrueに変更されています。このパラメーターは、クラスタリソースの使用率が高い場合にクラスタへの影響を減らすために、バックアップタスクで使用されるリソースを制限するかどうかを制御します。デフォルトの構成では、バックアップタスクの速度が遅くなる可能性があります。
TiKVlog-level log-format log-file log-rotation-size修正済みTiKVログパラメータの名前は、 log.enable-timestamp log.level log.format置き換えられlog.file.filename 。古いパラメータのみを設定し、それらの値がデフォルト以外の値に設定されている場合、古いパラメータは新しいパラメータとの互換性を維持します。古いパラメータと新しいパラメータの両方が設定されている場合、新しいパラメータが有効になります。詳細については、 TiKVConfiguration / コンフィグレーションファイル-ログを参照してください。
TiKVlog-rotation-timespan削除されましたログローテーション間のタイムスパン。このタイムスパンが経過すると、ログファイルがローテーションされます。つまり、現在のログファイルのファイル名にタイムスタンプが追加され、新しいログファイルが作成されます。
TiKVallow-remove-leader削除されましたメインスイッチの削除を許可するかどうかを決定します。
TiKVraft-msg-flush-interval削除されましたRaftメッセージがバッチで送信される間隔を決定します。 Raftメッセージは、この構成アイテムで指定された間隔ごとにバッチで送信されます。
PDlog.level修正済みデフォルト値は「INFO」から「info」に変更され、大文字と小文字が区別されないことが保証されています。
TiFlashprofile.default.enable_elastic_threadpool新しく追加されましたエラスティックスレッドプール機能を有効にするか無効にするかを決定します。この構成アイテムを有効にすると、同時実行性の高いシナリオでTiFlashCPU使用率を大幅に向上させることができます。デフォルト値はfalseです。
TiFlashstorage.format_version新しく追加されましたDTFileのバージョンを指定します。デフォルト値は2で、その下にハッシュがデータファイルに埋め込まれます。値を3に設定することもできます。 3の場合、データファイルにはメタデータとトークンデータのチェックサムが含まれ、複数のハッシュアルゴリズムがサポートされます。
TiFlashlogger.count修正済みデフォルト値は10に変更されます。
TiFlashstatus.metrics_port修正済みデフォルト値は8234に変更されます。
TiFlashraftstore.apply-pool-size新しく追加されましたRaftデータをストレージにフラッシュするプール内のスレッドの許容数。デフォルト値は4です。
TiFlashraftstore.store-pool-size新しく追加されましたRaftを処理するスレッドの許容数。これはRaftstoreスレッドプールのサイズです。デフォルト値は4です。
TiDBデータ移行(DM)collation_compatible新しく追加されましたCREATEのSQLステートメントでデフォルトの照合順序を同期するモード。値のオプションは「loose」(デフォルト)と「strict」です。
TiCDCmax-message-bytes修正済みKafkaシンクのデフォルト値max-message-bytes104857601 (10MB)に変更します
TiCDCpartition-num修正済みKafkaSinkのデフォルト値partition-num4から3に変更します。これにより、TiCDCはKafakaパーティションにメッセージをより均等に送信します。
TiDB Lightningmeta-schema-name修正済みターゲットTiDBのメタデータのスキーマ名を指定します。 v5.4.0以降、このスキーマは並列インポートを有効にした場合にのみ作成されます(対応するパラメーターはtikv-importer.incremental-import = trueです)。
TiDB Lightningtask-info-schema-name新しく追加されましたTiDB Lightningが競合を検出したときに重複データが保存されるデータベースの名前を指定します。デフォルトでは、値は「lightning_task_info」です。このパラメーターは、「重複解決」機能を有効にしている場合にのみ指定してください。
TiDB Lightningincremental-import新しく追加されましたデータがすでに存在するテーブルへのデータのインポートを許可するかどうかを決定します。デフォルト値はfalseです。

その他

  • TiDBとPDの間にインターフェースが追加されます。 information_schema.TIDB_HOT_REGIONS_HISTORYシステムテーブルを使用する場合、TiDBは対応するバージョンのPDを使用する必要があります。
  • TiDBサーバー、PDサーバー、およびTiKVサーバーは、ログに関連するパラメーターに統一された命名方法を使用して、ログ名、出力形式、およびローテーションと有効期限のルールを管理し始めます。詳細については、 TiKV構成ファイル-ログを参照してください。
  • v5.4.0以降、プランキャッシュを介してキャッシュされた実行プランのSQLバインディングを作成すると、そのバインディングは、対応するクエリに対してすでにキャッシュされているプランを無効にします。新しいバインディングは、v5.4.0より前にキャッシュされた実行プランには影響しません。
  • v5.3以前のバージョンでは、 TiDBデータ移行(DM)のドキュメントがTiDBドキュメントから独立しています。 v5.4以降、DMドキュメントは同じバージョンのTiDBドキュメントに統合されています。 DMドキュメントサイトにアクセスしなくても、 DMドキュメントを直接読むことができます。
  • cdclogとともにポイントインタイムリカバリ(PITR)の実験的機能を削除します。 v5.4.0以降、cdclogベースのPITRおよびcdclogはサポートされなくなりました。
  • システム変数を「DEFAULT」に設定する動作をMySQL互換にする#29680
  • システム変数lc_time_namesを読み取り専用#30084に設定します
  • tidb_store_limitのスコープをINSTANCEまたはGLOBALからGLOBAL3に設定し#30756
  • 列にゼロが含まれている場合、整数型の列を時間型の列に変換することを禁止します#25728
  • 浮動小数点値を挿入するときにInfまたはNANの値でエラーが報告されない問題を修正します#30148
  • 自動IDが範囲#30301の外にある場合、 REPLACEステートメントが他の行を誤って変更する問題を修正します

新機能

SQL

  • TiDBは、v5.4.0以降のGBK文字セットをサポートしています。

    v5.4.0より前のバージョンでは、 binaryascii 、およびutf8文字セットをサポートしてlatin1 utf8mb4

    中国語ユーザーをより適切にサポートするために、TiDBはv5.4.0以降のGBK文字セットをサポートしています。 TiDBクラスタを初めて初期化するときにTiDB構成ファイルでnew_collations_enabled_on_first_bootstrapオプションを有効にした後、TiDBGBK文字セットはgbk_bingbk_chinese_ciの両方の照合をサポートします。

    GBK文字セットを使用する場合は、互換性の制限に注意する必要があります。詳細については、 文字セットと照合-GBKを参照してください。

安全

  • TiSparkはユーザー認証と承認をサポートします

    TiSpark 2.5.0以降、TiSparkは、データベースユーザー認証とデータベースまたはテーブルレベルでの読み取り/書き込み認証の両方をサポートしています。この機能を有効にすると、データを取得するための描画などの不正なバッチタスクをビジネスが実行するのを防ぐことができます。これにより、オンラインクラスターの安定性とデータセキュリティが向上します。

    この機能はデフォルトで無効になっています。有効になっている場合、TiSparkを介して操作するユーザーに必要な権限がない場合、ユーザーはTiSparkから例外を受け取ります。

    ユーザードキュメント

  • TiUPは、rootユーザーの初期パスワードの生成をサポートしています

    クラスタを開始するためのコマンドに--initつのパラメーターが導入されています。このパラメーターを使用すると、TiUPを使用してデプロイされたTiDBクラスタで、TiUPはデータベースrootユーザーの初期の強力なパスワードを生成します。これにより、パスワードが空のrootユーザーを使用する際のセキュリティリスクが回避され、データベースのセキュリティが確保されます。

    ユーザードキュメント

パフォーマンス

  • 列指向ストレージエンジンTiFlashとコンピューティングエンジンMPPの安定性とパフォーマンスを継続的に改善します

    • MPPエンジンへのより多くの関数の一時停止をサポートします。

      • 文字RPAD()関数STRCMP() LPAD()
      • SUBDATE()関数QUARTER() ADDDATE() DATE_ADD() DATE_SUB()
    • リソース使用率を改善するためのエラスティックスレッドプール機能の導入(実験的)

    • TiKVからデータを複製するときに、行ベースのストレージ形式から列ベースのストレージ形式にデータを変換する効率を向上させます。これにより、データ複製の全体的なパフォーマンスが50%向上します。

    • 一部の構成項目のデフォルト値を調整することにより、TiFlashのパフォーマンスと安定性を向上させます。 HTAPハイブリッドロードでは、単一のテーブルに対する単純なクエリのパフォーマンスが最大20%向上します。

    ユーザーtiflash.tomlファイルを構成しますサポートされているプッシュダウン計算

  • セッション変数を介して、指定された時間範囲内の履歴データを読み取ります

    TiDBは、 Raftコンセンサスアルゴリズムに基づくマルチレプリカ分散データベースです。高同時実行性と高スループットのアプリケーションシナリオに直面して、TiDBは、フォロワーレプリカを介して読み取りパフォーマンスをスケールアウトし、読み取り要求と書き込み要求を分離できます。

    さまざまなアプリケーションシナリオに対して、TiDBはフォロワー読み取りの2つのモードを提供します。強一貫性の読み取りと弱一貫性の履歴読み取りです。強一貫性のある読み取りモードは、リアルタイムデータを必要とするアプリケーションシナリオに適しています。ただし、このモードでは、リーダーとフォロワー間のデータレプリケーションの待ち時間とスループットの低下により、特に地理的に分散された展開の場合、読み取り要求の待ち時間が長くなる可能性があります。

    リアルタイムデータに対する要件がそれほど厳しくないアプリケーションシナリオでは、履歴読み取りモードをお勧めします。このモードは、待ち時間を短縮し、スループットを向上させることができます。 TiDBは現在、次の方法による履歴データの読み取りをサポートしています。SQLステートメントを使用して、過去のある時点からデータを読み取るか、過去の時点に基づいて読み取り専用トランザクションを開始します。どちらの方法も、特定の時点または指定された時間範囲内の履歴データの読み取りをサポートしています。詳しくはAS OF TIMESTAMP句を使用して履歴データを読み取るをご覧ください。

    v5.4.0以降、TiDBは、セッション変数を介して指定された時間範囲内の履歴データの読み取りをサポートすることにより、履歴読み取りモードの使いやすさを向上させています。このモードは、準リアルタイムのシナリオで低遅延、高スループットの読み取り要求を処理します。変数は次のように設定できます。

    set @@tidb_replica_read=leader_and_follower
    set @@tidb_read_staleness="-5"
    

    この設定により、TiDBは最も近いリーダーまたはフォロワーノードを選択し、5秒以内に最新の履歴データを読み取ることができます。

    ユーザードキュメント

  • インデックスマージのGA

    インデックスマージは、SQL最適化の実験的機能としてTiDBv4.0で導入されました。このメソッドは、クエリで複数列のデータのスキャンが必要な場合に、条件フィルタリングを大幅に高速化します。例として次のクエリを取り上げます。 WHEREステートメントで、 ORで接続されたフィルタリング条件の列key1key2にそれぞれのインデックスがある場合、インデックスマージ機能はそれぞれのインデックスを同時にフィルタリングし、クエリ結果をマージして、マージされた結果を返します。

    SELECT * FROM table WHERE key1 <= 100 OR key2 = 200;
    

    TiDB v4.0より前は、テーブルに対するクエリは、一度に1つのインデックスのみを使用してフィルタリングすることをサポートしていました。データの複数の列をクエリする場合は、インデックスマージを有効にして、個々の列のインデックスを使用することにより、正確なクエリ結果を短時間で取得できます。インデックスマージは、不要な全表スキャンを回避し、多数の複合インデックスを確立する必要がありません。

    v5.4.0では、インデックスマージはGAになります。ただし、次の制限に注意する必要があります。

    • インデックスマージは、選言標準形( X1⋁X2⋁ Xn )のみをサポートします。つまり、この機能は、 WHERE句のフィルタリング条件がORで接続されている場合にのみ機能します。

    • v5.4.0以降の新しくデプロイされたTiDBクラスターの場合、この機能はデフォルトで有効になっています。以前のバージョンからアップグレードされたv5.4.0以降のTiDBクラスターの場合、この機能はアップグレード前の設定を継承し、必要に応じて設定を変更できます(v4.0より前のTiDBクラスターの場合、この機能は存在せず、デフォルトで無効になっています) 。

    ユーザードキュメント

  • Raft Engineのサポート(実験的)

    TiKVのログストレージエンジンとしてRaft Engineを使用することをサポートします。 RocksDBと比較して、 Raft EngineはTiKVI / O書き込みトラフィックを最大40%、CPU使用率を10%削減し、特定の負荷の下でフォアグラウンドスループットを約5%向上させ、テールレイテンシーを20%削減します。さらに、 Raft Engineはログのリサイクルの効率を改善し、極端な状況でのログの蓄積の問題を修正します。

    Raft Engineはまだ実験的機能であり、デフォルトでは無効になっています。 Raft EngineのRaftEngineのデータ形式は、以前のバージョンと互換性がないことに注意してください。クラスタをアップグレードする前に、すべてのTiKVノードでRaft Engineが無効になっていることを確認する必要があります。 RaftEngineはRaft Engine以降のバージョンでのみ使用することをお勧めします。

    ユーザードキュメント

  • PREDICATE COLUMNSに関する統計の収集をサポート(実験的)

    ほとんどの場合、SQLステートメントを実行するとき、オプティマイザーは一部の列( WHERE 、およびJOIN GROUP BYの列など)の統計のみを使用しORDER BY 。これらの使用される列はPREDICATE COLUMNSと呼ばれます。

    v5.4.0以降、 tidb_enable_column_trackingシステム変数の値をONに設定して、TiDBがPREDICATE COLUMNSを収集できるようにすることができます。

    設定後、TiDBは100* stats-leaseごとにPREDICATE COLUMNSの情報をmysql.column_stats_usageのシステムテーブルに書き込みます。ビジネスのクエリパターンが安定している場合は、 ANALYZE TABLE TableName PREDICATE COLUMNS構文を使用して、 PREDICATE COLUMNS列のみの統計を収集できます。これにより、統計収集のオーバーヘッドを大幅に削減できます。

    ユーザードキュメント

  • 統計の同期読み込みをサポート(実験的)

    v5.4.0以降、TiDBは同期ロード統計機能を導入しています。この機能はデフォルトで無効になっています。この機能を有効にした後、TiDBは、SQLステートメントの実行時に、大きなサイズの統計(ヒストグラム、TopN、Count-Min Sketch統計など)をメモリに同期的にロードできます。これにより、SQL最適化の統計の完全性が向上します。

    ユーザードキュメント

安定性

  • ANALYZE構成の永続化をサポート

    統計は、オプティマイザーが実行プランを生成するときに参照する基本情報の1つのタイプです。統計の正確さは、生成された実行プランが妥当であるかどうかに直接影響します。統計の正確性を確保するために、テーブル、パーティション、およびインデックスごとに異なるコレクション構成を設定する必要がある場合があります。

    v5.4.0以降、TiDBはいくつかのANALYZE構成の永続化をサポートしています。この機能により、既存の構成を将来の統計収集に簡単に再利用できます。

    ANALYZE構成永続化機能はデフォルトで有効になっています(システム変数tidb_analyze_version2で、 tidb_persist_analyze_optionsはデフォルトでONです)。この機能を使用して、ステートメントを手動で実行するときに、 ANALYZEステートメントで指定された永続性構成を記録できます。記録されると、次にTiDBが統計を自動的に更新するか、これらの構成を指定せずに手動で統計を収集すると、TiDBは記録された構成に従って統計を収集します。

    ユーザードキュメント

高可用性とディザスタリカバリ

  • クラスタへのバックアップタスクの影響を軽減します

    バックアップと復元(BR)には、自動調整機能が導入されています(デフォルトで有効になっています)。この機能は、クラスタリソースの使用状況を監視し、バックアップタスクで使用されるスレッドの数を調整することで、バックアップタスクがクラスタに与える影響を減らすことができます。場合によっては、バックアップ用のクラスタハードウェアリソースを増やして自動調整機能を有効にすると、クラスタへのバックアップタスクの影響を10%以下に制限できます。

    ユーザードキュメント

  • バックアップのターゲットストレージとしてAzureBlobStorageをサポートする

    Backup&Restore(BR)は、リモートバックアップストレージとしてAzureBlobStorageをサポートします。 TiDBをAzureCloudにデプロイすると、クラスタデータをAzureBlobStorageサービスにバックアップできるようになります。

    ユーザードキュメント

データ移行

  • TiDB Lightningには、データを含むテーブルへのデータのインポートを許可するかどうかを決定するための新機能が導入されています。

    TiDB Lightningでは、構成アイテムincremental-importが導入されています。データを含むテーブルへのデータのインポートを許可するかどうかを決定します。デフォルト値はfalseです。並列インポートモードを使用する場合は、構成をtrueに設定する必要があります。

    ユーザードキュメント

  • TiDB Lightningは、並列インポート用のメタ情報を格納するスキーマ名を導入します

    TiDB Lightningは、 meta-schema-nameの構成アイテムを導入します。並列インポートモードでは、このパラメーターは、ターゲットクラスタの各TiDB Lightningインスタンスのメタ情報を格納するスキーマ名を指定します。デフォルトでは、値は「lightning_metadata」です。このパラメーターに設定される値は、同じ並列インポートに参加する各TiDB Lightningインスタンスで同じである必要があります。そうしないと、インポートされたデータの正確性を保証できません。

    ユーザードキュメント

  • TiDB Lightningは重複した解像度を導入します

    ローカルバックエンドモードでは、 TiDB Lightningは、データのインポートが完了する前に重複データを出力し、その重複データをデータベースから削除します。インポートの完了後に重複データを解決し、アプリケーションルールに従って挿入する適切なデータを選択できます。後続の増分データ移行フェーズで発生する重複データによって引き起こされるデータの不整合を回避するために、重複データに基づいてアップストリームデータソースをクリーンアップすることをお勧めします。

    ユーザードキュメント

  • TiDBデータ移行(DM)でのリレーログの使用を最適化する

    • sourceの構成でenable-relayのスイッチを回復します。

    • start-relayおよびstop-relayコマンドを使用して、リレーログの動的な有効化と無効化をサポートします。

    • リレーログのステータスをsourceにバインドします。 sourceは、DMワーカーに移行された後も、有効または無効の元のステータスを維持します。

    • リレーログのストレージパスをDM-worker構成ファイルに移動します。

    ユーザードキュメント

  • DMでの照合順序の処理を最適化する

    collation_compatibleの構成アイテムを追加します。値のオプションはloose (デフォルト)とstrictです:

    • アプリケーションに照合順序に関する厳密な要件がなく、クエリ結果の照合順序がアップストリームとダウンストリームで異なる可能性がある場合は、デフォルトのlooseモードを使用してエラーの報告を回避できます。
    • アプリケーションに照合順序に関する厳しい要件があり、照合順序がアップストリームとダウンストリームの間で一貫している必要がある場合は、 strictモードを使用できます。ただし、ダウンストリームがアップストリームのデフォルトの照合順序をサポートしていない場合、データレプリケーションでエラーが報告されることがあります。

    ユーザードキュメント

  • DMのtransfer sourceを最適化して、レプリケーションタスクのスムーズな実行をサポートします

    DMワーカーノードの負荷が不均衡な場合、 transfer sourceコマンドを使用して、 sourceの構成を別の負荷に手動で転送できます。最適化後、 transfer sourceコマンドは手動操作を簡素化します。 DMは他の操作を内部で完了するため、関連するすべてのタスクを一時停止するのではなく、ソースをスムーズに転送できます。

  • DM OpenAPIが一般提供になります(GA)

    DMは、データソースの追加やタスクの管理など、APIを介した日常の管理をサポートします。 v5.4.0では、DMOpenAPIがGAになります。

    ユーザードキュメント

診断効率

  • Top SQL (実験的機能)

    新しい実験的機能であるTop SQL (デフォルトでは無効)が導入され、ソースを消費するクエリを簡単に見つけることができます。

    ユーザードキュメント

TiDBデータ共有サブスクリプション

  • クラスターに対するTiCDCの影響を最適化する

    TiCDCを使用すると、TiDBクラスターのパフォーマンスへの影響が大幅に軽減されます。テスト環境では、TiCDCがTiDBに与えるパフォーマンスへの影響を5%未満に減らすことができます。

展開とメンテナンス

  • 継続的なプロファイリングの強化(実験的)

    • サポートされるその他のコンポーネント:TiDB、PD、およびTiKVに加えて、TiDBv5.4.0はTiFlashのCPUプロファイリングもサポートします。

    • より多くの形式のプロファイリング表示:フレームチャートでのCPUプロファイリングとGoroutine結果の表示をサポートします。

    • サポートされるより多くのデプロイメント環境:継続的プロファイリングは、 TiDB Operatorを使用してデプロイされたクラスターにも使用できます。

    継続的プロファイリングはデフォルトで無効になっており、TiDBダッシュボードで有効にできます。

    継続的プロファイリングは、v1.9.0以降のTiUPまたはv1.3.0以降のTiDB Operatorを使用してデプロイまたはアップグレードされたクラスターに適用できます。

    ユーザードキュメント

改善点

  • TiDB

    • キャッシュされたクエリプラン#30370をクリアするためのADMIN {SESSION | INSTANCE | GLOBAL} PLAN_CACHE構文をサポートする
  • TiKV

    • コプロセッサーは、ストリームのような方法でリクエストを処理するためのページングAPIをサポートします#11448
    • 読み取り操作が2次ロックが解決されるのを待つ必要がないようにread-through-lockをサポートします#11402
    • ディスクスペースの枯渇によるpanicを回避するためのディスク保護メカニズムを追加する#10537
    • ログのアーカイブとローテーションのサポート#11651
    • Raftクライアントによるシステムコールを減らし、CPU効率を向上させます#11309
    • コプロセッサーは、部分文字列をTiKV1にプッシュダウンすることをサポートし#11495
    • 読み取りコミット分離レベル#11485で読み取りロックをスキップすることにより、スキャンパフォーマンスを向上させます
    • バックアップ操作で使用されるデフォルトのスレッドプールサイズを減らし、ストレスが高いときにスレッドプールの使用を制限します#11000
    • アプライスレッドプールとストアスレッドプールのサイズの動的調整をサポート#11159
    • snap-generatorスレッドプール#11247のサイズの構成をサポートします。
    • 読み取りと書き込みが頻繁に行われるファイルが多数ある場合に発生するグローバルロック競合の問題を最適化する#250
  • PD

    • デフォルトで履歴ホットスポット情報を記録する#25281
    • HTTPコンポーネントの署名を追加して、リクエストソースを識別します#4490
    • TiDBダッシュボードをv2021.12.31に更新します#4257
  • TiFlash

    • ローカルオペレーターのコミュニケーションを最適化する
    • スレッドの頻繁な作成または破棄を回避するために、gRPCの非一時的なスレッド数を増やします
  • ツール

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

      • BRが暗号化されたバックアップを実行するときにキーの有効性チェックを追加する#29794
    • TiCDC

      • 「EventFeed再試行レート制限」ログの数を減らす#4006
      • 多くのテーブルを複製するときの複製待ち時間を短縮する#3900
      • TiKVストアがダウンしたときにKVクライアントが回復する時間を短縮する#3191
    • TiDBデータ移行(DM)

      • リレー有効時のCPU使用率を下げる#2214
    • TiDB Lightning

      • デフォルトで楽観的なトランザクションを使用してデータを書き込み、TiDBバックエンドモードでのパフォーマンスを向上させます#30953
    • Dumpling

      • Dumplingがデータベースバージョン#29500をチェックするときの互換性を改善します
      • CREATE DATABASE#3420をダンプするときにデフォルトの照合順序を追加しCREATE TABLE

バグの修正

  • TiDB

    • クラスタをv4.xから#25422にアップグレードするときに発生するtidb_analyze_versionの値の変更の問題を修正します。
    • サブクエリで異なる照合を使用するときに発生する間違った結果の問題を修正します#30748
    • TiDBのconcat(ifnull(time(3))の結果がMySQL3の結果と異なる問題を修正し#29498
    • 楽観的なトランザクションモード#30410での潜在的なデータインデックスの不整合の問題を修正します
    • #30200をTiKV1にプッシュダウンできない場合に、IndexMergeのクエリ実行プランが間違っている問題を修正します。
    • 列タイプの同時変更によりスキーマとデータの間に不整合が生じる問題を修正します#31048
    • サブクエリ#30913がある場合にIndexMergeクエリの結果が間違っている問題を修正します
    • クライアントでFetchSizeの設定が大きすぎる場合に発生するpanicの問題を修正します#30896
    • LEFTJOINが誤ってINNERJOIN1に変換される可能性がある問題を修正し#20510
    • CASE-WHEN式と照合順序を一緒に使用するとpanicが発生する可能性がある問題を修正します#30245
    • INの値に2進定数#31261が含まれている場合に発生する誤ったクエリ結果の問題を修正します
    • CTEにサブクエリ#31255がある場合に発生する誤ったクエリ結果の問題を修正します
    • INSERT ... SELECT ... ON DUPLICATE KEY UPDATEステートメントを実行するとpanicになる問題を修正します#28078
    • INDEXHASHJOINがsend on closed channelエラー#31129を返す問題を修正します
  • TiKV

    • MVCC削除レコードがGC1によってクリアされない問題を修正し#11217
    • 悲観的なトランザクションモードでプリライトリクエストを再試行すると、まれにデータの不整合のリスクが発生する可能性があるという問題を修正します#11187
    • GCスキャンがメモリオーバーフローを引き起こす問題を修正します#11410
    • ディスク容量がいっぱいになると、RocksDBのフラッシュまたは圧縮によってpanicが発生する問題を修正します#11224
  • PD

    • リージョン統計が#4295の影響を受けない問題を修正しflow-round-by-digit
    • ターゲットストアがダウンしているためにスケジューリングオペレーターが迅速に失敗できない問題を修正します#3353
    • オフラインストアのリージョンをマージできない問題を修正します#4119
    • コールドホットスポットデータをホットスポット統計から削除できない問題を修正します#4390
  • TiFlash

    • MPPクエリが停止したときにTiFlashがpanicになる可能性がある問題を修正します
    • where <string>句を含むクエリが間違った結果を返す問題を修正します
    • 整数主キーの列タイプをより広い範囲に設定するときに発生する可能性があるデータの不整合の潜在的な問題を修正します
    • 入力時刻が1970-01-0100:00:01UTCより前の場合、 unix_timestampの動作がTiDBまたはMySQLの動作と矛盾する問題を修正します。
    • 再起動後にTiFlashがEstablishMPPConnectionエラーを返す可能性がある問題を修正します
    • CastStringAsDecimalの動作がTiFlashとTiDB/TiKVで一貫していない問題を修正します
    • クエリ結果にDB::Exception: Encode type of coprocessor response is not CHBlockのエラーが返される問題を修正します
    • castStringAsRealの動作がTiFlashとTiDB/TiKVで一貫していない問題を修正します
    • TiFlashのdate_add_string_xxx関数の返される結果がMySQLの結果と矛盾する問題を修正します
  • ツール

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

      • 復元操作の終了後にリージョンの分布が不均一になる可能性があるという潜在的な問題を修正します#30425
      • minioがバックアップストレージとして使用されている場合、エンドポイントで'/'を指定できない問題を修正します#30104
      • システムテーブルを同時にバックアップするとテーブル名の更新に失敗するため、システムテーブルを復元できない問題を修正します#29710
    • TiCDC

      • min.insync.replicas#3994より小さい場合、レプリケーションを実行できない問題を修正しreplication-factor
      • cached regionモニタリングメトリックが負の#4300である問題を修正します
      • mq sink write rowに監視データがないという問題を修正します#3431
      • #3810の互換性の問題を修正しsql mode
      • レプリケーションタスクが削除されたときに発生する可能性のあるpanicの問題を修正します#3128
      • デフォルトの列値#3929を出力するときに発生するpanicとデータの不整合の問題を修正します
      • デフォルト値を複製できない問題を修正します#3793
      • デッドロックによってレプリケーションタスクがスタックするという潜在的な問題を修正します#4055
      • ディスクが完全に書き込まれたときにログが出力されない問題を修正します#3362
      • DDLステートメントの特別なコメントによってレプリケーションタスクが停止する問題を修正します#3755
      • RHELリリース#3584のタイムゾーンの問題が原因でサービスを開始できない問題を修正します
      • 不正確なチェックポイント#3545によって引き起こされる潜在的なデータ損失の問題を修正します
      • コンテナ環境でのOOMの問題を修正します#1798
      • config.Metadata.Timeoutの誤った構成によって引き起こされるレプリケーション停止の問題を修正し#3352
    • TiDBデータ移行(DM)

      • CREATE VIEWステートメントがデータ複製を中断する問題を修正します#4173
      • DDLステートメントがスキップされた後にスキーマをリセットする必要がある問題を修正します#4177
      • DDLステートメントがスキップされた後にテーブルチェックポイントが時間内に更新されない問題を修正します#4184
      • TiDBバージョンとParserバージョン#4298の互換性の問題を修正します
      • シンカーメトリックがステータス#4281をクエリするときにのみ更新される問題を修正します
    • TiDB Lightning

      • TiDB Lightningにmysql.tidbテーブル#31088にアクセスする権限がない場合に発生する誤ったインポート結果の問題を修正します。
      • TiDB Lightningの再起動時に一部のチェックがスキップされる問題を修正します#30772
      • S3パスが存在しない場合にTiDBLightingがエラーを報告できない問題を修正します#30674
    • TiDB Binlog

      • CREATE PLACEMENT POLICYステートメント#1118と互換性がないためにDrainerが失敗する問題を修正します