📣
TiDB Cloud Premium はパブリックプレビュー中です。エンタープライズワークロード向けの無制限のスケーリング、即時の弾力性、高度なセキュリティを提供します。このページは自動翻訳されたものです。原文はこちらからご覧ください。

TiDB 6.4.0 リリースノート



発売日:2022年11月17日

TiDBバージョン: 6.4.0-DMR

注記:

TiDB 6.4.0-DMR ドキュメントはアーカイブ済みです。 PingCAP は、TiDB データベースの最新のLTSバージョンを使用することを推奨します。

クイックアクセス: クイックスタート

バージョン6.4.0-DMRの主な新機能と改善点は以下のとおりです。

新機能

SQL

  • SQL ステートメントを使用して、テーブル内の指定されたパーティションのTiFlashレプリカをすぐに圧縮するサポート #5315 @hehechen

    バージョン6.2.0以降、TiDBはTiFlashのフルテーブルレプリカに対して物理データを即座に圧縮する機能をサポートしています。適切なタイミングでSQLステートメントを手動で実行してTiFlash内の物理データを即座に圧縮することで、storage容量を削減し、クエリパフォーマンスを向上させることができます。バージョン6.4.0では、圧縮するTiFlashレプリカデータの粒度をさらに細かくし、テーブル内の指定されたパーティションのTiFlashレプリカを即座に圧縮できるようにしました。

    SQL ステートメントALTER TABLE table_name COMPACT [PARTITION PartitionNameList] [engine_type REPLICA]を実行すると、テーブル内の指定されたパーティションのTiFlashレプリカを即座に圧縮できます。

    詳細については、 ユーザー向けドキュメントを参照してください。

  • FLASHBACK CLUSTER TO TIMESTAMPを使用した特定の時点へのクラスターの復元のサポート (実験的) #37197 #13303 @Defined2014 @bb7133 @JmPotato @Connor1996 @HuSharp @CalvinNeo

    FLASHBACK CLUSTER TO TIMESTAMP構文を使用すると、ガベージコレクション(GC)の有効期間内に、クラスタを特定の時点に迅速に復元できます。この機能は、DML操作の誤りを簡単かつ迅速に取り消すのに役立ちます。たとえば、{{B-PLACEHOLDER-2-PLACEHOLDER-E} WHERE句なしで誤ってDELETEを実行した後、この構文を使用して数分で元のクラスタを復元できます。この機能はデータベースのバックアップに依存せず、異なる時点のデータをロールバックして、データが変更された正確な時刻を特定できます。 FLASHBACK CLUSTER TO TIMESTAMPはデータベースのバックアップの代わりにはならないことに注意してください。

    FLASHBACK CLUSTER TO TIMESTAMPを実行する前に、TiCDC などのツールで実行されている PITR およびレプリケーション タスクを一時停止し、 FLASHBACKが完了した後に再開する必要があります。そうしないと、レプリケーション タスクが失敗する可能性があります。

    詳細については、 ユーザー向けドキュメントを参照してください。

  • FLASHBACK DATABASE #20463 @erwadbaを使用して削除されたデータベースの復元をサポートします

    FLASHBACK DATABASEを使用すると、 DROPによってガベージコレクション(GC) の有効期間内に削除されたデータベースとそのデータを復元できます。この機能は外部ツールに依存しません。SQL ステートメントを使用して、データとメタデータを迅速に復元できます。

    詳細については、 ユーザー向けドキュメントを参照してください。

Security

  • TiFlashは保存時の暗号化にSM4アルゴリズムをサポートしています #5953 @lidezhu

    TiFlashの保存時暗号化にSM4アルゴリズムを追加します。保存時暗号化を設定する際に、 data-encryption-method構成ファイル内のsm4-ctr }}構成の値をtiflash-learner.toml暗号化機能を有効にできます。

    詳細については、ユーザー向けドキュメントを参照してください。

可観測性

  • クラスタ診断が GA になります #1438 @Hawkson-jee

    TiDB Dashboardの クラスター診断は、指定された時間範囲内でクラスタに存在する可能性のある問題を診断し、診断結果とクラスタ関連の負荷監視情報を レポートにまとめます。この診断レポートはWeb 診断レポート形式です。ブラウザからページを保存した後、オフラインでページを閲覧したり、このページのリンクを共有したりできます。

    診断レポートを使用すると、負荷、コンポーネントの状態、処理時間、構成など、クラスタの基本的な状態情報をすばやく把握できます。クラスタに一般的な問題がある場合は、 診断情報セクションにある組み込みの自動診断結果から原因を特定できます。

