TiDB 6.4.0 リリースノート
発売日:2022年11月17日
TiDB バージョン: 6.4.0-DMR
注記:
TiDB 6.4.0-DMR のドキュメントはアーカイブ済みです。PingCAP では、TiDB データベースの最新のLTSバージョン使用することを推奨しています。
クイックアクセス: クイックスタート
v6.4.0-DMR の主な新機能と改善点は次のとおりです。
FLASHBACK CLUSTER TO TIMESTAMP(実験的) を使用してクラスターを特定の時点に復元することをサポートします。- TiDB インスタンスのグローバルメモリ使用量の追跡サポートします (実験的)。
- 線形ハッシュ分割構文と互換性があること。
- 高性能かつグローバルに単調な
AUTO_INCREMENT(実験的) をサポートします。 - JSON型における配列データの範囲選択をサポートします。
- ディスク障害や I/O のスタックなどの極端な状況での障害回復を高速化します。
- テーブルの結合順序を決定するには動的計画アルゴリズム追加します。
- 相関サブクエリに対して非相関化を実行するかどうかを制御するには新しいオプティマイザヒント
NO_DECORRELATE導入します。 - クラスター診断機能はGAになります。
- TiFlash は保存時の暗号化の SM4 アルゴリズムをサポートします。
- 指定されたパーティションのTiFlashレプリカをテーブルにすぐに圧縮しますへの SQL ステートメントの使用をサポートします。
- サポートEBSボリュームスナップショットを使用してTiDBクラスターをバックアップする 。
- DMは上流のデータソース情報を下流のマージされたテーブルの拡張列に書き込むサポートします。
新機能
SQL
SQL 文を使用して、テーブル内の指定されたパーティションのTiFlashレプリカを即時に圧縮する機能をサポート#5315 @ ヘヘチェン
TiDBはv6.2.0以降、 TiFlashのフルテーブルレプリカにおける物理データを即座に圧縮するの機能をサポートしています。適切なタイミングでSQL文を手動で実行することで、 TiFlash内の物理データを即座に圧縮できるため、storage容量の削減とクエリパフォーマンスの向上につながります。v6.4.0では、圧縮対象となるTiFlashレプリカデータの粒度を改良し、テーブル内の特定のパーティションのTiFlashレプリカを即座に圧縮できるようになりました。
SQL ステートメント
ALTER TABLE table_name COMPACT [PARTITION PartitionNameList] [engine_type REPLICA]実行すると、テーブル内の指定されたパーティションのTiFlashレプリカをすぐに圧縮できます。詳細についてはユーザードキュメント参照してください。
FLASHBACK CLUSTER TO TIMESTAMP(実験的) #37197 #13303 @ 定義2014 @ bb7133 @ Jmポテト @ コナー1996 @ HuSharp @ カルビンネオを使用して、クラスターを特定の時点に復元することをサポートします。FLASHBACK CLUSTER TO TIMESTAMP構文を使用すると、ガベージコレクション(GC)の有効期間内であれば、クラスターを特定の時点に迅速に復元できます。この機能は、DMLの誤った操作を簡単かつ迅速に元に戻すのに役立ちます。例えば、WHERE句を指定せずに誤ってDELETE実行してしまった場合でも、この構文を使用すれば数分で元のクラスターを復元できます。この機能はデータベースのバックアップに依存せず、異なる時点のデータのロールバックをサポートし、データが変更された正確な時刻を特定します。7FLASHBACK CLUSTER TO TIMESTAMPデータベースのバックアップを置き換えることはできませんのでご注意ください。FLASHBACK CLUSTER TO TIMESTAMP実行する前に、TiCDC などのツールで実行されている PITR およびレプリケーションタスクを一時停止し、FLASHBACK完了後に再開する必要があります。そうしないと、レプリケーションタスクが失敗する可能性があります。詳細についてはユーザードキュメント参照してください。
FLASHBACK DATABASE#20463 @ エルワドバを使用して削除されたデータベースの復元をサポートしますFLASHBACK DATABASE使用すると、DROPによって削除されたデータベースとそのデータを、ガベージコレクション(GC)の有効期間内に復元できます。この機能は外部ツールに依存しません。SQL文を使用して、データとメタデータを迅速に復元できます。詳細についてはユーザードキュメント参照してください。
Security
TiFlashは保存時の暗号化にSM4アルゴリズムをサポートしています#5953 @ リデジュ
TiFlash の保存時暗号化に SM4 アルゴリズムを追加します。保存時暗号化を設定する場合、設定ファイル
tiflash-learner.tomlのdata-encryption-method設定の値をsm4-ctrに設定することで、SM4 暗号化機能を有効にできます。詳細についてはユーザードキュメント参照してください。
可観測性
クラスタ診断は GA #1438 @ ホークソンジーになります
TiDBダッシュボードのクラスター診断機能は、指定された時間範囲内でクラスタに存在する可能性のある問題を診断し、診断結果とクラスタ関連の負荷監視情報を診断レポートにまとめます。この診断レポートはウェブページ形式で提供されます。ブラウザからページを保存した後、オフラインでページを閲覧したり、このページのリンクを配布したりできます。
診断レポートを使用すると、負荷、コンポーネントの状態、時間消費、構成など、クラスターの基本的な健全性情報を迅速に把握できます。クラスターに一般的な問題がある場合は、セクション診断情報に組み込まれた自動診断の結果から原因を特定できます。
パフォーマンス
コプロセッサタスク#37724 @ あなた06同時実行適応メカニズムを導入する
コプロセッサ タスクの数が増えると、TiKV の処理速度に基づいて、TiDB は自動的に同時実行性を高め (
tidb_distsql_scan_concurrencyの値を調整)、コプロセッサ タスク キューを減らしてレイテンシーを減らします。テーブル結合順序#37825 @ ウィノロスを決定する動的計画アルゴリズムを追加します。
以前のバージョンでは、TiDBはテーブルの結合順序を決定するために貪欲アルゴリズムを使用していました。v6.4.0では、TiDBオプティマイザーに動的計画アルゴリズム導入されました。動的計画アルゴリズムは貪欲アルゴリズムよりも多くの結合順序を列挙できるため、より適切な実行プランを見つける可能性が高まり、一部のシナリオではSQL実行効率が向上します。
動的計画法アルゴリズムはより多くの時間を消費するため、TiDBの結合したテーブルの再配置アルゴリズムの選択は変数
tidb_opt_join_reorder_thresholdによって制御されます。結合したテーブルの再配置に参加するノードの数がこのしきい値を超える場合、TiDBは貪欲アルゴリズムを使用します。それ以外の場合は、動的計画法アルゴリズムを使用します。詳細についてはユーザードキュメント参照してください。
プレフィックスインデックスは、null値のフィルタリングをサポートします#21145 @ xuyifangreeneyes
この機能はプレフィックスインデックスの最適化です。テーブル内の列にプレフィックスインデックスが設定されている場合、SQL文内の列の条件
IS NULLまたはIS NOT NULLプレフィックスで直接フィルタリングできます。これにより、テーブル参照が回避され、SQL実行のパフォーマンスが向上します。詳細についてはユーザードキュメント参照してください。
TiDB チャンク再利用メカニズム#38606 @ キープラーニング20221の強化
以前のバージョンでは、TiDBはチャンクを
writechunk関数内でのみ再利用していました。TiDB v6.4.0では、チャンク再利用メカニズムがExecutorの演算子にも拡張されています。チャンクを再利用することで、TiDBは頻繁にメモリ解放を要求する必要がなくなり、一部のシナリオではSQLクエリの実行効率が向上します。システム変数tidb_enable_reuse_chunk使用して、チャンクオブジェクトの再利用の有無を制御できます。これはデフォルトで有効になっています。詳細についてはユーザードキュメント参照してください。
相関サブクエリ#37789 @ 時間と運命の相関解除を実行するかどうかを制御する新しいオプティマイザヒント
NO_DECORRELATEを導入します。デフォルトでは、TiDB は常に相関サブクエリを書き換えてデコリレーションを実行しようとします。これにより、通常は実行効率が向上します。しかし、シナリオによっては、デコリレーションによって実行効率が低下する場合があります。v6.4.0 では、TiDB にオプティマイザーヒント
NO_DECORRELATEが導入され、特定のクエリブロックに対してデコリレーションを実行しないようにオプティマイザーに指示することで、一部のシナリオにおけるクエリパフォーマンスが向上します。詳細についてはユーザードキュメント参照してください。
パーティションテーブル#37977 @ イーサールでの統計収集のパフォーマンスを向上
v6.4.0では、TiDBはパーティションテーブルの統計収集戦略を最適化します。システム変数
tidb_auto_analyze_partition_batch_size使用して、パーティションテーブルの統計収集の同時実行性を設定することで、収集速度を向上させ、分析時間を短縮できます。
安定性
ディスク障害やスタックI/O #13648 @ LykxSassinatorなどの極端な状況での障害回復を高速化します
エンタープライズユーザーにとって、データベースの可用性は最も重要な指標の一つです。複雑なハードウェア環境において、いかに迅速に障害を検知し、復旧するかは、常にデータベースの可用性における課題の一つでした。v6.4.0では、TiDBはTiKVノードの状態検出メカニズムを完全に最適化しました。ディスク障害やI/Oスタックなどの極端な状況下でも、TiDBはノードの状態を迅速に報告し、アクティブウェイクアップメカニズムを用いて事前にLeader選出を開始することで、クラスターの自己修復を加速します。この最適化により、TiDBはディスク障害発生時のクラスター復旧時間を約50%短縮できます。
TiDBメモリ使用量のグローバル制御#37816 @ wshwsh12
バージョン6.4.0では、TiDBインスタンスのグローバルメモリ使用量を追跡する実験的機能として、メモリメモリ量のグローバル制御が導入されました。システム変数
tidb_server_memory_limit使用して、グローバルメモリ使用量の上限を設定できます。メモリ使用量がしきい値に達すると、TiDBは空きメモリの回収と解放を試みます。メモリ使用量がしきい値を超えると、TiDBはメモリメモリ量によるシステムの問題を回避します。TiDBインスタンスのメモリ消費に潜在的なリスクがある場合、TiDBは事前に診断情報を収集し、指定されたディレクトリに書き込むことで、問題の診断を容易にします。同時に、メモリ使用量と操作履歴を表示するシステムテーブルビュー
INFORMATION_SCHEMA.MEMORY_USAGEとINFORMATION_SCHEMA.MEMORY_USAGE_OPS_HISTORY提供し、メモリ使用量の理解を深めるのに役立ちます。グローバルメモリ制御は、TiDBのメモリ管理における画期的な技術です。インスタンスのグローバルビューを導入し、メモリを体系的に管理することで、より多くの重要なシナリオにおいてデータベースの安定性とサービスの可用性を大幅に向上させることができます。
詳細についてはユーザードキュメント参照してください。
範囲構築オプティマイザ#37176 @ xuyifangreeneyesのメモリ使用量を制御する
バージョン6.4.0では、範囲を構築するオプティマイザの最大メモリ使用量を制限するシステム変数
tidb_opt_range_max_sizeが導入されました。メモリ使用量が制限を超えると、オプティマイザはより正確な範囲ではなく、より粗い範囲を構築することでメモリ消費量を削減します。SQL文にINの条件が多数含まれる場合、この最適化によりコンパイル時のメモリ使用量を大幅に削減し、システムの安定性を確保できます。詳細についてはユーザードキュメント参照してください。
統計情報の同期読み込みをサポート (GA) #37434 @ クリサン
TiDB v6.4.0では、統計情報の同期ロード機能がデフォルトで有効になっています。この機能により、SQL文の実行時に、TiDBは大規模な統計情報(ヒストグラム、TopN、Count-Min Sketch統計情報など)をメモリに同期的にロードできるようになり、SQL最適化における統計情報の完全性が向上します。
詳細についてはユーザードキュメント参照してください。
軽量トランザクション書き込みの応答時間に対するバッチ書き込み要求の影響を軽減#13313 @ 栄光
一部のシステムのビジネスロジックでは、定期的なバッチDMLタスクが必要ですが、これらのバッチ書き込みタスクの処理はオンライントランザクションのレイテンシーを増加させます。v6.3.0では、TiKVがハイブリッドワークロードシナリオにおける読み取り要求のスケジューリングを最適化するため、
readpool.unified.auto-adjust-pool-size構成項目を有効にすると、TiKVがすべての読み取り要求に対してUnifyReadPoolスレッドプールのサイズを自動的に調整できるようになります。v6.4.0では、TiKVは書き込み要求を動的に識別して優先順位付けするだけでなく、1回のポーリングで1つのFSM(有限状態マシン)に適用スレッドが書き込める最大バイト数を制御することができるため、バッチ書き込み要求がトランザクション書き込みの応答時間に与える影響を軽減できます。
使いやすさ
TiKV API V2 が一般公開 (GA) される#11745 @ ピンギュ
v6.1.0より前のTiKVは、クライアントから渡された生データのみを保存するため、基本的なキー値の読み取りと書き込み機能しか提供していませんでした。さらに、コーディング方法の違いとスコープ外のデータ範囲のため、TiDB、Transactional KV、RawKVを同じTiKVクラスター内で同時に使用することはできません。同時に使用するには複数のクラスターが必要となり、マシンコストと導入コストが増加します。
TiKV API V2 は、新しい RawKVstorage形式とアクセス インターフェイスを提供し、次のような利点をもたらします。
- MVCCに記録されたデータの変更タイムスタンプとともにデータを保存し、これに基づいて変更データキャプチャ(CDC)を実装します。この機能は実験的であり、詳細はTiKV-CDCに記載されています。
- データはさまざまな使用方法に応じてスコープが設定され、API V2 は単一クラスター内での TiDB、トランザクション KV、および RawKV アプリケーションの共存をサポートします。
- マルチテナントなどの機能をサポートするために、キー スペース フィールドを予約します。
TiKV API V2 を有効にするには、TiKV 構成ファイルの
[storage]セクションでapi-version = 2設定します。詳細についてはユーザードキュメント参照してください。
TiFlashデータ複製の進行状況#4902 @ ヘヘチェン精度を向上
TiDBでは、
INFORMATION_SCHEMA.TIFLASH_REPLICAテーブルのPROGRESSフィールドは、TiKV内の対応するテーブルからTiFlashレプリカへのデータレプリケーションの進行状況を示すために使用されます。以前のTiDBバージョンでは、PROCESSフィールドはTiFlashレプリカの作成中のデータレプリケーションの進行状況のみを示します。TiFlashTiFlashの作成後、TiKV内の対応するテーブルに新しいデータがインポートされても、このフィールドは更新されず、新しいデータのTiKVからTiFlashへのレプリケーションの進行状況は表示されません。v6.4.0では、TiDBはTiFlashレプリカのデータレプリケーションの進行状況の更新メカニズムを改善しました。TiFlashTiFlashの作成後、TiKVの対応するテーブルに新しいデータがインポートされると、テーブル
INFORMATION_SCHEMA.TIFLASH_REPLICAのPROGRESSの値が更新され、新しいデータのTiKVからTiFlashへの実際のレプリケーション進行状況が表示されます。この改善により、 TiFlashデータレプリケーションの実際の進行状況を簡単に確認できます。詳細についてはユーザードキュメント参照してください。
MySQLの互換性
線形ハッシュパーティション構文#38450 @ ミョンスと互換性がある
以前のバージョンでは、TiDBはハッシュ、レンジ、List パーティショニングをサポートしていました。v6.4.0以降、TiDBはMySQL 線形ハッシュパーティショニングの構文にも対応しています。
TiDBでは、MySQLリニアハッシュパーティションの既存のDDL文を直接実行できます。TiDBは対応するハッシュパーティションテーブルを作成します(TiDB内にはリニアハッシュパーティションは存在しないことに注意してください)。また、MySQLリニアハッシュパーティションの既存のDML文を直接実行することもできます。TiDBは対応するTiDBハッシュパーティションのクエリ結果を通常通り返します。この機能により、TiDBの構文とMySQLリニアハッシュパーティションの互換性が確保され、MySQLベースのアプリケーションからTiDBへのシームレスな移行が容易になります。
パーティション数が2の累乗の場合、TiDBハッシュパーティションテーブルの行はMySQLリニアハッシュパーティションテーブルと同じように分散されます。それ以外の場合、TiDBにおける行の分散はMySQLとは異なります。
詳細についてはユーザードキュメント参照してください。
高性能かつ全体的に単調な
AUTO_INCREMENT(実験的) #38442 @ 天菜まおをサポートTiDB v6.4.0 では、MySQL 互換モード
AUTO_INCREMENTが導入されました。このモードでは、すべての TiDB インスタンスで ID が単調に増加するようにする、集中型の自動インクリメント ID 割り当てサービスが導入されます。この機能により、自動インクリメント ID によるクエリ結果の並べ替えが容易になります。MySQL 互換モードを使用するには、テーブル作成時にAUTO_ID_CACHEから1設定する必要があります。以下は例です。CREATE TABLE t (a INT AUTO_INCREMENT PRIMARY KEY) AUTO_ID_CACHE = 1;詳細についてはユーザードキュメント参照してください。
JSON型#13644 @ ヤンケオの配列データの範囲選択をサポート
v6.4.0 以降では、TiDB で MySQL 互換範囲選択構文使用できるようになります。
キーワード
to使用すると、配列要素の開始位置と終了位置を指定し、配列内の連続した範囲の要素を選択できます。0使用すると、配列の最初の要素の位置を指定できます。例えば、$[0 to 2]使用すると、配列の最初の3つの要素を選択できます。キーワード
lastを使用すると、配列の最後の要素の位置を指定できます。これにより、右から左への位置を指定できます。例えば、$[last-2 to last]使用すると、配列の最後の3つの要素を選択できます。
この機能により、SQL ステートメントの記述プロセスが簡素化され、JSON 型の互換性がさらに向上し、MySQL アプリケーションを TiDB に移行する際の難易度が軽減されます。
データベースユーザー#38172 @ CbcWestwolfの追加説明の追加をサポート
TiDB v6.4では、
CREATE USERまたはALTER USER使用してデータベースユーザー向けの説明を追加できます。TiDBは2つの説明形式を提供しています。5COMMENT使用してテキストコメントを追加し、ATTRIBUTEを使用してJSON形式の構造化属性セットを追加できます。さらに、TiDB v6.4.0 では、ユーザーコメントとユーザー属性の情報を表示できる
USER_ATTRIBUTESテーブルが追加されました。CREATE USER 'newuser1'@'%' COMMENT 'This user is created only for test'; CREATE USER 'newuser2'@'%' ATTRIBUTE '{"email": "user@pingcap.com"}'; SELECT * FROM INFORMATION_SCHEMA.USER_ATTRIBUTES;+-----------+------+---------------------------------------------------+ | USER | HOST | ATTRIBUTE | +-----------+------+---------------------------------------------------+ | newuser1 | % | {"comment": "This user is created only for test"} | | newuser1 | % | {"email": "user@pingcap.com"} | +-----------+------+---------------------------------------------------+ 2 rows in set (0.00 sec)この機能により、TiDB と MySQL 構文の互換性が向上し、TiDB を MySQL エコシステムのツールやプラットフォームに統合しやすくなります。
バックアップと復元
EBSボリュームスナップショット#33849 @ フェンゴウ1を使用したTiDBクラスターのバックアップをサポート
TiDB クラスターが EKS にデプロイされ、AWS EBS ボリュームを使用しており、TiDB クラスター データをバックアップする際に次の要件がある場合は、 TiDB Operatorを使用してボリューム スナップショットとメタデータごとにデータを AWS S3 にバックアップできます。
- バックアップの影響を最小限に抑えます。たとえば、QPS とトランザクションのレイテンシーへの影響を 5% 未満に保ち、クラスターの CPU とメモリを占有しないようにします。
- 短時間でデータのバックアップとリストアを行います。例えば、1時間以内にバックアップを完了し、2時間以内にデータをリストアします。
詳細についてはユーザードキュメント参照してください。
データ移行
DMは、上流のデータソース情報を下流のマージされたテーブル#37797 @ リチュンジュの拡張列に書き込むことをサポートします。
上流からTiDBにシャード化されたスキーマとテーブルをマージする際、ターゲットテーブルに複数のフィールド(拡張列)を手動で追加し、DMタスクの設定時にそれらの値を指定できます。例えば、拡張列に上流のシャード化されたスキーマとテーブルの名前を指定すると、DMによって下流に書き込まれるデータにはスキーマ名とテーブル名が含まれます。下流のデータが通常とは異なる場合、この機能を使用することで、ターゲットテーブル内のスキーマ名やテーブル名などのデータソース情報を素早く見つけることができます。
詳細についてはテーブル、スキーマ、ソース情報を抽出し、結合されたテーブルに書き込みます参照してください。
DMは、いくつかの必須チェック項目をオプションの項目に変更することで、事前チェックのメカニズムを最適化します#7333 @ リチュンジュ
データ移行タスクをスムーズに実行するために、DM はタスクの開始時に事前チェック自動的にトリガーし、チェック結果を返します。DM は事前チェックに合格した後にのみ移行を開始します。
v6.4.0 では、DM は次の 3 つのチェック項目を必須からオプションに変更し、事前チェックの合格率を向上させました。
- アップストリーム テーブルが TiDB と互換性のない文字セットを使用しているかどうかを確認します。
- 上流のテーブルに主キー制約または一意キー制約があるかどうかを確認します
- プライマリ/セカンダリ構成で、アップストリーム データベースのデータベース ID
server_idが指定されているかどうかを確認します。
DM は、増分移行タスク#7393 @ GMHDBJDオプション パラメータとして、binlogの位置と GTID を構成することをサポートしています。
v6.4.0以降、binlogの位置やGTIDを指定せずに、直接増分マイグレーションを実行できるようになりました。DMは、タスク開始後に生成されたbinlogファイルを上流から自動的に取得し、これらの増分データを下流に移行します。これにより、ユーザーは煩雑な設定や理解の手間から解放されます。
詳細についてはDM 高度なタスクコンフィグレーションファイル参照してください。
DM は移行タスク#7343 @ okJiangステータス インジケーターを追加します
バージョン 6.4.0 では、DM により移行タスクのパフォーマンスと進行状況のインジケーターがさらに追加され、移行のパフォーマンスと進行状況をより直感的に理解できるようになり、トラブルシューティングの参照としても役立ちます。
- データのインポートおよびエクスポートのパフォーマンスを示すステータス インジケーター (バイト/秒単位) を追加します。
- ダウンストリーム データベースにデータを書き込むためのパフォーマンス インジケーターの名前を TPS から RPS (行数/秒) に変更します。
- DM 完全移行タスクのデータ エクスポートの進行状況を示す進行状況インジケーターを追加します。
これらの指標の詳細については、 TiDB データ移行におけるクエリタスクステータス参照してください。
TiDBデータ共有サブスクリプション
TiCDCは#7191
3.2.0のデータレプリケーションを3エースショーハンドサポートしています。v6.4.0 以降、TiCDC は
3.2.0バージョンのうちKafkaへのデータの複製それ以前のバージョンをサポートします。
互換性の変更
システム変数
| 変数名 | タイプを変更 | 説明 |
|---|---|---|
max_execution_time | 修正済み | バージョン6.4.0より前では、この変数はすべてのタイプのステートメントに適用されます。バージョン6.4.0以降では、この変数は読み取り専用ステートメントの最大実行時間のみを制御します。 |
tidb_constraint_check_in_place_pessimistic | 修正済み | GLOBALスコープを削除し、 pessimistic-txn.constraint-check-in-place-pessimistic設定項目を使用してデフォルト値を変更できるようにします。この変数は、TiDBが悲観的トランザクションにおいて一意制約をチェックするタイミングを制御します。 |
tidb_ddl_flashback_concurrency | 修正済み | バージョン6.4.0以降で有効になり、同時実行数をFLASHBACK CLUSTER TO TIMESTAMPに制御します。デフォルト値は64です。 |
tidb_enable_clustered_index | 修正済み | デフォルト値をINT_ONLYからONに変更します。これは、主キーがデフォルトでクラスター化インデックスとして作成されることを意味します。 |
tidb_enable_paging | 修正済み | デフォルト値をOFFからONに変更します。これは、コプロセッサ要求を送信するためのページング方式がデフォルトで使用されることを意味します。 |
tidb_enable_prepared_plan_cache | 修正済み | SESSIONスコープを追加します。この変数はプリペアドプランキャッシュ有効にするかどうかを制御します。 |
tidb_memory_usage_alarm_ratio | 修正済み | デフォルト値を0.8から0.7に変更します。この変数は、tidb-server のメモリアラームをトリガーするメモリ使用率を制御します。 |
tidb_opt_agg_push_down | 修正済み | GLOBALスコープを追加します。この変数は、オプティマイザーが集計関数をJoin、Projection、UnionAllの前の位置までプッシュダウンする最適化操作を実行するかどうかを制御します。 |
tidb_prepared_plan_cache_size | 修正済み | SESSIONスコープを追加します。この変数は、セッションでキャッシュできるプランの最大数を制御します。 |
tidb_stats_load_sync_wait | 修正済み | デフォルト値を0から100に変更します。これは、SQL 実行が完全な列統計を同期的にロードするために、デフォルトで最大 100 ミリ秒待機できることを意味します。 |
tidb_stats_load_pseudo_timeout | 修正済み | デフォルト値をOFFからONに変更します。これは、完全な列統計を同期的にロードするタイムアウトに達した後、SQL 最適化が疑似統計の使用に戻ることを意味します。 |
last_sql_use_alloc | 新しく追加された | 前の文がキャッシュされたチャンクオブジェクト(チャンク割り当て)を使用したかどうかを示します。この変数は読み取り専用で、デフォルト値はOFFです。 |
tidb_auto_analyze_partition_batch_size | 新しく追加された | パーティションテーブルを分析する際にTiDBが自動的に分析するに処理できるパーティションの数を指定します(つまり、パーティションテーブルの統計情報を自動的に収集します)。デフォルト値は1です。 |
tidb_enable_external_ts_read | 新しく追加された | TiDBがtidb_external_tsで指定されたタイムスタンプでデータを読み取るかどうかを制御します。デフォルト値はOFFです。 |
tidb_enable_gogc_tuner | 新しく追加された | GOGCチューナーを有効にするかどうかを制御します。デフォルト値はONです。 |
tidb_enable_reuse_chunk | 新しく追加された | TiDBがチャンクオブジェクトのキャッシュを有効にするかどうかを制御します。デフォルト値はONで、これはTiDBがキャッシュされたチャンクオブジェクトを優先的に使用し、要求されたオブジェクトがキャッシュ内に存在しない場合にのみシステムから要求することを意味します。値がOFF場合、TiDBはシステムから直接チャンクオブジェクトを要求します。 |
tidb_enable_prepared_plan_cache_memory_monitor | 新しく追加された | プリペアドプランキャッシュにキャッシュされた実行プランによって消費されるメモリをカウントするかどうかを制御します。デフォルト値はONです。 |
tidb_external_ts | 新しく追加された | デフォルト値は0です。3 ON tidb_enable_external_ts_read設定すると、TiDB はこの変数で指定されたタイムスタンプでデータを読み取ります。 |
tidb_gogc_tuner_threshold | 新しく追加された | GOGCチューニングの最大メモリしきい値を指定します。メモリがこのしきい値を超えると、GOGC Tunerは動作を停止します。デフォルト値は0.6です。 |
tidb_memory_usage_alarm_keep_record_num | 新しく追加された | tidb-server のメモリ使用量がメモリアラームしきい値を超えてアラームがトリガーされると、TiDB はデフォルトで直近 5 件のアラーム中に生成されたステータスファイルのみを保持します。この変数でこの数を調整できます。 |
tidb_opt_prefix_index_single_scan | 新しく追加された | TiDBオプティマイザが、不要なテーブル検索を回避し、クエリパフォーマンスを向上させるために、一部のフィルタ条件をプレフィックスインデックスにプッシュダウンするかどうかを制御します。デフォルト値はONです。 |
tidb_opt_range_max_size | 新しく追加された | オプティマイザがスキャン範囲を構築する際に使用するメモリの上限を指定します。デフォルト値は67108864 (64MiB)です。 |
tidb_server_memory_limit | 新しく追加された | スキャン範囲を構築するためのオプティマイザのメモリ使用量の上限を制御します(実験的)。デフォルト値は0で、メモリ制限がないことを意味します。 |
tidb_server_memory_limit_gc_trigger | 新しく追加された | TiDBがGCをトリガーしようとするしきい値を制御します(実験的)。デフォルト値は70%です。 |
tidb_server_memory_limit_sess_min_size | 新しく追加された | メモリ制限を有効にすると、TiDBは現在のインスタンスで最もメモリ使用量が多いSQL文を終了します。この変数は、終了するSQL文の最小メモリ使用量を指定します。デフォルト値は134217728 (128MiB)です。 |
コンフィグレーションファイルのパラメータ
| コンフィグレーションファイル | コンフィグレーションパラメータ | タイプを変更 | 説明 |
|---|---|---|---|
| TiDB | tidb_memory_usage_alarm_ratio | 削除済み | この構成項目は無効になりました。 |
| TiDB | memory-usage-alarm-ratio | 削除済み | システム変数tidb_memory_usage_alarm_ratioに置き換えられます。この構成項目が TiDB バージョン v6.4.0 より前のバージョンで構成されている場合には、アップグレード後に有効になりません。 |
| TiDB | pessimistic-txn.constraint-check-in-place-pessimistic | 新しく追加された | システム変数tidb_constraint_check_in_place_pessimisticのデフォルト値を制御します。デフォルト値はtrueです。 |
| TiDB | tidb-max-reuse-chunk | 新しく追加された | チャンク割り当てにおけるキャッシュされたチャンクオブジェクトの最大数を制御します。デフォルト値は64です。 |
| TiDB | tidb-max-reuse-column | 新しく追加された | チャンク割り当てのキャッシュ列オブジェクトの最大数を制御します。デフォルト値は256です。 |
| TiKV | cdc.raw-min-ts-outlier-threshold | 非推奨 | この構成項目は無効になりました。 |
| TiKV | causal-ts.alloc-ahead-buffer | 新しく追加された | 事前に割り当てられたTSOキャッシュサイズ(期間)。デフォルト値は3sです。 |
| TiKV | causal-ts.renew-batch-max-size | 新しく追加された | タイムスタンプリクエストにおけるTSOの最大数を制御します。デフォルト値は8192です。 |
| TiKV | raftstore.apply-yield-write-size | 新しく追加された | Applyスレッドが1回のポーリングで1つのFSM(有限状態機械)に書き込める最大バイト数を制御します。デフォルト値は32KiBです。これはソフトリミットです。 |
| PD | tso-update-physical-interval | 新しく追加された | バージョン6.4.0以降で有効になり、PDがTSOの物理時間を更新する間隔を制御します。デフォルト値は50msです。 |
| TiFlash | data-encryption-method | 修正済み | 新しい値オプションsm4-ctrが導入されました。この設定項目をsm4-ctrに設定すると、データは保存前に SM4 を使用して暗号化されます。 |
| DM | routes.route-rule-1.extract-table | 新しく追加された | オプション。シャーディングシナリオにおいて、シャーディングされたテーブルのソース情報を抽出するために使用します。抽出された情報は、データソースを識別するために、下流のマージされたテーブルに書き込まれます。このパラメータを設定する場合は、事前に下流にマージされたテーブルを手動で作成する必要があります。 |
| DM | routes.route-rule-1.extract-schema | 新しく追加された | オプション。シャーディングシナリオにおいて、シャーディングされたスキーマのソース情報を抽出するために使用します。抽出された情報は、データソースを識別するために、下流のマージされたテーブルに書き込まれます。このパラメータを設定する場合は、事前に下流にマージされたテーブルを手動で作成する必要があります。 |
| DM | routes.route-rule-1.extract-source | 新しく追加された | オプション。シャーディングシナリオにおいて、ソースインスタンスの情報を抽出するために使用されます。抽出された情報は、データソースを識別するために、下流のマージテーブルに書き込まれます。このパラメータを設定する場合は、事前に下流にマージテーブルを手動で作成する必要があります。 |
| TiCDC | transaction-atomicity | 修正済み | デフォルト値をtableからnoneに変更します。この変更により、レプリケーションのレイテンシーとOOMリスクが軽減されます。さらに、TiCDCはすべてのトランザクションではなく、一部のトランザクション(単一トランザクションのサイズが1024行を超える)のみを分割するようになりました。 |
その他
- v6.4.0以降、
mysql.userテーブルにUser_attributesとToken_issuer2つの新しい列が追加されます。以前のTiDBバージョンmysqlバックアップデータからTiDB v6.4.0にmysqlスキーマ内のシステムテーブルを復元する復元すると、 BRはmysql.userテーブルに対してcolumn count mismatchエラーを報告します。13スキーマでシステムテーブルを復元しない場合、このエラーは報告されません。 - 名前がDumplingエクスポートファイルの形式一致するものの、末尾が非圧縮形式(
test-schema-create.sql.originやtest.table-schema.sql.originなど)であるファイルについては、 TiDB Lightningによる処理方法が変更されました。v6.4.0 より前では、インポートするファイルにこれらのファイルが含まれている場合、 TiDB Lightning はそれらのファイルのインポートをスキップしていました。v6.4.0 以降では、 TiDB Lightning はこれらのファイルがサポートされていない圧縮形式を使用していると想定し、インポートタスクは失敗します。 - v6.4.0 以降では、権限
SYSTEM_VARIABLES_ADMINまたはSUPER持つ changefeed のみが TiCDC Syncpoint 機能を使用できます。
改善点
TiDB
TiKV
- 新しい構成項目
apply-yield-write-size追加して、Apply スレッドが 1 回のポーリングで 1 つの有限状態マシンに書き込むことができる最大バイト数を制御し、Apply スレッドが大量のデータ#13313 @ 栄光を書き込むときにRaftstore の輻輳を緩和します。 - リーダー移行プロセス中のQPSジッターを回避するために、リージョンのリーダーを移行する前にエントリキャッシュをウォームアップします#13060 @ コスベン
json_constrains演算子をコプロセッサー#13592 @ 立振環にプッシュダウンする機能をサポート- いくつかのシナリオでフラッシュパフォーマンスを向上させるために、
CausalTsProviderに非同期関数を追加します#13428 @ 沢民州
- 新しい構成項目
PD
TiFlash
ツール
TiDBダッシュボード
バックアップと復元 (BR)
TiCDC
- 交換パーティションDDLステートメント#639 @ アズドンメンの複製をサポート
- MQシンクモジュール#7353 @ ハイラスティンの非バッチ送信パフォーマンスを向上
- テーブルに多数のリージョン#7078 #7281 @ スドジがある場合の TiCDC プラーのパフォーマンスを向上
- 同期ポイントが有効な場合、
tidb_enable_external_ts_read変数を使用して下流 TiDB の履歴データの読み取りをサポートします#7419 @ アズドンメン - レプリケーションの安定性を向上させるために、トランザクション分割を有効にし、セーフモードをデフォルトで無効にします#7505 @ アズドンメン
TiDB データ移行 (DM)
TiDB Lightning
バグ修正
TiDB
- 新しいインデックス#38165 @ 接線を作成した後に発生する可能性のあるインデックスの不整合の問題を修正しました
INFORMATION_SCHEMA.TIKV_REGION_STATUSテーブル#38407 @ CbcWestwolfの権限の問題を修正mysql.tables_privテーブル#38293 @ CbcWestwolfでgrantorフィールドが欠落している問題を修正しました- 共通テーブル式の結合結果が間違っている可能性がある問題を修正#38170 @ wjhuang2016
- 共通テーブル式の結合結果が間違っている可能性がある問題を修正#37928 @ ヤンケオ
- トランザクションリージョン番号監視パネルの情報が正しくない問題を修正#38139 @ ジャッキーsp
- システム変数
tidb_constraint_check_in_place_pessimistic内部トランザクションに影響を与える可能性がある問題を修正しました。変数のスコープはSESSIONに変更されました#38766 @ エキシウム - クエリ内の条件が誤って投影#35623 @ 思い出させるにプッシュダウンされる問題を修正しました
ANDとOR間違ったisNullRejectedチェック結果が間違ったクエリ結果#38304 @ イーサールを引き起こす問題を修正しました- 外部結合が除去されるときに
ORDER BYinGROUP_CONCATが考慮されず、間違ったクエリ結果#18216 @ ウィノロスが発生する問題を修正しました。 - 結合したテーブルの再配置 #38736 @ ウィノロスによって誤ってプッシュダウンされた条件が破棄されたときに発生する間違ったクエリ結果の問題を修正しました。
TiKV
cgroupとmountinfoレコードが複数ある場合、TiDB が Gitpod で起動に失敗する問題を修正しました#13660 @ タボキ- TiKVメトリックの誤った表現を修正
tikv_gc_compaction_filtered#13537 @ 定義2014 - 異常な
delete_files_in_range#13534 @ タボキによって引き起こされるパフォーマンスの問題を修正 - スナップショット取得中に期限切れのリースが原因で発生する異常なリージョン競合を修正#13553 @ スペードA-タン
- 最初のバッチ#13672 #13704 #13723 @ HuSharpで
FLASHBACK失敗したときに発生したエラーを修正
PD
- 不正確なストリームタイムアウトを修正し、リーダーのスイッチオーバーを高速化#5207 @ キャビンフィーバーB
TiFlash
ツール
TiDBダッシュボード
バックアップと復元 (BR)
TiCDC
changefeed query結果のうちsasl-passwordが#7182 @ ドヴェーデンでマスクされない問題を修正しました- etcdトランザクションでコミットされる操作が多すぎるとTiCDCが利用できなくなる問題を修正#7131 @ アズドンメン
- REDOログが誤って削除される可能性がある問題を修正#6413 @ アズドンメン
- Kafka Sink V2 #7344 @ ハイラスティンでワイドテーブルを複製する際のパフォーマンス低下を修正
- チェックポイント ts が誤って#7274 @ ハイラスティンに進められる可能性がある問題を修正しました
- マウンタモジュール#7235 @ ハイラスティンのログレベルが不適切であるためにログが多すぎる問題を修正しました
- TiCDC クラスタに#4051 @ アズドンメンという 2 人の所有者が存在する可能性がある問題を修正しました
TiDB データ移行 (DM)
- DM WebUIが間違った
allow-listパラメータ#7096 @ ズービンウーを生成する問題を修正しました - DM ワーカーが開始または停止するときに、一定の確率でデータ競合が発生する問題を修正しました#6401 @ liumengya94
- DM が
UPDATEまたはDELETEステートメントを複製したが、対応する行データが存在しない場合、DM がイベント#6383 @ GMHDBJDを黙って無視する問題を修正しました。 query-statusコマンド#7189 @ GMHDBJDを実行した後にsecondsBehindMasterフィールドが表示されない問題を修正しました- チェックポイントの更新により大規模なトランザクション#5010 @ ランス6716がトリガーされる可能性がある問題を修正しました
- フルタスクモードで、タスクが同期ステージに入ってすぐに失敗すると、DM が上流のテーブルスキーマ情報#7159 @ ランス6716を失う可能性がある問題を修正しました。
- 整合性チェックが有効になっているときにデッドロックが発生する可能性がある問題を修正#7241 @ ブチュイトデゴウ
- タスクの事前チェックにテーブル
INFORMATION_SCHEMA#7317 @ ランス6716のSELECT権限が必要である問題を修正しました - 空のTLS構成によってエラー#7384 @ liumengya94が発生する問題を修正
- DM WebUIが間違った
TiDB Lightning
TiDBDumpling
寄稿者
TiDB コミュニティからの以下の貢献者に感謝いたします。