TiDB 5.4 リリースノート
発売日:2022年2月15日
TiDB バージョン: 5.4.0
v5.4 の主な新機能または改善点は次のとおりです。
- GBK 文字セットをサポート
- 複数の列のインデックスのフィルタリング結果をマージする Index Merge を使用したデータ アクセスのサポート
- セッション変数を使用した古いデータの読み取りをサポート
- 統計を収集するための構成の永続化をサポート
- Raft Engineを TiKV のログ保存エンジンとしてサポート (実験的)
- クラスターに対するバックアップの影響を最適化する
- バックアップ ストレージとしての Azure Blob Storage の使用をサポート
- TiFlash と MPP エンジンの安定性とパフォーマンスを継続的に改善します
- TiDB Lightningにスイッチを追加して、データを含む既存のテーブルへのインポートを許可するかどうかを決定します
- 継続的なプロファイリング機能を最適化 (実験的)
- TiSpark はユーザーの識別と認証をサポートします
互換性の変更
ノート:
以前の TiDB バージョンから v5.4.0 にアップグレードする場合、すべての中間バージョンの互換性の変更点を知りたい場合は、該当するバージョンのリリースノートを確認できます。
システム変数
変数名 | タイプを変更 | 説明 |
---|---|---|
tidb_enable_column_tracking | 新規追加 | TiDB がPREDICATE COLUMNS を収集できるようにするかどうかを制御します。デフォルト値はOFF です。 |
tidb_enable_paging | 新規追加 | ページング方式を使用してIndexLookUp のオペレーターでコプロセッサー要求を送信するかどうかを制御します。デフォルト値はOFF です。IndexLookup とLimit を使用し、 Limit をIndexScan にプッシュできない読み取りクエリの場合、読み取りクエリのレイテンシーが高くなり、TiKV のunified read pool の CPU 使用率が高くなる可能性があります。このような場合、 Limit 演算子は小さなデータセットしか必要としないため、 tidb_enable_paging をON に設定すると、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_store_limit | 修正済み | v5.4.0 より前では、この変数はインスタンス レベルでグローバルに構成できます。 v5.4.0 以降、この変数はグローバル構成のみをサポートします。 |
Configuration / コンフィグレーションファイルのパラメーター
Configuration / コンフィグレーションファイル | Configuration / コンフィグレーション | タイプを変更 | 説明 |
---|---|---|---|
TiDB | stats-load-concurrency | 新規追加 | TiDB 同期ロード統計機能が同時に処理できる列の最大数を制御します。デフォルト値は5 です。 |
TiDB | stats-load-queue-size | 新規追加 | TiDB 同期ロード統計機能がキャッシュできる列リクエストの最大数を制御します。デフォルト値は1000 です。 |
TiKV | snap-generator-pool-size | 新規追加 | snap-generator スレッド プールのサイズ。デフォルト値は2 です。 |
TiKV | log.file.max-size 、 log.file.max-days 、 log.file.max-backups | 新規追加 | 詳細については、 TiKVConfiguration / コンフィグレーションファイル - log.file を参照してください。 |
TiKV | raft-engine | 新規追加 | enable 、 dir 、 batch-compression-threshold 、 bytes-per-sync 、 target-file-size 、 purge-threshold 、 recovery-mode 、 recovery-read-block-size 、 recovery-read-block-size 、およびrecovery-threads が含まれます。詳しくはTiKVConfiguration / コンフィグレーションファイル - raft-engine をご覧ください。 |
TiKV | backup.enable-auto-tune | 新規追加 | v5.3.0 では、デフォルト値はfalse です。 v5.4.0 以降、デフォルト値はtrue に変更されました。このパラメータは、クラスタ リソースの使用率が高い場合に、バックアップ タスクで使用されるリソースを制限してクラスタへの影響を軽減するかどうかを制御します。デフォルトの構成では、バックアップ タスクの速度が遅くなる場合があります。 |
TiKV | log-level 、 log-format 、 log-file 、 log-rotation-size | 修正済み | TiKV ログ パラメータの名前は、TiDB ログ パラメータと一致する名前 ( log.level 、 log.format 、 log.file.filename 、およびlog.enable-timestamp ) に置き換えられます。古いパラメータのみを設定し、それらの値がデフォルト以外の値に設定されている場合、古いパラメータは新しいパラメータと互換性があります。古いパラメータと新しいパラメータの両方が設定されている場合、新しいパラメータが有効になります。詳細については、 TiKVConfiguration / コンフィグレーションファイル - ログを参照してください。 |
TiKV | log-rotation-timespan | 削除しました | ログ ローテーション間の期間。この期間が経過すると、ログ ファイルがローテーションされます。つまり、現在のログ ファイルのファイル名にタイムスタンプが追加され、新しいログ ファイルが作成されます。 |
TiKV | allow-remove-leader | 削除しました | メインスイッチの削除を許可するかどうかを決定します。 |
TiKV | raft-msg-flush-interval | 削除しました | Raftメッセージがバッチで送信される間隔を決定します。 Raftメッセージは、この構成項目で指定された間隔ごとにバッチで送信されます。 |
PD | log.level | 修正済み | デフォルト値は「INFO」から「info」に変更され、大文字と小文字が区別されないことが保証されています。 |
ティフラッシュ | profile.default.enable_elastic_threadpool | 新規追加 | エラスティック スレッド プール機能を有効にするか無効にするかを決定します。この構成項目を有効にすると、同時実行性の高いシナリオで TiFlash の CPU 使用率を大幅に改善できます。デフォルト値はfalse です。 |
ティフラッシュ | storage.format_version | 新規追加 | DTFile のバージョンを指定します。デフォルト値は2 で、ハッシュがデータ ファイルに埋め込まれます。値を3 に設定することもできます。 3 の場合、データ ファイルにはメタデータとトークン データのチェックサムが含まれ、複数のハッシュ アルゴリズムがサポートされます。 |
ティフラッシュ | logger.count | 修正済み | デフォルト値は10 に変更されます。 |
ティフラッシュ | status.metrics_port | 修正済み | デフォルト値は8234 に変更されます。 |
ティフラッシュ | raftstore.apply-pool-size | 新規追加 | Raftデータをストレージにフラッシュするプール内のスレッドの許容数。デフォルト値は4 です。 |
ティフラッシュ | raftstore.store-pool-size | 新規追加 | Raftstore スレッド プールのサイズである、 Raftを処理するスレッドの許容数。デフォルト値は4 です。 |
TiDB データ移行 (DM) | collation_compatible | 新規追加 | CREATE の SQL ステートメントで既定の照合順序を同期するモード。値のオプションは、"loose" (デフォルト) と "strict" です。 |
TiCDC | max-message-bytes | 修正済み | Kafka シンクのデフォルト値max-message-bytes を104857601 (10MB) に変更します。 |
TiCDC | partition-num | 修正済み | Kafka Sink のデフォルト値partition-num を4 から3 に変更します。 TiCDC がメッセージを Kafaka パーティションにより均等に送信するようにします。 |
TiDB Lightning | meta-schema-name | 修正済み | ターゲット TiDB 内のメタデータのスキーマ名を指定します。 v5.4.0 以降、このスキーマは並行輸入を有効にした場合にのみ作成されます (対応するパラメーターはtikv-importer.incremental-import = true です)。 |
TiDB Lightning | task-info-schema-name | 新規追加 | TiDB Lightningが競合を検出したときに、複製されたデータが保存されるデータベースの名前を指定します。デフォルトの値は「lightning_task_info」です。このパラメータは、「重複解決」機能を有効にしている場合にのみ指定してください。 |
TiDB Lightning | incremental-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 ドキュメントを直接読むことができます。
- ポイントインタイム リカバリ (PITR) の実験的機能を cdclog と共に削除します。 v5.4.0 以降、cdclog ベースの PITR と cdclog はサポートされなくなりました。
- システム変数を「DEFAULT」に設定する動作をより MySQL 互換にする#29680
- システム変数
lc_time_names
を読み取り専用#30084に設定します tidb_store_limit
のスコープを INSTANCE または GLOBAL から GLOBAL #30756に設定します- 列にゼロが含まれる場合、整数型の列を時間型の列に変換することを禁止します#25728
- 浮動小数点値#30148を挿入するときに、
Inf
またはNAN
の値に対してエラーが報告されない問題を修正します。 - 自動 ID が範囲外の場合に
REPLACE
ステートメントが他の行を誤って変更する問題を修正します#30301
新機能
SQL
TiDB は v5.4.0 以降、GBK 文字セットをサポートしています
v5.4.0 より前の TiDB は、
ascii
、binary
、latin1
、utf8
、およびutf8mb4
文字セットをサポートしています。中国語ユーザーのサポートを強化するために、TiDB は v5.4.0 以降、GBK 文字セットをサポートしています。初めて TiDB クラスターを初期化するときに TiDB 構成ファイルで
new_collations_enabled_on_first_bootstrap
オプションを有効にすると、TiDB GBK 文字セットはgbk_bin
とgbk_chinese_ci
の両方の照合をサポートします。GBK 文字セットを使用する場合は、互換性の制限に注意する必要があります。詳細については、 文字セットと照合 - GBKを参照してください。
安全
TiSpark はユーザー認証と承認をサポートします
TiSpark 2.5.0 以降、TiSpark はデータベース ユーザー認証と、データベースまたはテーブル レベルでの読み取り/書き込み承認の両方をサポートしています。この機能を有効にすると、企業がドローなどの不正なバッチ タスクを実行してデータを取得することを防止できるため、オンライン クラスターの安定性とデータ セキュリティが向上します。
この機能はデフォルトで無効になっています。有効にすると、TiSpark を介して操作しているユーザーが必要なアクセス許可を持っていない場合、ユーザーは TiSpark から例外を取得します。
TiUP は root ユーザーの初期パスワードの生成をサポートします
クラスターを開始するためのコマンドに
--init
パラメーターが導入されました。このパラメーターを使用すると、TiUP を使用してデプロイされた TiDB クラスターで、TiUP はデータベース ルート ユーザーの強力な初期パスワードを生成します。これにより、空のパスワードで root ユーザーを使用する際のセキュリティ リスクが回避され、データベースのセキュリティが確保されます。
パフォーマンス
列型ストレージ エンジン TiFlash とコンピューティング エンジン MPP の安定性とパフォーマンスを継続的に改善します。
より多くの関数を MPP エンジンにプッシュすることをサポートします。
- 文字列関数:
LPAD()
、RPAD()
、STRCMP()
- 日付関数:
ADDDATE()
、DATE_ADD()
、DATE_SUB()
、SUBDATE()
、QUARTER()
- 文字列関数:
リソース使用率を改善するためのエラスティック スレッド プール機能の導入 (実験的)
TiKV からデータをレプリケートする際に、行ベースのストレージ形式から列ベースのストレージ形式にデータを変換する効率が向上し、データ レプリケーションの全体的なパフォーマンスが 50% 向上します。
一部の構成項目のデフォルト値を調整して、TiFlash のパフォーマンスと安定性を向上させます。 HTAP ハイブリッド ロードでは、1 つのテーブルに対する単純なクエリのパフォーマンスが最大 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
Index Merge は、SQL 最適化の実験的機能として TiDB v4.0 に導入されました。この方法は、クエリで複数のデータ列のスキャンが必要な場合に条件フィルタリングを大幅に高速化します。例として、次のクエリを取り上げます。
WHERE
ステートメントで、OR
で接続されたフィルター条件が列key1およびkey2にそれぞれのインデックスを持っている場合、インデックス マージ機能はそれぞれのインデックスを同時にフィルター処理し、クエリ結果をマージして、マージされた結果を返します。SELECT * FROM table WHERE key1 <= 100 OR key2 = 200;TiDB v4.0 より前では、テーブルに対するクエリは、一度にフィルタリングするために 1 つのインデックスのみを使用することをサポートしていました。データの複数の列に対してクエリを実行する場合は、インデックス マージを有効にして、個々の列のインデックスを使用して正確なクエリ結果を短時間で取得できます。インデックス マージは、不要な全テーブル スキャンを回避し、多数の複合インデックスを確立する必要がありません。
v5.4.0 では、Index Merge が GA になります。ただし、次の制限に注意する必要があります。
Index Merge は、論理和正規形 (X 1 ⋁ X 2 ⋁ …X n ) のみをサポートします。つまり、この機能は、
WHERE
句のフィルタリング条件がOR
で接続されている場合にのみ機能します。v5.4.0 以降の新しくデプロイされた TiDB クラスターの場合、この機能はデフォルトで有効になっています。以前のバージョンからアップグレードされた v5.4.0 以降の TiDB クラスターの場合、この機能はアップグレード前の設定を継承し、必要に応じて設定を変更できます (v4.0 より前の TiDB クラスターの場合、この機能は存在せず、デフォルトで無効になっています)。 .
Raft Engineのサポート (実験的)
TiKV のログ ストレージ エンジンとしてRaft Engineを使用することをサポートします。 RocksDB と比較して、 Raft Engineは TiKV I/O 書き込みトラフィックを最大 40% 削減し、CPU 使用率を 10% 削減し、フォアグラウンド スループットを約 5% 向上させ、特定の負荷の下でテールレイテンシーを 20% 削減できます。さらに、 Raft Engineはログのリサイクルの効率を改善し、極端な状況でのログの蓄積の問題を修正します。
Raft Engineはまだ実験的機能であり、デフォルトでは無効になっています。 v5.4.0 のRaft Engineのデータ形式は、以前のバージョンと互換性がないことに注意してください。クラスターをアップグレードする前に、すべての TiKV ノードでRaft Engineが無効になっていることを確認する必要があります。 v5.4.0 以降のバージョンでのみRaft Engineを使用することをお勧めします。
PREDICATE COLUMNS
での統計収集のサポート (実験的)ほとんどの場合、SQL ステートメントを実行するとき、オプティマイザーは一部の列 (
WHERE
、JOIN
、ORDER BY
、およびGROUP 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 構成の永続化をサポート
統計は、オプティマイザが実行計画を生成するときに参照する基本情報の一種です。統計の精度は、生成された実行計画が適切かどうかに直接影響します。統計の精度を確保するために、さまざまなテーブル、パーティション、およびインデックスに対してさまざまなコレクション構成を設定する必要がある場合があります。
v5.4.0 以降、
ANALYZE
は一部の構成の永続化をサポートしています。この機能を使用すると、既存の構成を将来の統計収集に簡単に再利用できます。ANALYZE
構成永続化機能は、デフォルトで有効になっています (システム変数tidb_analyze_version
はデフォルトで2
で、tidb_persist_analyze_options
はON
です)。この機能を使用して、ステートメントを手動で実行するときに、ANALYZE
ステートメントで指定された持続性構成を記録できます。記録されると、次に TiDB が自動的に統計を更新するか、これらの構成を指定せずに手動で統計を収集するときに、TiDB は記録された構成に従って統計を収集します。
高可用性と災害復旧
クラスターに対するバックアップ タスクの影響を軽減する
バックアップと復元 (BR) には、自動調整機能 (デフォルトで有効) が導入されています。この機能は、クラスター リソースの使用状況を監視し、バックアップ タスクで使用されるスレッドの数を調整することで、クラスターに対するバックアップ タスクの影響を軽減できます。場合によっては、バックアップ用のクラスター ハードウェア リソースを増やして自動調整機能を有効にすると、クラスターに対するバックアップ タスクの影響を 10% 以下に制限できます。
バックアップのターゲット ストレージとして Azure Blob Storage をサポートする
バックアップと復元 (BR) は、Azure Blob Storage をリモート バックアップ ストレージとしてサポートします。 TiDB を Azure クラウドにデプロイすると、クラスター データを Azure Blob Storage サービスにバックアップできるようになりました。
データ移行
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 Data Migration (DM) でのリレー ログの使用を最適化する
source
構成のenable-relay
スイッチを回復します。start-relay
およびstop-relay
コマンドを使用して、リレー ログの動的な有効化と無効化をサポートします。リレーログのステータスを
source
にバインドします。source
は、任意の DM-worker に移行された後、有効または無効の元のステータスを保持します。中継ログの保存パスを DM-worker 設定ファイルに移動します。
DMでの照合順序処理を最適化
collation_compatible
構成アイテムを追加します。値のオプションはloose
(デフォルト) とstrict
です。- アプリケーションに照合順序がアップストリームとダウンストリームで異なる可能性がある場合は、デフォルトの
loose
モードを使用してエラーの報告を回避できます。 - アプリケーションが照合順序が一貫している必要がある場合は、
strict
モードを使用できます。ただし、ダウンストリームがアップストリームのデフォルトの照合順序をサポートしていない場合、データ レプリケーションでエラーが報告されることがあります。
- アプリケーションに照合順序がアップストリームとダウンストリームで異なる可能性がある場合は、デフォルトの
DM の
transfer source
を最適化して、レプリケーション タスクのスムーズな実行をサポートDM-worker ノードの負荷が不均衡な場合、
transfer source
コマンドを使用して、source
の構成を別の負荷に手動で転送できます。最適化後、transfer source
コマンドは手動操作を簡素化します。 DMが内部で他の操作を完了するため、関連するすべてのタスクを一時停止する代わりに、ソースをスムーズに転送できます。DM OpenAPI の一般提供開始 (GA)
DM は、データ ソースの追加やタスクの管理など、API を介して日常的な管理をサポートします。 v5.4.0 では、DM OpenAPI が GA になります。
診断効率
Top SQL (実験的機能)
ソースを消費するクエリを簡単に見つけられるように、新しい実験的機能であるTop SQL (既定では無効) が導入されました。
TiDB データ共有サブスクリプション
クラスターに対する TiCDC の影響を最適化する
TiCDC を使用すると、TiDB クラスターのパフォーマンスへの影響が大幅に軽減されます。テスト環境では、TiDB に対する TiCDC のパフォーマンスへの影響を 5% 未満に減らすことができます。
展開とメンテナンス
継続的なプロファイリングの強化 (実験的)
サポートされるコンポーネントの増加: TiDB、PD、および TiKV に加えて、TiDB v5.4.0 は TiFlash の CPU プロファイリングもサポートします。
より多くの形式のプロファイリング表示: フレーム チャートでの CPU プロファイリングとゴルーチンの結果の表示をサポートします。
サポートされる展開環境の増加: 継続的なプロファイリングは、 TiDB Operatorを使用して展開されたクラスターにも使用できます。
継続的なプロファイリングはデフォルトで無効になっており、TiDB ダッシュボードで有効にすることができます。
継続的プロファイリングは、v1.9.0 以降の TiUP または v1.3.0 以降のTiDB Operatorを使用してデプロイまたはアップグレードされたクラスターに適用されます。
改良点
TiDB
ADMIN {SESSION | INSTANCE | GLOBAL} PLAN_CACHE
構文をサポートして、キャッシュされたクエリ プランをクリアします#30370
TiKV
- コプロセッサーは、ストリームのような方法で要求を処理するページング API をサポートします#11448
read-through-lock
をサポートして、読み取り操作が 2 次ロックの解決を待つ必要がないようにする#11402- ディスク領域の枯渇によるpanicを回避するために、ディスク保護メカニズムを追加します#10537
- ログのアーカイブとローテーションのサポート#11651
- Raftクライアントによるシステム コールを減らし、CPU 効率を高める#11309
- コプロセッサーは部分文字列の TiKV #11495へのプッシュダウンをサポート
- Read Committed 分離レベル#11485で読み取りロックをスキップすることにより、スキャンのパフォーマンスを向上させます。
- バックアップ操作で使用されるデフォルトのスレッド プール サイズを減らし、負荷が高い場合にスレッド プールの使用を制限する#11000
- Apply スレッド プールと Store スレッド プールのサイズを動的に調整するサポート#11159
snap-generator
スレッド プール#11247のサイズの構成をサポート- 読み取りと書き込みが頻繁に行われるファイルが多数ある場合に発生するグローバル ロック競合の問題を最適化します#250
PD
ティフラッシュ
- 現地オペレーターのコミュニケーションを最適化
- gRPC の非一時的なスレッド数を増やして、スレッドの頻繁な作成または破棄を回避します
ツール
バグの修正
TiDB
- クラスターを#25422から v5.x にアップグレードするときに発生する
tidb_analyze_version
の値の変更の問題を修正します。 - サブクエリで異なる照合順序を使用した場合に発生する間違った結果の問題を修正します#30748
- TiDB の
concat(ifnull(time(3))
の結果が MySQL #29498の結果と異なる問題を修正 - オプティミスティック トランザクション モード#30410での潜在的なデータ インデックスの不整合の問題を修正します。
- TiKV #30200に式をプッシュダウンできない場合、IndexMerge のクエリ実行プランが間違っている問題を修正
- 列の型を同時に変更すると、スキーマとデータの間で不整合が発生する問題を修正します#31048
- サブクエリがあるとIndexMergeのクエリ結果がおかしくなる問題を修正#30913
- クライアント#30896で FetchSize の設定が大きすぎる場合に発生するpanicの問題を修正します。
- LEFT JOIN が誤って INNER JOIN #20510に変換される可能性がある問題を修正
CASE-WHEN
式と照合順序を併用するとpanicが発生することがある問題を修正#30245IN
の値にバイナリ定数#31261が含まれている場合に発生する間違ったクエリ結果の問題を修正します。- CTE にサブクエリがある場合に発生する間違ったクエリ結果の問題を修正します#31255
INSERT ... SELECT ... ON DUPLICATE KEY UPDATE
ステートメントを実行するとpanic#28078が発生する問題を修正します。- INDEX HASH JOIN が
send on closed channel
エラー#31129を返す問題を修正
- クラスターを#25422から v5.x にアップグレードするときに発生する
TiKV
PD
ティフラッシュ
- MPP クエリが停止したときに TiFlash がpanicになる問題を修正
where <string>
句を含むクエリが間違った結果を返す問題を修正- 整数主キーの列タイプをより大きな範囲に設定するときに発生する可能性のあるデータの不整合の問題を修正します
- 入力時刻が 1970-01-01 00:00:01 UTC より前の場合、
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)
TiCDC
min.insync.replicas
がreplication-factor
#3994より小さい場合にレプリケーションが実行できない問題を修正cached region
モニタリング指標がマイナス#4300になる問題を修正mq sink write row
監視データがない問題を修正#3431sql mode
#3810の互換性の問題を修正- レプリケーション タスクが削除されたときに発生する潜在的なpanicの問題を修正します#3128
- デフォルトの列値#3929を出力するときに発生するpanicとデータの不整合の問題を修正します。
- デフォルト値をレプリケートできない問題を修正#3793
- デッドロックが原因でレプリケーション タスクがスタックする潜在的な問題を修正します#4055
- ディスクが完全に書き込まれたときにログが出力されない問題を修正#3362
- DDL ステートメントの特殊なコメントによってレプリケーション タスクが停止する問題を修正します#3755
- RHEL リリース#3584でタイムゾーンの問題が原因でサービスを開始できない問題を修正
- 不正確なチェックポイント#3545によって引き起こされる潜在的なデータ損失の問題を修正します。
- コンテナー環境での OOM の問題を修正する#1798
config.Metadata.Timeout
#3352の構成が正しくないために発生するレプリケーション停止の問題を修正します。
TiDB データ移行 (DM)
TiDB Lightning
Binlog
- Drainerが
CREATE PLACEMENT POLICY
文#1118と互換性がないために失敗する問題を修正
- Drainerが