パフォーマンス

  • コプロセッサタスクの同時実行適応メカニズムを導入します #37724 @you06

    TiKV の処理速度に基づいて、コプロセッサ タスクの数が増えると、TiDB は自動的に並列度を上げて ( tidb_distsql_scan_concurrencyの値を調整して)、コプロセッサ タスク キューを減らし、レイテンシーを削減します。

  • テーブル結合順序を決定するための動的計画アルゴリズムを追加 #37825 @winoros

    以前のバージョンでは、TiDB はテーブルの結合順序を決定するために貪欲アルゴリズムを使用していました。v6.4.0 では、TiDB オプティマイザに 計画 が導入されました。 動的計画アルゴリズム計画アルゴリズムは、貪欲アルゴリズムよりも多くの可能な結合順序を列挙できるため、より良い実行計画を見つける可能性が高まり、一部のシナリオでは SQL 実行効率が向上します。

    動的計画法アルゴリズムは処理に時間がかかるため、TiDBの結合したテーブルの再配置アルゴリズムの選択は、 tidb_opt_join_reorder_threshold変数によって制御されます。Join 結合したテーブルの再配置に参加するノード数がこの閾値を超えると、TiDBは貪欲法アルゴリズムを使用します。そうでない場合は、動的計画法アルゴリズムを使用します。

    詳細については、ユーザー向けドキュメントを参照してください。

  • プレフィックスインデックスは、null値のフィルタリングをサポートしています。 #21145 @xuyifangreeneyes

    この機能は、プレフィックスインデックスの最適化です。テーブル内の列にプレフィックスインデックスが設定されている場合、SQL文内の列のIS NULLまたはIS NOT NULL条件をプレフィックスで直接フィルタリングできるため、この場合テーブル検索が不要になり、SQL実行のパフォーマンスが向上します。

    詳細については、 ユーザー向けドキュメントを参照してください。

  • TiDBチャンク再利用メカニズムの強化 #38606 @keeplearning20221

    以前のバージョンでは、TiDB はwritechunk関数内でのみチャンクを再利用していました。TiDB v6.4.0 では、チャンク再利用メカニズムが Executor の演算子に拡張されました。チャンクを再利用することで、TiDB はメモリ解放を頻繁に要求する必要がなくなり、一部のシナリオでは SQL クエリの実行効率が向上します。システム変数tidb_enable_reuse_chunk使用して、チャンク オブジェクトを再利用するかどうかを制御できます。この機能はデフォルトで有効になっています。

    詳細については、 ユーザー向けドキュメントを参照してください。

  • 相関サブクエリの非相関化を実行するかどうかを制御する新しいオプティマイザー ヒントNO_DECORRELATEを導入します #37789 @time-and-fate

    TiDB はデフォルトでは、相関のあるサブクエリを書き換えて相関解除を実行しようとします。これにより、通常は実行効率が向上します。しかし、シナリオによっては相関解除によって実行効率が低下する場合があります。v6.4.0 では、オプティマイザヒントNO_DECORRELATEが導入され、特定のクエリブロックに対して相関解除を実行しないようにオプティマイザに指示することで、シナリオによってはクエリのパフォーマンスが向上します。

    詳細については、ユーザー向けドキュメントを参照してください。

  • パーティション化されたテーブルの統計情報収集のパフォーマンスを改善する #37977 @Yisaer

    バージョン6.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はメモリ使用量が最も高いSQL操作を特定してキャンセルし、過剰なメモリ使用量によって引き起こされるシステムの問題を防ぎます。

    TiDBインスタンスのメモリ消費に潜在的なリスクがある場合、TiDBは事前に診断情報を収集し、指定されたディレクトリに書き込むことで、問題の診断を容易にします。同時に、TiDBはメモリ使用量と操作履歴を表示するシステムテーブルビューINFORMATION_SCHEMA.MEMORY_USAGEINFORMATION_SCHEMA.MEMORY_USAGE_OPS_HISTORYを提供し、メモリ使用状況をより深く理解できるようにします。

    グローバルメモリ制御は、TiDBのメモリ管理における画期的な機能です。インスタンスのグローバルな視点を導入し、メモリの体系的な管理を採用することで、より多くの重要なシナリオにおいてデータベースの安定性とサービスの可用性を大幅に向上させることができます。

    詳細については、ユーザー向けドキュメントを参照してください。

  • 範囲構築オプティマイザのメモリ使用量を制御する #37176 @xuyifangreeneyes

    バージョン6.4.0では、範囲を構築するオプティマイザの最大メモリ使用量を制限するために、システム変数tidb_opt_range_max_sizeが導入されました。メモリ使用量がこの制限を超えると、オプティマイザはメモリ消費量を削減するために、より正確な範囲ではなく、より粗い粒度の範囲を構築します。SQL文にIN条件が多数ある場合、この最適化によりコンパイル時のメモリ使用量を大幅に削減し、システムの安定性を確保できます。

    詳細については、 ユーザー向けドキュメントを参照してください。

  • 統計情報の同期読み込みをサポート (GA) #37434 @chrysan

    TiDB v6.4.0では、統計情報の同期読み込み機能がデフォルトで有効になっています。この機能により、SQL文の実行時に、ヒストグラム、TopN、Count-Min Sketch統計情報などの大規模な統計情報をメモリに同期的に読み込むことが可能になり、SQL最適化のための統計情報の網羅性が向上します。

    詳細については、 ユーザー向けドキュメントを参照してください。

  • バッチ書き込みリクエストが軽量トランザクション書き込みの応答時間に与える影響を軽減する #13313 @glorv

    一部のシステムのビジネスロジックでは、定期的なバッチ DML タスクが必要ですが、これらのバッチ書き込みタスクを処理すると、オンライン トランザクションのレイテンシーが増加します。v6.3.0 では、TiKV はハイブリッド ワークロード シナリオでの読み取り要求のスケジューリングを最適化するため、 readpool.unified.auto-adjust-pool-size構成項目を有効にすると、TiKV がすべての読み取り要求に対して UnifyReadPool スレッド プールのサイズを自動的に調整します。v6.4.0 では、TiKV は書き込み要求も動的に識別して優先順位を付け、1 回のポーリングで Apply スレッドが 1 つの FSM (有限状態機械) に対して書き込むことができる最大バイト数を制御できるため、バッチ書き込み要求がトランザクション書き込みの応答時間に与える影響を軽減できます。

使いやすさ

  • TiKV API V2 が一般公開 (GA) #11745 @pingyu

    バージョン6.1.0より前のTiKVは、クライアントから渡された生データのみを保存するため、基本的なキーバリューの読み書き機能しか提供していませんでした。さらに、異なるコーディング方式とスコープのないデータ範囲のため、TiDB、トランザクションKV、およびRawKVを同じTiKVクラスタで同時に使用することはできません。そのため、複数のクラスタが必要となり、マシンコストと導入コストが増加します。

    TiKV API V2は、新しいRawKVstorageフォーマットとアクセスインターフェースを提供し、以下の利点をもたらします。

    • MVCCにデータを保存する際に、記録されたデータの変更タイムスタンプを付加します。このタイムスタンプに基づいて変更データキャプチャ(CDC)が実装されます。この機能は実験的であり、詳細はTiKV-CDCに記載されています。
    • データはさまざまな用途に応じて範囲が定められており、API V2では、単一のクラスタ内でTiDB、トランザクションKV、およびRawKVアプリケーションが共存することをサポートしています。
    • マルチテナントなどの機能をサポートするために、キースペースフィールドを予約してください。

    TiKV API V2を有効にするには、TiKV設定ファイルのapi-version = 2セクションに[storage] }を設定します。

    詳細については、 ユーザー向けドキュメントを参照してください。

  • TiFlashデータ複製進捗状況の精度向上 #4902 @hehechen

    TiDBでは、 PROGRESSテーブルのINFORMATION_SCHEMA.TIFLASH_REPLICAフィールドは、TiKVの対応するテーブルからTiFlashレプリカへのデータレプリケーションの進行状況をTiFlashために使用されます。以前のTiDBバージョンでは、 PROCESSフィールドは、 TiFlashレプリカの作成中のデータレプリケーションの進行状況のみを提供していました。TiFlashレプリカが作成された後、TiKVの対応するテーブルに新しいデータがインポートされた場合、このフィールドは更新されず、新しいデータのTiKVからTiFlashへのレプリケーションの進行状況は表示されません。

    バージョン6.4.0では、TiDBはTiFlashレプリカのデータレプリケーション進捗状況の更新メカニズムを改善しました。TiFlashレプリカが作成された後、TiKVの対応するテーブルに新しいデータがインポートされると、 INFORMATION_SCHEMA.TIFLASH_REPLICAテーブルのPROGRESS値が更新され、新しいデータに対するTiKVからTiFlashへの実際のレプリケーション進捗状況が表示されます。この改善により、 TiFlashデータレプリケーションの実際の進捗状況を簡単に確認できます。

    詳細については、 ユーザー向けドキュメントを参照してください。

MySQLとの互換性

  • 線形ハッシュパーティショニング構文との互換性を確保する #38450 @mjonss

    以前のバージョンでは、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 @tiancaiamao

    TiDB v6.4.0 ではAUTO_INCREMENT MySQL 互換モードが導入されました。このモードでは、すべての TiDB インスタンスで ID が単調増加することを保証する、集中型の自動インクリメント ID 割り当てサービスが導入されます。この機能により、自動インクリメント ID によるクエリ結果のソートが容易になります。MySQL 互換モードを使用するには、テーブルを作成する際にAUTO_ID_CACHE1に設定する必要があります。以下に例を示します。

    CREATE TABLE t (a INT AUTO_INCREMENT PRIMARY KEY) AUTO_ID_CACHE = 1;

    詳細については、ユーザー向けドキュメントを参照してください。

  • JSON型における配列データの範囲選択のサポート #13644 @YangKeao

    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 つの説明形式を提供します。 COMMENTを使用してテキスト コメントを追加したり、 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 ボリューム スナップショットを使用した TiDB クラスターのバックアップをサポート #33849 @fengou1

    TiDB クラスターが EKS 上にデプロイされ、AWS EBS ボリュームを使用している場合、TiDB クラスター データのバックアップ時に以下の要件を満たす必要がある場合は、 TiDB Operatorを使用してボリューム スナップショットとメタデータによるデータを AWS S3 にバックアップできます。

    • バックアップの影響を最小限に抑える。例えば、QPSとトランザクションレイテンシーへの影響を5%未満に抑え、クラスタのCPUとメモリを消費しないようにする。
    • 短時間でデータのバックアップと復元が可能です。例えば、1時間以内にバックアップを完了し、2時間以内にデータを復元できます。

    詳細については、 ユーザー向けドキュメントを参照してください。

データ移行

  • DMは、下流のマージ済みテーブルの拡張列に上流のデータソース情報を書き込むことをサポートしています #37797 @lichunzhu

    上流から TiDB へシャーディングされたスキーマとテーブルをマージする際、ターゲット テーブルに複数のフィールド (拡張列) を手動で追加し、DM タスクの設定時にその値を指定できます。たとえば、拡張列に上流のシャーディングされたスキーマとテーブルの名前を指定すると、DM によって下流に書き込まれるデータにはスキーマ名とテーブル名が含まれます。下流のデータが通常と異なる場合、この機能を使用して、スキーマ名やテーブル名など、ターゲット テーブル内のデータ ソース情報をすばやく特定できます。

    詳細については、 テーブル、スキーマ、ソース情報を抽出し、マージされたテーブルに書き込みます。

  • DMは、必須チェック項目の一部をオプションに変更することで、事前チェックメカニズムを最適化します #7333 @lichunzhu

    データ移行タスクをスムーズに実行するために、DMはタスク開始時に自動的に事前チェックトリガーし、チェック結果を返します。DMは事前チェックに合格した後にのみ移行を開始します。

    バージョン6.4.0では、DMは以下の3つのチェック項目を必須から任意に変更し、事前チェックの合格率を向上させました。

    • 上流のテーブルがTiDBと互換性のない文字セットを使用していないか確認してください。
    • 上流テーブルに主キー制約または一意キー制約があるかどうかを確認してください。
    • プライマリ/セカンダリ構成で、アップストリームデータベースのデータベースID server_idが指定されているかどうかを確認してください。
  • DMは、増分移行タスクのオプションパラメータとしてbinlogの位置とGTIDを設定することをサポートします #7393 @GMHDBJD

    バージョン6.4.0以降では、binlogの位置やGTIDを指定せずに、増分移行を直接実行できます。DMは、タスク開始後にアップストリームから生成されたbinlogファイルを自動的に取得し、これらの増分データをダウンストリームに移行します。これにより、ユーザーは面倒な理解や複雑な設定から解放されます。

    詳細については、 DM 高度タスクコンフィグレーションファイルを参照してください。

  • DMが移行タスクのステータスインジケーターを追加 #7343 okJiang

    バージョン6.4.0では、DMに移行タスクのパフォーマンスと進捗状況を示す指標がさらに追加され、移行のパフォーマンスと進捗状況をより直感的に把握できるようになり、トラブルシューティングの際の参考情報としても役立ちます。

    • データインポートおよびエクスポートのパフォーマンスを示すステータスインジケーター(バイト/秒)を追加します。
    • 下流データベースへのデータ書き込みに関するパフォーマンス指標の名前を、TPSからRPS(行/秒)に変更します。
    • DMの完全移行タスクにおけるデータエクスポートの進捗状況を示す進捗インジケーターを追加します。

    これらの指標の詳細については、 TiDBデータ移行におけるクエリタスクステータス参照してください。

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

  • TiCDC は3.2.0バージョン #7191 @3AceShowHandの Kafka へのデータのレプリケーションをサポートします。

    v6.4.0 以降、TiCDC は3.2.0バージョン以前のデータをデータをKafkaに複製するをサポートします。

互換性の変更

システム変数

変数名種類を変更する説明
max_execution_time修正済みバージョン6.4.0より前は、この変数はすべての種類のステートメントに適用されていました。バージョン6.4.0以降は、この変数は読み取り専用ステートメントの最大実行時間のみを制御します。
tidb_constraint_check_in_place_pessimistic修正済みグローバルスコープを削除し、 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修正済みグローバルスコープを追加します。この変数は、オプティマイザが集計関数を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 Tuner を有効にするかどうかを制御します。デフォルト値はONです。
tidb_enable_reuse_chunk新しく追加されたTiDB がチャンク オブジェクトのキャッシュを有効にするかどうかを制御します。デフォルト値はONで、これは TiDB がキャッシュされたチャンク オブジェクトの使用を優先し、要求されたオブジェクトがキャッシュにない場合にのみシステムに要求することを意味します。値がOFFの場合、TiDB はシステムから直接チャンク オブジェクトを要求します。
tidb_enable_prepared_plan_cache_memory_monitor新しく追加されたプリペアドプランキャッシュにキャッシュされた実行プランによって消費されたメモリをカウントするかどうかを制御します。デフォルト値はONです。
tidb_external_ts新しく追加されたデフォルト値は0です。tidb_enable_external_ts_read tidb_enable_external_ts_read ONに設定されている場合、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 (64 MiB) です。
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 (128 MiB) です。

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

コンフィグレーションファイルコンフィグレーションパラメータ種類を変更する説明
TiDBtidb_memory_usage_alarm_ratio削除済みこの設定項目は無効になりました。
TiDBmemory-usage-alarm-ratio削除済みシステム変数tidb_memory_usage_alarm_ratioに置き換えられました。この設定項目が TiDB バージョン v6.4.0 より前のバージョンで設定されていた場合、アップグレード後には有効になりません。
TiDBpessimistic-txn.constraint-check-in-place-pessimistic新しく追加されたシステム変数tidb_constraint_check_in_place_pessimisticのデフォルト値を制御します。デフォルト値はtrueです。
TiDBtidb-max-reuse-chunk新しく追加されたチャンク割り当てのキャッシュされたチャンクオブジェクトの最大数を制御します。デフォルト値は64です。
TiDBtidb-max-reuse-column新しく追加されたチャンク割り当てのキャッシュされた列オブジェクトの最大数を制御します。デフォルト値は256です。
ティクヴcdc.raw-min-ts-outlier-threshold非推奨この設定項目は無効になりました。
ティクヴcausal-ts.alloc-ahead-buffer新しく追加された事前割り当て済みのTSOキャッシュサイズ(期間)。デフォルト値は3sです。
ティクヴcausal-ts.renew-batch-max-size新しく追加されたタイムスタンプ要求におけるTSOの最大数を制御します。デフォルト値は8192です。
ティクヴraftstore.apply-yield-write-size新しく追加されたApplyスレッドが1回のポーリングで1つのFSM(有限状態機械)に対して書き込める最大バイト数を制御します。デフォルト値は32KiBです。これはソフトリミットです。
PDtso-update-physical-interval新しく追加されたバージョン6.4.0以降で有効になり、PDがTSOの物理時刻を更新する間隔を制御します。デフォルト値は50msです。
TiFlashdata-encryption-method修正済み新しい値オプションsm4-ctrが導入されました。この設定項目がsm4-ctrに設定されている場合、データは保存される前に SM4 を使用して暗号化されます。
DMroutes.route-rule-1.extract-table新しく追加されたオプション。シャーディングシナリオにおいて、シャーディングされたテーブルのソース情報を抽出するために使用します。抽出された情報は、ダウンストリームのマージ済みテーブルに書き込まれ、データソースを識別するために使用されます。このパラメータを設定する場合は、事前にダウンストリームにマージ済みテーブルを手動で作成する必要があります。
DMroutes.route-rule-1.extract-schema新しく追加されたオプション。シャーディングシナリオにおいて、シャーディングされたスキーマのソース情報を抽出するために使用します。抽出された情報は、ダウンストリームのマージ済みテーブルに書き込まれ、データソースを識別するために使用されます。このパラメータを設定する場合は、事前にダウンストリームにマージ済みテーブルを手動で作成する必要があります。
DMroutes.route-rule-1.extract-source新しく追加されたオプション。シャーディングシナリオにおいて、ソースインスタンス情報を抽出するために使用します。抽出された情報は、ダウンストリームのマージ済みテーブルに書き込まれ、データソースを識別するために使用されます。このパラメータを設定する場合は、事前にダウンストリームにマージ済みテーブルを手動で作成する必要があります。
TiCDCtransaction-atomicity修正済みデフォルト値をtableからnoneに変更します。この変更により、レプリケーションのレイテンシーとメモリ不足(OOM)のリスクが軽減されます。さらに、TiCDC はすべてのトランザクションを分割するのではなく、一部のトランザクション(単一のトランザクションのサイズが 1024 行を超える場合)のみを分割するようになります。

その他

  • v6.4.0 以降、 mysql.userテーブルには、 User_attributesToken_issuerという 2 つの新しい列が追加されています。以前の TiDB バージョンのバックアップ データから TiDB v6.4.0 にmysqlスキーマ内のシステムテーブルを復元します。と、 BR はcolumn count mismatchテーブルのmysql.userエラーを報告します。 mysqlスキーマ内のシステム テーブルを復元しない場合、このエラーは報告されません。
  • 名前が「 Dumplingのエクスポートファイルの形式一致するものの、末尾が非圧縮形式(例test-schema-create.sql.originおよびtest.table-schema.sql.origin )で終わるファイルについては、 TiDB Lightning の処理方法が変更されました。v6.4.0 より前は、インポート対象ファイルにこのようなファイルが含まれている場合、TiDB Lightning はこれらのファイルのインポートをスキップしていました。v6.4.0 以降では、 TiDB Lightning TiDB Lightning はこれらのファイルがサポートされていない圧縮形式を使用しているとみなすため、インポート処理は失敗します。
  • バージョン6.4.0以降、 SYSTEM_VARIABLES_ADMINまたはSUPERの権限を持つチェンジフィードのみがTiCDC Syncpoint機能を使用できます。

改善点

  • TiDB

    • 何もしない変数lc_messagesの変更を許可する #38231 @djshow832
    • AUTO_RANDOM列をクラスタ化複合インデックスの最初の列としてサポートする #38572 @tangenta
    • 内部トランザクションの再試行では悲観的トランザクションを使用して、再試行の失敗を回避し、時間の消費を削減します #38136 @jackysp
  • ティクヴ

    • Applyスレッドが1回のポーリングで1つの有限状態マシンに対して書き込める最大バイト数を制御し、Applyスレッドが大量のデータを書き込む際のRaftstoreの混雑を緩和するために、新しい設定項目apply-yield-write-size -0-PLACEHOLDER-E}}を追加します。 #13313 @glorv
    • リージョンのリーダーを移行する前にエントリキャッシュをウォームアップして、リーダー転送プロセス中のQPSジッターを回避する #13060 @cosven
    • json_constrains演算子をコプロセッサー #13592にプッシュダウンするサポート @lizhenhuan
    • CausalTsProviderに非同期関数を追加して、一部のシナリオでのフラッシュパフォーマンスを改善します #13428 @zeminzhou
  • PD

    • ホットリージョンスケジューラのv2アルゴリズムがGAになります。一部のシナリオでは、v2アルゴリズムは、設定された両方の次元でより良いバランスを実現し、無効なスケジューリングを減らすことができます。 #5021 @hundundm
    • 早期のタイムアウトを回避するためにオペレーター ステップのタイムアウト メカニズムを最適化します #5596 @bufferflies
    • 大規模クラスターでのスケジューラーのパフォーマンスを向上 #5473 @bufferflies
    • PD #5637で提供されていない外部タイムスタンプの使用をサポートする @lhy1024
  • TiFlash

    • MPP #5095 @windtalkerの安定性をさらに向上させるために、 TiFlash MPP エラー処理ロジックをリファクタリングします。
    • TiFlash計算プロセスのソートを最適化し、Joinと集計のキー処理を最適化します #5294 @solotzg
    • デコード時のメモリ使用量を最適化し、冗長な転送列を削除して結合パフォーマンスを向上させる #6157 @yibin87
  • ツール

    • TiDBダッシュボード

      • TiFlashのメトリクスをモニタリングページに表示できるようにし、そのページでのメトリクスの表示を最適化する #1440 @YiniXu9506
      • スロークエリリストとSQLステートメントリストの結果の行数を表示する #1443 @baurine
      • Alertmanagerが存在しない場合にAlertmanagerエラーを報告しないようにダッシュボードを最適化する #1444 @baurine
    • バックアップと復元 (BR)

      • メタデータの読み込みメカニズムを改善します。メタデータは必要な場合にのみメモリに読み込まれるため、PITR中のメモリ使用量が大幅に削減されます。 #38404 @YuJuncen
    • TiCDC

      • ExchangeパーティションDDLステートメントの複製をサポートする #639 @asddongmen
      • MQ シンク モジュールの非バッチ送信パフォーマンスを向上 #7353 @Rustin170506
      • テーブルに多数のリージョンがある場合の TiCDC プーラーのパフォーマンスを改善#7078 #7281 @sdojjy
      • Syncpointが有効になっている場合にtidb_enable_external_ts_read変数を使用して下流のTiDBの履歴データを読み取ることをサポートする #7419 @asddongmen
      • トランザクション分割を有効にし、デフォルトでセーフモードを無効にすることで、レプリケーションの安定性を向上させます #7505 @asddongmen
    • TiDBデータ移行(DM)

      • 役に立たないoperate-source updateコマンドを dmctl から削除します #7246 @buchuitoudegou
      • 上流データベースが TiDB と互換性のない DDL ステートメントを使用している場合に DM の完全インポートが失敗する問題を修正しました。TiDB でサポートされている DDL ステートメントを使用して、事前に TiDB でターゲット テーブルのスキーマを手動で作成することで、インポートの成功を確実にすることができます #37984 @lance6716
    • TiDB Lightning

      • スキーマファイルのスキャンを高速化するためにファイルスキャンロジックを最適化 #38598 @dsdashun

バグ修正

  • TiDB

    • 新しいインデックスを作成した後に発生する可能性のあるインデックスの不整合の問題を修正します #38165 @tangenta
    • INFORMATION_SCHEMA.TIKV_REGION_STATUSテーブル #38407の権限の問題を修正しました @CbcWestwolf
    • grantorテーブルにmysql.tables_privフィールドが欠落している問題を修正します #38293 @CbcWestwolf
    • 共通テーブル式の結合結果が間違っている可能性がある問題を修正 #38170 @wjhuang2016
    • 共通テーブル式の和集合の結果が間違っている可能性がある問題を修正 #37928 @YangKeao
    • トランザクション領域番号監視パネルの情報が正しくない問題を修正 #38139 @jackysp
    • システム変数tidb_constraint_check_in_place_pessimistic内部トランザクションに影響を与える可能性がある問題を修正しました。変数のスコープを SESSION に変更しました。 #38766 @ekexium
    • クエリ内の条件が誤ってプロジェクションにプッシュダウンされる問題を修正 #35623 @Reminiscent
    • isNullRejectedおよびOR ANDのチェック結果が間違っていたためにクエリ結果が間違っていた問題を修正しました #38304 @Yisaer
    • 外部結合が削除された際にORDER BY内のGROUP_CONCATが考慮されず、クエリ結果が誤る問題を修正しました #18216 @winoros
    • 結合したテーブルの再配置 #38736により誤ってプッシュダウンされた条件が破棄された際に発生する、誤ったクエリ結果の問題を修正しました。@winoros
  • ティクヴ

    • 複数のcgroupおよびmountinfoが存在する場合に Gitpod で TiDB が起動に失敗する問題を修正 #13660 @tabokie
    • TiKV メトリクスの間違った式を修正tikv_gc_compaction_filtered #13537 @Defined2014
    • 異常なdelete_files_in_range #13534によって引き起こされたパフォーマンスの問題を修正します @tabokie
    • スナップショット取得中のリース期限切れによって引き起こされる異常なリージョン競合を修正 #13553 @SpadeA-Tang
    • FLASHBACK最初のバッチで失敗したときに発生したエラーを修正します#13672 #13704 #13723 @HuSharp
  • PD

    • 不正確なストリーム タイムアウトを修正し、リーダーの切り替えを加速します #5207 @CabinfeverB
  • TiFlash

    • PageStorage GC がページ削除マーカーを適切にクリアしない場合に発生する、WAL ファイルのサイズ超過による OOM の問題を修正 #6163 @JaySon-Huang
  • ツール

    • TiDBダッシュボード

      • 特定の複雑なSQL文の実行プランを照会する際のTiDBのOOM問題を修正 #1386 @baurine
      • NgMonitoringがPDノードへの接続を失った場合にTop SQLスイッチが有効にならない可能性がある問題を修正しました #164 @zhongzc
    • バックアップと復元 (BR)

      • 復元プロセス中にPDリーダーが切り替わったことが原因で発生する復元失敗の問題を修正しました #36910 @MoCuishle28
      • ログバックアップタスクを一時停止できない問題を修正 #38250 @joccau
      • BRがログバックアップデータを削除する際に、削除すべきでないデータを誤って削除してしまう問題を修正しました #38939 @leavrth
      • Azure Blob Storage または Google Cloud Storage に保存されているログバックアップデータを初めて削除する際にBR がデータ削除に失敗する問題を修正 #38229 @leavrth
    • TiCDC

      • sasl-passwordの結果でchangefeed queryがマスクされない問題を修正 #7182 @dveeden
      • etcdトランザクションで操作が多すぎるとTiCDCが利用できなくなる可能性がある問題を修正 #7131 @asddongmen
      • リドゥログが正しく削除されない可能性がある問題を修正 #6413 @asddongmen
      • Kafka Sink V2 でワイドテーブルを複製するときのパフォーマンスの低下を修正 #7344 @Rustin170506
      • チェックポイントtsが正しく進まない可能性がある問題を修正 #7274 @Rustin170506
      • マウンターモジュールのログレベルが不適切なため、大量のログが出力される問題を修正 #7235 @Rustin170506
      • TiCDCクラスターに2人のオーナーが存在する可能性がある問題を修正 #4051 @asddongmen
    • TiDBデータ移行(DM)

      • DM WebUI が間違ったallow-listパラメータを生成する問題を修正 #7096 @zoubingwu
      • DMワーカーが起動または停止時にデータ競合を引き起こす確率がある問題を修正します #6401 @liumengya94
      • DM がUPDATEまたはDELETEステートメントを複製する際に、対応する行データが存在しない場合、DM がイベントをサイレントに無視する問題を修正します。 #6383 @GMHDBJD
      • secondsBehindMasterコマンドを実行した後、 query-statusフィールドが表示されない問題を修正しました #7189 @GMHDBJD
      • チェックポイントの更新時に大きなトランザクションが発生する可能性がある問題を修正しました #5010 @lance6716
      • フルタスクモードで、タスクが同期段階に入ってすぐに失敗した場合、DMがアップストリームのテーブルスキーマ情報を失う可能性がある問題を修正します #7159 @lance6716
      • 整合性チェックが有効になっている場合にデッドロックが発生する可能性がある問題を修正 #7241 @buchuitoudegou
      • タスクの事前チェックでSELECTテーブルに対するINFORMATION_SCHEMA権限が必要になる問題を修正します。 #7317 @lance6716
      • TLS設定が空の場合にエラーが発生する問題を修正しました #7384 @liumengya94
    • TiDB Lightning

      • binaryエンコード形式の文字列型列を含むターゲットテーブルに Apache Parquet ファイルをインポートする際のインポートパフォーマンスの低下を修正 #38351 @dsdashun
    • TiDBDumpling

      • 多数のテーブルをエクスポートする際にDumpling がタイムアウトする可能性がある問題を修正しました #36549 @lance6716
      • 整合性ロックが有効になっているが、アップストリームにターゲットテーブルがない場合に報告されるロックエラーを修正 #38683 @lance6716

寄稿者

TiDBコミュニティの以下の貢献者の皆様に感謝申し上げます。

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