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

TiDB 8.0.0 リリースノート

発売日:2024年3月29日

TiDB バージョン: 8.0.0

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

8.0.0 では、次の主な機能と改善が導入されています。

カテゴリ機能/拡張機能説明
スケーラビリティとパフォーマンススケーラビリティ向上のためのPDの分解(実験的)配置Driver(PD)には、TiDBクラスタの正常な動作を確保するために、複数の重要なモジュールが含まれています。クラスタのワークロードが増加すると、PD内の各モジュールのリソース消費量も増加し、これらのモジュール間の相互干渉を引き起こし、最終的にはクラスタ全体のサービス品質に影響を与えます。v8.0.0以降、TiDBはPD内のTSOモジュールとスケジューリングモジュールを独立してデプロイ可能なマイクロサービスに分割することで、この問題に対処しています。これにより、クラスタのスケールアップに伴うモジュール間の相互干渉を大幅に軽減できます。このアーキテクチャにより、はるかに大規模なクラスタと、はるかに大規模なワークロードを実現できるようになりました。
大規模なトランザクションのためのバルク DML (実験的)大規模なクリーンアップジョブ、結合、集計といった大規模なバッチDMLジョブは、大量のメモリを消費する可能性があり、これまでは非常に大規模なスケールでは制限されていました。バルクDML( tidb_dml_type = "bulk" )は、トランザクション保証を提供し、OOM(メモリ不足)の問題を軽減しながら、大規模なバッチDMLタスクをより効率的に処理するための新しいDMLタイプです。この機能は、データのロードに使用する場合、インポート、ロード、リストアの各操作とは異なります。
クラスター スナップショットの復元速度の高速化 (GA)この機能により、 BRはクラスタのスケールメリットを最大限に活用し、クラスタ内のすべてのTiKVノードがデータ復元の準備ステップに参加できるようになります。この機能により、大規模クラスタにおける大規模データセットの復元速度が大幅に向上します。実環境テストでは、この機能によりダウンロード帯域幅が飽和状態になり、ダウンロード速度が8~10倍、エンドツーエンドの復元速度が約1.5~3倍向上することが示されています。
テーブル数が膨大である場合のスキーマ情報のキャッシュの安定性を向上(実験的)マルチテナントアプリケーションの記録システムとしてTiDBを使用しているSaaS企業は、多くの場合、膨大な数のテーブルを保存する必要があります。以前のバージョンでは、100万個以上のテーブル数を処理することは可能でしたが、全体的なユーザーエクスペリエンスが低下する可能性がありました。TiDB v8.0.0では、 auto analyze優先キューを実装することで状況が改善され、プロセスの柔軟性が向上し、より広範なテーブルにわたる安定性が向上しました。
DB操作と可観測性インデックスの使用統計の監視をサポート適切なインデックス設計は、データベースのパフォーマンス維持に不可欠な前提条件です。TiDB v8.0.0では、インデックスの使用状況統計を提供するINFORMATION_SCHEMA.TIDB_INDEX_USAGEテーブルとsys.schema_unused_indexesビューが導入されました。この機能は、データベース内のインデックスの効率性を評価し、インデックス設計を最適化するのに役立ちます。
データ移行TiCDCがシンプルプロトコルのサポートを追加TiCDCは、新しいプロトコル「Simpleプロトコル」を導入しました。このプロトコルは、DDLおよびBOOTSTRAPイベントにテーブルスキーマ情報を埋め込むことで、インバンドスキーマ追跡機能を提供します。
TiCDC がDebezium 形式プロトコルのサポートを追加TiCDC は新しいプロトコル、Debezium プロトコルを導入しました。TiCDC は、Debezium スタイルのメッセージを生成するプロトコルを使用して、データ変更イベントを Kafka シンクにパブリッシュできるようになりました。

機能の詳細

スケーラビリティ

  • PDはマイクロサービスモード(実験的) #5766 @ ビンシビンをサポートします

    バージョン8.0.0以降、PDはマイクロサービスモードをサポートします。このモードでは、PDのタイムスタンプ割り当て機能とクラスタスケジューリング関数が、独立してデプロイ可能な個別のマイクロサービスに分割されます。これにより、PDのパフォーマンススケーラビリティが向上し、大規模クラスタにおけるPDのパフォーマンスボトルネックが解消されます。

    • tsoマイクロサービス: クラスター全体に対して単調に増加するタイムスタンプ割り当てを提供します。
    • schedulingマイクロサービス: 負荷分散、ホットスポット処理、レプリカ修復、レプリカ配置など、クラスター全体のスケジュール関数を提供します。

    各マイクロサービスは独立したプロセスとしてデプロイされます。マイクロサービスに複数のレプリカを設定すると、マイクロサービスはプライマリ/セカンダリフォールトトレラントモードを自動的に実装し、サービスの高可用性と信頼性を確保します。

    現在、PDマイクロサービスはTiDB Operatorを使用してのみデプロイできます。PDがスケールアップでは解決できない重大なパフォーマンスボトルネックになった場合は、このモードを検討することをお勧めします。

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

パフォーマンス

  • BR はスナップショットの復元速度を向上します (GA) #50701 @ 3ポイントシュート @ リーヴルス

    TiDB v8.0.0以降、スナップショット復元速度の高速化が一般提供(GA)され、デフォルトで有効化されました。BRは、粗粒度のリージョン分散アルゴリズムの採用、データベースとテーブルのバッチ作成、SSTファイルのダウンロードと取り込み操作の相互影響の低減、テーブル統計の復元高速化など、様々な最適化を実装することで、スナップショット復元速度を大幅に向上させます。実環境におけるテスト結果によると、単一のTiKVノードのデータ復元速度は1.2 GiB/sで安定し、100 TiBのデータを1時間以内に復元できます。

    これは、高負荷環境でもBR が各 TiKV ノードのリソースを最大限に活用できることを意味します。これにより、データベースのリストア時間が大幅に短縮され、データベースの可用性と信頼性が向上し、データ損失やシステム障害によるダウンタイムとビジネス損失が削減されます。リストア速度の向上は、多数の goroutine の並列実行に起因しており、特にテーブルやリージョンが多い場合は、メモリ消費量が大幅に増加する可能性があることに注意してください。BRBRを実行するには、メモリ容量の高いマシンを使用することをお勧めします。マシンのメモリ容量が限られている場合は、より細粒度のリージョン分散アルゴリズムを使用することをお勧めします。また、粗粒度のリージョン分散アルゴリズムは外部storage帯域幅を大量に消費する可能性があるため、外部帯域幅の不足による他のアプリケーションへの影響を回避する必要があります。

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

  • 以下の関数をTiFlash #50975 #50485 @ イービン87 @ ウィンドトーカーにプッシュダウンすることをサポートします

    • CAST(DECIMAL AS DOUBLE)
    • POWER()

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

  • TiDBの並列HashAggアルゴリズムはディスクスピル(実験的) #35637 @ xzhangxian1008をサポートします。

    TiDBの以前のバージョンでは、HashAgg演算子の同時実行アルゴリズムはディスクへの書き込みをサポートしていませんでした。SQL文の実行プランに並列HashAgg演算子が含まれている場合、そのSQL文のすべてのデータはメモリ内でのみ処理できます。その結果、TiDBは大量のデータをメモリ内で処理する必要がありました。データサイズがメモリ制限を超えると、TiDBは非並列アルゴリズムしか選択できず、同時実行によるパフォーマンス向上は期待できません。

    v8.0.0では、TiDBの並列HashAggアルゴリズムがディスクスピルをサポートします。並列処理の条件を問わず、HashAgg演算子はメモリ使用量に基づいてデータスピルを自動的にトリガーできるため、パフォーマンスとデータスループットのバランスを取ることができます。現在、TiDBは実験的機能として、ディスクスピルをサポートする並列HashAggアルゴリズムを有効にするかどうかを制御する変数tidb_enable_parallel_hashagg_spill導入しています。この変数がON場合、有効です。この機能が将来のリリースで一般提供された後、この変数は非推奨となります。

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

  • 自動統計収集のための優先キューを導入する#50132 @ ハイラスティン

    オプティマイザ統計を最新の状態に保つことは、データベースのパフォーマンスを安定させる鍵です。ほとんどのユーザーは、最新の統計を収集するためにTiDBが提供する自動統計収集に依存しています。自動統計収集機能は、すべてのオブジェクトの統計状態を確認し、問題のあるオブジェクトをキューに追加して順次収集します。以前のバージョンでは、順序はランダムであったため、より適切な候補の更新を待つ時間が長くなり、パフォーマンスの低下を引き起こす可能性がありました。

    バージョン8.0.0以降、自動統計収集機能は、様々な条件と組み合わせてオブジェクトの優先順位を動的に設定し、より適切な候補(新規作成されたインデックスや定義変更されたパーティションテーブルなど)が優先的に処理されるようにします。さらに、TiDBはヘルススコアが低いテーブルを優先し、キューの先頭に配置します。この機能強化により、収集順序がより合理的になり、古い統計情報に起因するパフォーマンスの問題が軽減され、データベースの安定性が向上します。

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

  • 実行プランキャッシュ#49161 @ ミョンス @ qw4990の制限の一部を削除

    TiDBはプランキャッシュサポートしています。これはOLTPシステムのレイテンシーを効果的に削減でき、パフォーマンスにとって重要です。v8.0.0では、TiDBはプランキャッシュに関するいくつかの制限を解除しました。以下の項目を含む実行プランをキャッシュできるようになりました。

    この機能強化により、プラン キャッシュの使用ケースが拡張され、複雑なシナリオにおけるデータベース全体のパフォーマンスが向上します。

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

  • オプティマイザは、複数値インデックスのサポートを強化します#47759 #46539 @ アリーナルクス @ 時間と運命

    TiDB v6.6.0では、JSONデータ型のクエリパフォーマンスを向上させる複数値インデックス導入されました。v8.0.0では、オプティマイザーによる多値インデックスのサポートが強化され、複雑なシナリオでもクエリを最適化するために多値インデックスを正しく識別・活用できるようになりました。

    • オプティマイザは多値インデックスの統計情報を収集し、それに基づいて実行計画を決定します。SQL文で複数の多値インデックスが選択可能な場合、オプティマイザはコストが低いインデックスを特定できます。
    • OR用いて複数のmember of条件を接続する場合、オプティマイザーは各 DNF 項目( member of条件)に対して有効なインデックス部分パスを一致させ、これらのパスを Union を用いて結合してIndex Merge形成します。これにより、より効率的な条件フィルタリングとデータフェッチが実現されます。

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

  • 低精度TSO #51081 @ テーマの更新間隔の設定をサポート

    TiDBの低精度TSO機能 、定期的に更新されるTSOをトランザクションのタイムスタンプとして使用します。古いデータの読み取りが許容されるシナリオでは、この機能により、リアルタイム性は犠牲になりますが、小規模な読み取り専用トランザクションでTSOを取得する際のオーバーヘッドが削減され、高同時実行読み取りの能力が向上します。

    v8.0.0より前のバージョンでは、低精度TSO機能のTSO更新間隔は固定されており、実際のアプリケーション要件に合わせて調整することはできませんでした。v8.0.0では、TiDBにTSO更新間隔を制御するためのシステム変数tidb_low_resolution_tso_update_interval導入されました。この機能は、低精度TSO機能が有効な場合にのみ有効になります。

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

可用性

  • プロキシコンポーネントTiProxyが一般提供(GA)される#413 @ djshow832 @ xhebox

    TiDB v7.6.0 では、プロキシコンポーネントTiProxy が実験的機能として導入されました。TiProxy は TiDB の公式プロキシコンポーネントであり、クライアントと TiDBサーバーの間に配置されます。TiProxy は TiDB の負荷分散機能と接続の永続化関数を提供し、TiDB クラスタのワークロードのバランスを向上させ、メンテナンス作業中のデータベースへのユーザーアクセスに影響を与えません。

    v8.0.0 では、TiProxy が一般提供され、署名証明書の自動生成と監視関数が強化されています。

    TiProxy の使用シナリオは次のとおりです。

    • TiDBクラスタのローリング再起動、ローリングアップグレード、スケールインなどのメンテナンス作業中は、TiDBサーバに変更が発生し、クライアントとTiDBサーバ間の接続が中断される可能性があります。TiProxyを使用することで、これらのメンテナンス作業中にクライアントへの影響を最小限に抑え、接続を他のTiDBサーバにスムーズに移行できます。
    • TiDBサーバーへのクライアント接続は、他のTiDBサーバに動的に移行できません。複数のTiDBサーバのワークロードが不均衡な場合、クラスタ全体のリソースは十分であるにもかかわらず、特定のTiDBサーバでリソース枯渇が発生し、レイテンシーが大幅に増加するという状況が発生する可能性があります。この問題に対処するため、TiProxyは接続の動的移行機能を提供します。これにより、クライアントに影響を与えることなく、接続をあるTiDBサーバーから別のTiDBサーバに移行できるため、TiDBクラスタの負荷分散が実現します。

    TiProxy はTiUP、 TiDB Operator、および TiDB Dashboard に統合されており、構成、展開、保守が容易になります。

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

SQL

  • 大量データ処理用の新しいDMLタイプをサポート(実験的) #50215 @ エキシウム

    v8.0.0より前のTiDBでは、コミット前にすべてのトランザクションデータをメモリに保存していました。大量のデータを処理する場合、トランザクションに必要なメモリがボトルネックとなり、TiDBが処理できるトランザクションサイズが制限されます。TiDBは非トランザクションDMLを導入し、SQL文を分割することでトランザクションサイズの制限を解決しようと試みていますが、この機能には様々な制限があり、実際のシナリオでは理想的なエクスペリエンスを提供できません。

    TiDBはv8.0.0以降、大量データ処理用のDMLタイプをサポートしています。このDMLタイプは、実行中にデータをTiKVにタイムリーに書き込むため、すべてのトランザクションデータがメモリに継続的にstorageことを回避し、メモリ制限を超える大量データの処理をサポートします。このDMLタイプはトランザクションDELETE REPLACE INSERT UPDATEこの新しいDMLタイプを使用して大規模なDML操作を実行できます。

    このDMLタイプはパイプラインDML機能によって実装されており、自動コミットが有効になっているステートメントでのみ有効になります。このDMLタイプを有効にするかどうかは、システム変数tidb_dml_type設定することで制御できます。

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

  • テーブル作成時にデフォルトの列値を設定するための式の使用をサポート (実験的) #50936 @ ジムララ

    バージョン8.0.0より前のバージョンでは、テーブルを作成する際に、列のデフォルト値は文字列、数値、日付に制限されていました。バージョン8.0.0以降では、列のデフォルト値としていくつかの式を使用できるようになりました。例えば、列のデフォルト値をUUID()に設定できます。この機能により、より多様な要件に対応できるようになります。

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

  • div_precision_incrementシステム変数#51501 @ イービン87をサポート

    MySQL 8.0では、 /演算子を用いた除算の結果のスケールを何桁増やすかを指定する変数div_precision_incrementがサポートされています。v8.0.0より前のTiDBではこの変数はサポートされておらず、除算は小数点以下4桁まで実行されます。v8.0.0以降では、TiDBはこの変数をサポートしています。除算の結果のスケールを何桁増やすかを、必要に応じて指定できます。

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

DB操作

  • PITRはAmazon S3オブジェクトロック#51184 @ リドリスRをサポートします

    Amazon S3 オブジェクトロックは、指定された保持期間中のバックアップデータの偶発的または意図的な削除を防ぎ、データのセキュリティと整合性を強化します。バージョン6.3.0以降、 BRはスナップショットバックアップでAmazon S3 オブジェクトロックをサポートし、フルバックアップのレイヤーをさらに強化します。バージョン8.0.0以降、PITRもAmazon S3 オブジェクトロックをサポートします。フルバックアップでもログデータバックアップでも、オブジェクトロック機能はより信頼性の高いデータ保護を実現し、データのバックアップとリカバリのセキュリティをさらに強化し、規制要件を満たします。

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

  • セッションレベル#50653 @ ホーキングレイで非表示のインデックスを可視化する機能をサポート

    デフォルトでは、オプティマイザは目に見えないインデックス選択しません。このメカニズムは通常、インデックスを削除するかどうかを判断するために使用されます。インデックスの削除によるパフォーマンスへの影響が不明な場合は、インデックスを一時的に非表示に設定し、必要に応じてすぐに表示に戻すという選択肢があります。

    バージョン8.0.0以降では、セッションレベルのシステム変数tidb_opt_use_invisible_indexesONを設定することで、現在のセッションで非表示のインデックスを認識できるようになりました。この機能を使用すると、新しいインデックスを作成してパフォーマンスをテストする際に、まずインデックスを可視化し、その後、現在のセッションでシステム変数を変更することで、他のセッションに影響を与えることなくテストを行うことができます。この改善により、SQLチューニングの安全性が向上し、本番データベースの安定性が向上します。

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

  • 一般的なログを別のファイルに書き込むことをサポート#51248 @ 定義2014

    一般ログは、実行されたすべてのSQL文をログに記録し、問題の診断に役立てるMySQL互換機能です。TiDBもこの機能をサポートしています。変数tidb_general_log設定することで有効にできます。ただし、以前のバージョンでは、一般ログの内容は他の情報と共にTiDBインスタンスログにのみ書き込まれるため、長期間にわたってログを保持する必要があるユーザーにとっては不便でした。

    バージョン8.0.0以降では、設定項目log.general-log-fileに有効なファイル名を設定することで、一般ログを指定のファイルに書き込むことができます。一般ログは、インスタンスログと同じローテーションおよび保持ポリシーに従います。

    さらに、履歴ログファイルが占有するディスク容量を削減するため、TiDB v8.0.0ではネイティブログ圧縮オプションが導入されました。設定項目log.file.compressiongzipを設定すると、ローテーションされたログをgzip形式で自動的に圧縮できます。

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

可観測性

  • インデックス使用統計の監視をサポート#49830 @ ヤンケオ

    適切なインデックス設計は、データベースのパフォーマンスを維持するための重要な前提条件です。TiDB v8.0.0では、現在のTiDBノード上のすべてのインデックスの統計情報を記録するテーブルINFORMATION_SCHEMA.TIDB_INDEX_USAGE導入されました。これには以下の情報が含まれます。

    • インデックスをスキャンするステートメントの累積実行回数
    • インデックスにアクセスする際にスキャンされる行の総数
    • インデックスをスキャンする際の選択分布
    • インデックスへの最終アクセス時刻

    この情報を使用すると、オプティマイザーによって使用されていないインデックスや選択性が低いインデックスを識別し、インデックス設計を最適化してデータベースのパフォーマンスを向上させることができます。

    さらに、TiDB v8.0.0 では、MySQL と互換性のあるビューsys.schema_unused_indexesが導入されました。このビューは、TiDB インスタンスの前回の起動以降に使用されていないインデックスを表示します。v8.0.0 より前のバージョンからアップグレードしたクラスターでは、 sysスキーマとビューは自動的に作成されません。 sys.schema_unused_indexesを参照して手動で作成できます。

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

Security

  • 保存時の TiKV 暗号化は Google 鍵管理サービス(クラウド KMS) (実験的) #8906 @ 栄光をサポートします

    TiKVは、保存データを保存時の暗号化技術を用いて暗号化することで、データセキュリティを確保します。セキュリティのための保存時の暗号化の中核は鍵管理です。バージョン8.0.0以降では、Google Cloud KMSを使用してTiKVのマスター鍵を管理し、Cloud KMSベースの保存時の暗号化機能を確立することで、ユーザーデータのセキュリティを強化できます。

    Google Cloud KMS に基づいて保存時の暗号化を有効にするには、Google Cloud でキーを作成し、TiKV 構成ファイルの[security.encryption.master-key]セクションを構成する必要があります。

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

  • TiDB ログ感度低下を#51306 @ xhebox強化

    TiDBログの感度低下機能の強化は、ログファイル内のSQLテキスト情報をマーキングすることで、ユーザーがログを表示する際に機密データを安全に表示されるようにします。ログ情報の感度低下を制御することで、様々なシナリオでTiDBログを安全に使用でき、ログ感度低下機能を使用する際のセキュリティと柔軟性が向上します。この機能を使用するには、システム変数tidb_redact_logMARKERに設定します。これにより、TiDBログ内のSQLテキストがマーキングされます。ログを表示すると、機密データはマーカーに基づいて安全に表示されるため、ログ情報が保護されます。

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

データ移行

  • TiCDC はシンプルプロトコル#9898 @ 3エースショーハンドのサポートを追加しました

    TiCDCは、新しいプロトコル「Simpleプロトコル」を導入しました。このプロトコルは、DDLおよびBOOTSTRAPイベントにテーブルスキーマ情報を埋め込むことで、インバンドスキーマ追跡機能を提供します。

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

  • TiCDC は Debezium フォーマットプロトコル#1799 @ そよ風のようなのサポートを追加しました

    TiCDCは、Debezium形式のイベントメッセージを生成するプロトコルを使用して、データ変更イベントをKafkaシンクにパブリッシュできるようになりました。これにより、現在Debeziumを使用してMySQLからデータをプルし、下流処理に利用しているユーザーにとって、MySQLからTiDBへの移行が簡素化されます。

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

  • DM は、ソース データベースとターゲット データベースのパスワードを暗号化および復号化するために、ユーザーが提供する秘密鍵の使用をサポートします#9492 @ D3ハンター

    以前のバージョンでは、DMは比較的セキュリティの低い組み込みの固定秘密鍵を使用していました。v8.0.0以降では、上流および下流データベースのパスワードの暗号化と復号化に使用する秘密鍵ファイルをアップロードして指定できるようになりました。また、必要に応じて秘密鍵ファイルを置き換えることで、データセキュリティを強化できます。

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

  • IMPORT INTO機能を強化するためにIMPORT INTO ... FROM SELECT構文をサポートします (実験的) #49883 @ D3ハンター

    以前のバージョンのTiDBでは、クエリ結果をターゲットテーブルにインポートするにはINSERT INTO ... SELECTステートメントしか使用できませんでした。これは、大規模なデータセットを扱うシナリオによっては、比較的効率が悪かったです。v8.0.0以降では、 IMPORT INTO ... FROM SELECTステートメントを使用してSELECTのクエリの結果を空のTiDBターゲットテーブルにインポートできるようになり、 INSERT INTO ... SELECTのステートメントと比較して最大8倍のパフォーマンスを実現し、インポート時間を大幅に短縮します。

    さらに、 IMPORT INTO ... FROM SELECTを使用してAS OF TIMESTAMPでクエリされた履歴データをインポートすることもできます。

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

  • TiDB Lightningは競合解決戦略を簡素化し、 replace戦略(実験的) #51036 @ lyzx2001を使用して競合するデータの処理をサポートします。

    以前のバージョンでは、 TiDB Lightningには論理インポート モードが1つのデータ競合解決戦略 、物理インポート モードが2つのデータ競合解決戦略あり、理解して構成するのは簡単ではありませんでした。

    TiDB Lightning v8.0.0以降、物理インポートモードにおける競合検出の古いバージョン戦略は廃止され、 conflict.strategyパラメータを使用して論理インポートモードと物理インポートモードの両方で競合検出戦略を制御できるようになり、このパラメータの設定が簡素化されました。さらに、物理インポートモードにおいて、 replace戦略では、インポート時に主キーまたは一意キーの競合が検出された場合に、最新のデータを保持し、古いデータを上書きする機能がサポートされるようになりました。

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

  • グローバルソートが一般提供(GA)され、 IMPORT INTOのパフォーマンスと安定性が大幅に向上しました#45719 @ ランス6716

    v7.4.0より前のバージョンでは、 分散実行フレームワーク (DXF)使用してIMPORT INTOタスクを実行する場合、ローカルstorage容量の制限により、TiDBはTiKVにインポートする前にデータの一部のみをローカルでソートしていました。その結果、TiKVにインポートされたデータに大きな重複が生じ、インポート時にTiKVで追加の圧縮操作を実行する必要があり、TiKVのパフォーマンスと安定性に影響を与えていました。

    バージョン7.4.0で導入された実験的機能であるグローバルソートにより、TiDBはインポートするデータをTiKVにインポートする前に、外部storage(Amazon S3など)に一時的に保存してグローバルソート処理を行うことができます。これにより、インポート時にTiKVの圧縮操作を行う必要がなくなります。バージョン8.0.0では、グローバルソートがGAになります。この機能により、TiKVのリソース消費が削減され、 IMPORT INTOのパフォーマンスと安定性が大幅に向上します。グローバルソートを有効にすると、 IMPORT INTOタスクそれぞれで40TiB以内のデータのインポートがサポートされます。

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

互換性の変更

注記:

このセクションでは、v7.6.0から最新バージョン(v8.0.0)にアップグレードする際に知っておくべき互換性の変更点について説明します。v7.5.0以前のバージョンから最新バージョンにアップグレードする場合は、中間バージョンで導入された互換性の変更点も確認する必要があるかもしれません。

  • TiUPによってデプロイされたデフォルトの Prometheus バージョンを 2.27.1 から 2.49.1 にアップグレードします。
  • TiUPによってデプロイされたデフォルトの Grafana バージョンを 7.5.11 から 7.5.17 にアップグレードします。
  • GA ではないがデフォルトで有効になっている監視関連のスケジューラを削除します#7765 @ rleungx

行動の変化

  • ユーザーの潜在的な接続問題を防ぐために、Security強化モード (SEM) でrequire_secure_transportからON設定を禁止します#47665 @ 天菜まお
  • DMでは、暗号化と復号化に使用する固定の秘密鍵が削除され、暗号化と復号化に使用する秘密鍵をカスタマイズできるようになります。アップグレード前にデータソース構成移行タスクの構成で暗号化されたパスワードを使用している場合は、追加の操作についてはDM 暗号化と復号化用の秘密鍵をカスタマイズするのアップグレード手順を参照してください#9492 @ D3ハンター
  • バージョン8.0.0より前では、 ADD INDEXCREATE INDEXtidb_ddl_enable_fast_reorg = ON )のアクセラレーションを有効にすると、エンコードされたインデックスキーはTiKVにデータを取り込みますが、その際の同時実行数は固定で16であり、下流のTiKV容量に応じて動的に調整することはできませんでした。バージョン8.0.0以降では、システム変数tidb_ddl_reorg_worker_cnt使用して同時実行数を調整できます。デフォルト値は4です。以前のデフォルト値16と比較して、新しいデフォルト値ではインデックス付きキーと値のペアを取り込む際のパフォーマンスが低下します。このシステム変数は、クラスターのワークロードに応じて調整できます。

MySQLの互換性

  • KEYパーティション タイプは、パーティション フィールドの空のリストを持つステートメントをサポートします。これは、MySQL の動作と一致しています。

システム変数

変数名タイプを変更説明
tidb_disable_txn_auto_retry非推奨バージョン8.0.0以降、このシステム変数は非推奨となり、TiDBは楽観的トランザクションの自動再試行をサポートしなくなりました悲観的なトランザクションモード使用することをお勧めします。楽観的ミスティックトランザクションの競合が発生した場合は、エラーをキャプチャしてアプリケーションでトランザクションを再試行できます。
tidb_ddl_version名前変更TiDB DDL V2 を有効にするかどうかを制御します。v8.0.0 以降、この変数の名前は、その目的をより適切に反映するためにtidb_enable_fast_create_tableに変更されました。
tidb_enable_collect_execution_info修正済みインデックスの使用統計記録するかどうかのコントロールを追加します。デフォルト値はONです。
tidb_redact_log修正済みTiDBログおよびスローログを記録する際に、SALテキスト内のユーザー情報の処理方法を制御します。値のオプションはOFF (ログ内のユーザー情報を処理しない)とON (ログ内のユーザー情報を非表示にする)です。ログ内のユーザー情報の処理をより柔軟にするため、v8.0.0ではログ情報のマーキングをサポートするオプションMARKERが追加されました。
div_precision_increment新しく追加された/演算子を用いた除算の結果の桁数を増加させる桁数を制御します。この変数はMySQLと同じです。
tidb_dml_type新しく追加されたDML文の実行モードを制御します。値のオプションは"standard""bulk"です。
tidb_enable_auto_analyze_priority_queue新しく追加された統計の自動収集タスクをスケジュールするために、優先キューを有効にするかどうかを制御します。この変数を有効にすると、TiDBは統計を最も必要とするテーブルの統計収集を優先します。
tidb_enable_parallel_hashagg_spill新しく追加されたTiDBが並列HashAggアルゴリズムのディスクスピルをサポートするかどうかを制御しますONの場合、並列HashAggアルゴリズムのディスクスピルがトリガーされます。この機能が将来のリリースで一般公開された時点で、この変数は非推奨となります。
tidb_enable_fast_create_table新しく追加されたTiDB はテーブル作成を高速化します有効にするかどうかを制御します。有効にするには値をONに、無効にするにはOFFに設定します。デフォルト値はONです。この変数を有効にすると、TiDB はCREATE TABLEを使用してテーブル作成を高速化します。
tidb_load_binding_timeout新しく追加されたバインディングの読み込みのタイムアウトを制御します。バインディングの読み込みの実行時間がこの値を超えると、読み込みは停止します。
tidb_low_resolution_tso_update_interval新しく追加されたTiDB キャッシュタイムスタンプ更新間隔を制御します。
tidb_opt_ordering_index_selectivity_ratio新しく追加されたSQL文にORDER BYまたはLIMIT句があり、一部のフィルタ条件がインデックスでカバーされていない場合に、SQL文ORDER BY一致するインデックスの推定行数を制御します。デフォルト値は-1で、このシステム変数は無効です。
tidb_opt_use_invisible_indexes新しく追加された現在のセッションにおいて、オプティマイザがクエリの最適化に目に見えないインデックス選択できるかどうかを制御します。この変数がONに設定されている場合、オプティマイザはセッションにおいてクエリの最適化に非表示のインデックスを選択できます。
tidb_schema_cache_size新しく追加されたスキーマ情報のキャッシュに使用できるメモリの上限を制御し、過剰なメモリ消費を回避します。この機能を有効にすると、LRUアルゴリズムを使用して必要なテーブルがキャッシュされ、スキーマ情報によって占有されるメモリが効果的に削減されます。

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

コンフィグレーションファイルコンフィグレーションパラメータタイプを変更説明
TiDBinstance.tidb_enable_collect_execution_info修正済みインデックスの使用統計記録するかどうかのコントロールを追加します。デフォルト値はtrueです。
TiDBtls-version修正済みこのパラメータは"TLSv1.0""TLSv1.1"サポートしなくなりました。現在は"TLSv1.2""TLSv1.3"のみをサポートします。
TiDBlog.file.compression新しく追加されたポーリングログの圧縮形式を指定します。デフォルト値はnullで、ポーリングログは圧縮されません。
TiDBlog.general-log-file新しく追加された一般ログを保存するファイルを指定します。デフォルトはnullで、一般ログはインスタンスファイルに書き込まれます。
TiDBtikv-client.enable-replica-selector-v2新しく追加されたRPCリクエストをTiKVに送信する際に、新しいバージョンのリージョンレプリカセレクタを使用するかどうかを制御します。デフォルト値はtrueです。
TiKVlog-backup.initial-scan-rate-limit修正済み最小値として1MiBの制限を追加します。
TiKVraftstore.store-io-pool-size修正済みTiKV のパフォーマンスを向上させるためにデフォルト値を0から1に変更します。つまり、StoreWriter スレッド プールのサイズはデフォルトで1になります。
TiKVrocksdb.defaultcf.titan.blob-cache-size修正済みバージョン8.0.0以降、TiKVは設定項目shared-blob-cacheを導入し、デフォルトで有効になっているため、 blob-cache-size別途設定する必要はありませんblob-cache-sizeの設定は、 shared-blob-cache falseに設定されている場合にのみ有効になります。
TiKVrocksdb.titan.max-background-gc修正済みTitan GC プロセスによるスレッド リソースの占有を減らすために、デフォルト値を4から1に変更します。
TiKVsecurity.encryption.master-key.vendor修正済みサービス プロバイダーの使用可能なタイプとしてgcp追加します。
TiKVstorage.block-cache.low-pri-pool-ratio新しく追加されたTitanコンポーネントが使用できるブロックキャッシュ全体の割合を指定します。デフォルト値は0.2です。
TiKVrocksdb.defaultcf.titan.shared-blob-cache新しく追加されたTitan BLOBファイルとRocksDBブロックファイルの共有キャッシュを有効にするかどうかを制御します。デフォルト値はtrueです。
TiKVsecurity.encryption.master-key.gcp.credential-file-path新しく追加されたsecurity.encryption.master-key.vendorgcp場合、Google Cloud 認証認証情報ファイルへのパスを指定します。
PDschedule.enable-heartbeat-breakdown-metrics新しく追加されたリージョンハートビートの内訳メトリクスを有効にするかどうかを制御します。これらのメトリクスは、リージョンハートビート処理の各段階で消費された時間を測定し、監視による分析を容易にします。デフォルト値はtrueです。
PDschedule.enable-heartbeat-concurrent-runner新しく追加されたリージョンハートビートの非同期並行処理を有効にするかどうかを制御します。有効にすると、独立したエグゼキューターがリージョンハートビートリクエストを非同期かつ並行して処理するため、ハートビート処理のスループットが向上し、レイテンシーが短縮されます。デフォルト値はtrueです。
TiDB Lightningtikv-importer.duplicate-resolution非推奨物理インポートモードで一意キーの競合を検出して解決するかどうかを制御します。v8.0.0以降では、 conflict.strategyに置き換えられます。
TiDB Lightningconflict.precheck-conflict-before-import新しく追加されたプリプロセス競合検出を有効にするかどうかを制御します。プリプロセス競合検出は、TiDBにインポートする前にデータ内の競合をチェックします。このパラメータのデフォルト値はfalseで、 TiDB Lightningはデータのインポート後にのみ競合をチェックします。このパラメータは、物理インポートモード( tikv-importer.backend = "local" )でのみ使用できます。
TiDB Lightninglogical-import-batch-rows新しく追加された論理インポートモードにおいて、トランザクションごとに挿入される行の最大数を制御します。デフォルト値は65536行です。
TiDB Lightninglogical-import-batch-size新しく追加された論理インポートモードにおいて、下流TiDBサーバーで実行される各SQLクエリの最大サイズを制御します。デフォルト値は"96KiB"です。単位はKB、KiB、MB、またはMiBです。
データ移行secret-key-path新しく追加されたアップストリームおよびダウンストリームのパスワードの暗号化と復号化に使用する秘密鍵のファイルパスを指定します。ファイルには、64文字の16進数AES-256秘密鍵が含まれている必要があります。
TiCDCdebezium-disable-schema新しく追加されたスキーマ情報の出力を無効にするかどうかを制御します。このパラメータは、シンクタイプがMQで、出力プロトコルがDebeziumの場合にのみ有効です。
TiCDCtls-certificate-file新しく追加されたPulsar が TLS 暗号化伝送を有効にするときに必要な、クライアント上の暗号化された証明書ファイルへのパスを指定します。
TiCDCtls-key-file-path新しく追加されたPulsar が TLS 暗号化伝送を有効にするときに必要な、クライアント上の暗号化された秘密鍵へのパスを指定します。

システムテーブル

非推奨の機能

  • バージョン8.0.0以降、システム変数tidb_disable_txn_auto_retry非推奨となり、TiDBは楽観的トランザクションの自動再試行をサポートしなくなりました。代替策として、楽観的トランザクションの競合が発生した場合は、エラーをキャプチャしてアプリケーション内でトランザクションを再試行するか、代わりに悲観的なトランザクションモード使用してください。
  • v8.0.0以降、TiDBはTLSv1.0およびTLSv1.1プロトコルをサポートしなくなりました。TLSをTLSv1.2またはTLSv1.3にアップグレードする必要があります。
  • TiDB Lightning v8.0.0以降、物理インポートモードの競合検出の古いバージョン戦略は非推奨となり、 conflict.strategyパラメータを使用して論理インポートモードと物理インポートモードの両方の競合検出戦略を制御できるようになりました。旧バージョンの競合検出用のduplicate-resolutionパラメータは、将来のリリースで削除される予定です。
  • 以降のリリースでは実行計画バインディングの自動進化再設計する予定であり、関連する変数と動作が変更されます。

改善点

  • TiDB

    • CREATE TABLE DDL文の実行パフォーマンスを10倍向上し、線形スケーラビリティ#50052 @ GMHDBJDをサポートします。
    • 16 IMPORT INTO ... FROM FILEタスクの同時送信をサポートし、ターゲットテーブルへの一括データインポートを容易にし、データファイル#49008 @ D3ハンターのインポートの効率とパフォーマンスを大幅に向上させます。
    • Sortオペレータ#47733 @ xzhangxian1008のディスクへのデータ書き込みのパフォーマンスを向上
    • ディスクへのデータのスピル中にクエリをキャンセルすることをサポートし、データスピル機能#50511 @ wshwsh12の終了メカニズムを最適化します。
    • 複数の等号条件を持つテーブル結合クエリを処理する際に、部分条件に一致するインデックスを使用してインデックス結合を構築することをサポートします#47233 @ ウィノロス
    • インデックスマージの機能を強化して、クエリ内のソート要件を識別し、ソート要件を満たすインデックスを選択します#48359 @ アイリンキッド
    • Apply演算子が同時に実行されない場合、TiDBではSHOW WARNINGS #50256 @ ホーキングレイを実行することで同時実行をブロックする演算子の名前を表示できます。
    • すべてのインデックスがpoint getクエリ#50184 @ エルサ0520をサポートしている場合、クエリに最適なインデックスを選択してpoint getクエリのインデックス選択を最適化します。
    • TiKV の高負荷時に広範囲にわたるタイムアウトを回避するために、統計を同期的にロードするタスクの優先度を一時的に高く調整します。タイムアウトにより、統計がロードされない可能性があります#50332 @ ウィノロス
    • PREPARE文が実行計画キャッシュにヒットしない場合、TiDBではSHOW WARNINGS #50407 @ ホーキングレイを実行することでその理由を確認できます。
    • 同じデータ行が複数回更新された場合のクエリ推定情報の精度を向上#47523 @ テリー・パーセル
    • インデックスマージはAND述語#51778 @ 時間と運命に複数値インデックスとOR演算子を埋め込むことをサポートします。
    • force-init-stats trueに設定すると、TiDB は起動時にサービスを提供する前に統計情報の初期化が完了するのを待ちます。この設定により HTTP サーバーの起動がブロックされなくなり、ユーザーは#50854 @ ホーキングレイで監視を継続できます。
    • MemoryTrackerはIndexLookup演算子#45901 @ ソロツグのメモリ使用量を追跡できます
    • MemoryTrackerはMemTableReaderExec演算子#51456 @ wshwsh12のメモリ使用量を追跡できます
    • PD からリージョンを一括ロードすることをサポートし、大規模なテーブル#51326 @ シーライズをクエリするときに KV 範囲からリージョンへの変換プロセスを高速化します。
    • システムテーブルINFORMATION_SCHEMA.TABLESのクエリパフォーマンスINFORMATION_SCHEMA.STATISTICS最適化しましINFORMATION_SCHEMA.KEY_COLUMN_USAGE 。以前のバージョンと比較して、パフォーマンスywqzzy最大100倍向上しました#50305 @ INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
  • TiKV

    • TSOの検証と検出を強化して、構成または操作が不適切な場合のクラスターTSOの堅牢性を向上させます#16545 @ cfzjywxk
    • 悲観的ロックのクリーンアップロジックを最適化して、コミットされていないトランザクション#16158 @ cfzjywxkの処理パフォーマンスを向上させます。
    • TiKVの統合ヘルスコントロールを導入し#1167異常な単一TiKVノードがクラスタアクセスパフォーマンスに与える影響を軽減します。この最適化を無効にするには、 tikv-client.enable-replica-selector-v2falseに設定します。5 #16297 #1104 @ ミョンケミンタ @ ジグアン @ crazycs520
    • PDクライアントはメタデータstorageインターフェースを使用して、以前のグローバル構成インターフェース#14484 @ HuSharpを置き換えます。
    • write cf stats #16245 @ コナー1996を通じてデータの読み込み動作を決定することでスキャンのパフォーマンスを向上させます。
    • Raft conf 変更プロセス中にノードが削除され、投票者が降格されていないか最新のハートビートをチェックして、この動作によってリージョンがアクセス不能にならないことを確認します#15799 @ トニー・シュッキ
    • パイプラインDML #16291 @ エキシウムのFlushおよびBufferBatchGetインターフェースを追加
    • cgroup の CPU とメモリの制限#16392 @ ピンアンドビーの監視とアラートを追加します
    • リージョンワーカーとスナップショット生成ワーカー#16562 @ コナー1996の CPU 監視を追加します。
    • ピアのスローログを追加し、メッセージ#16600 @ コナー1996を保存します
  • PD

  • TiFlash

  • ツール

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

      • brコマンドラインツールに新しい復元パラメータ--load-stats導入し、統計#50568 @ リーヴルスを復元するかどうかを制御します。
      • コマンドラインツールbrに新しい復元パラメータ--tikv-max-restore-concurrencyを導入しました。このパラメータは、TiKVノードごとにダウンロードおよび取り込み可能なファイルの最大数を制御します。また、ジョブキューの最大長を制御することで、 BRノードのメモリ消費量も制御します#51621 @ 3ポイントシュート
      • 粗粒度のリージョン分散アルゴリズムを有効にして同時パラメータ#50701 @ 3ポイントシュートを適応的に取得することで、復元パフォーマンスが向上します。
      • br #50927 @ リドリスRのコマンドラインヘルプ情報にlogコマンドを表示します
      • リストアプロセス中にテーブルIDを事前割り当てすることで、テーブルIDの再利用を最大化し、リストアパフォーマンスを向上します#51736 @ リーヴルス
      • OOM の問題を回避するために、 BRを使用するときは TiDB 内の GCメモリ制限チューナー機能を無効にします#51078 @ リーヴルス
      • より効率的なアルゴリズム#50613 @ リーヴルスを使用して、データ復元中に SST ファイルをマージする速度を改善します
      • データ復元中にデータベースをバッチで作成するサポート#50767 @ リーヴルス
      • ログバックアップ#51046 @ ユジュンセン中に、ログとメトリックのグローバルチェックポイントの進行に影響を与える最も遅いリージョンの情報を出力します。
      • 大規模なデータセット#48301 @ リーヴルスシナリオでRESTOREステートメントのテーブル作成パフォーマンスを向上
    • TiCDC

      • TiCDCがデータ#10386 リデジュで複製する際のメモリ消費を削減するために、 RowChangedEventのメモリ消費を最適化します。
      • 変更フィードタスク#10499 @ 3エースショーハンド作成および再開時に、start-ts パラメータが有効であることを確認します。
    • TiDB データ移行 (DM)

      • MariaDBプライマリ-セカンダリレプリケーションシナリオにおいて、移行パスがMariaDBプライマリインスタンス -> MariaDBセカンダリインスタンス -> DM -> TiDBの場合、 gtid_strict_mode = offでMariaDBセカンダリインスタンスのGTIDが厳密に増加していない場合(例えば、MariaDBセカンダリインスタンスへのデータ書き込みがある場合)、DMタスクはエラーless than global checkpoint positionを報告します。v8.0.0以降、TiDBはこのシナリオに対応しており、データは正常に下流に移行できます#10741 @ okJiang
    • TiDB Lightning

バグ修正

  • TiDB

    • データの変更がないのにauto analyzeが複数回トリガーされる問題を修正#51775 @ ハイラスティン
    • auto analyze同時実行が#51749 @ ホーキングレイに誤って設定されている問題を修正
    • 単一のSQL文を使用して複数のインデックスを追加することによって発生するインデックスの不整合の問題を修正#51746 @ 接線
    • クエリでNATURAL JOIN #32044 @ アイリンキッドが使用される場合に発生する可能性のあるColumn ... in from clause is ambiguousエラーを修正します
    • TiDB がgroup by #38756 @ ハイラスティンの定数値を誤って削除することによる間違ったクエリ結果の問題を修正しました
    • LEADINGヒントがUNION ALLステートメント#50067 @ ホーキングレイで有効にならない問題を修正しました
    • BIT型の列が一部の関数の計算に関係する場合にデコード失敗によりクエリエラーが発生する可能性がある問題を修正しました#49566 #50850 #50855 @ ジフハウス
    • PD #50152 @ ジムララとの相互作用の問題により、 tiup cluster upgrade/start使用してローリング アップグレードを実行すると TiDB がpanicになる可能性がある問題を修正しました。
    • ORDER BY句でUNIQUEインデックス検索を実行するとエラー#49920 @ ジャッキーspが発生する可能性がある問題を修正しました。
    • 定数伝播#49440 @ ウィノロスENUMまたはSET型を処理するときに TiDB が間違ったクエリ結果を返す問題を修正しました
    • クエリに Apply 演算子が含まれており、 fatal error: concurrent map writesエラーが#50347 @ シーライズで発生すると TiDB がpanic可能性がある問題を修正しました。
    • 文字列型の変数のSET_VAR制御が無効になる可能性がある問題を修正#50507 @ qw4990
    • tidb_sysdate_is_now 1 #49299 @ ホーキングレイに設定されている場合に、 SYSDATE()関数がプラン キャッシュ内の時間を誤って使用する問題を修正しました。
    • CREATE GLOBAL BINDING文を実行するときに、スキーマ名が大文字の場合、バインディングが有効にならない問題を修正しました#50646 @ qw4990
    • Index Path重複したインデックス#50496 @ アイリンキッドを選択する問題を修正
    • CREATE GLOBAL BINDING文にIN() #43192 @ キング・ディランが含まれている場合にPLAN REPLAYERバインディングのロードに失敗する問題を修正しました
    • 複数のanalyzeタスクが失敗した場合、失敗理由が正しく記録されない問題を修正#50481 @ ハイラスティン
    • tidb_stats_load_sync_wait #50872ジフハウスに反映されない問題を修正
    • 複数のレベルのmax_execute_time設定が互いに干渉する問題を修正#50914 @ ジフハウス
    • 統計#50835 @ ハイラスティンの同時更新によって発生するスレッドの安全性の問題を修正しました
    • パーティションテーブルでauto analyze実行すると TiDB がpanic可能性がある問題を修正#51187 @ ハイラスティン
    • SQL 文のIN()異なる数の値#51222 @ ホーキングレイが含まれている場合に SQL バインディングが機能しない可能性がある問題を修正しました。
    • TiDBが式#43527 @ ハイラスティン内のシステム変数の型を正しく変換できない問題を修正
    • force-init-stats #51473 @ ホーキングレイに設定されている場合に TiDB が対応するポートを listen しない問題を修正しました
    • determinateモード( tidb_opt_objective='determinate' )でクエリに述語が含まれていない場合、統計がロードされない可能性がある問題を修正しました#48257 @ 時間と運命
    • init-statsプロセスが TiDB をpanicに陥らせ、 load statsプロセスが#51581 @ ホーキングレイで終了する可能性がある問題を修正しました。
    • IN()述語にNULL #51560 @ ウィノロスが含まれている場合にクエリ結果が正しくない問題を修正しました
    • DDLタスクに複数のテーブルが含まれる場合に、ブロックされたDDL文がMDLビューに表示されない問題を修正#47743 @ wjhuang2016
    • テーブル上のANALYZEタスクのうちprocessed_rows 、そのテーブルの合計行数#50632 @ ホーキングレイを超える可能性がある問題を修正しました。
    • HashJoin演算子がディスク#50841 @ wshwsh12にスピルできない場合に発生する可能性のある goroutine リークの問題を修正しました。
    • CTEクエリのメモリ使用量が制限#50337 @ グオシャオゲを超えたときに発生するゴルーチンリークの問題を修正しました
    • 集計関数をグループ計算に使用すると発生する可能性のあるCan't find column ...エラーを修正#50926 @ qw4990
    • CREATE TABLE文に特定のパーティションまたは制約が含まれている場合に、テーブル名の変更などの DDL 操作が停止する問題を修正しました#50972 @ lcwangchao
    • Grafana の監視メトリックtidb_statistics_auto_analyze_total整数#51051 @ ホーキングレイとして表示されない問題を修正しました
    • tidb_server_memory_limit変数が#48180 @ ホーキングレイに変更された後、 tidb_gogc_tuner_thresholdシステム変数がそれに応じて調整されない問題を修正しました
    • クエリにJOIN操作#42588 @ アイリンキッドが含まれる場合にindex out of rangeエラーが発生する可能性がある問題を修正しました
    • 列のデフォルト値が削除されている場合、列のデフォルト値を取得するとエラーが返される問題を修正#50043 #51324 @ crazycs520
    • TiFlash の遅延マテリアライゼーションが関連列#49241 #51204 @ ロイド・ポティガーを処理するときに間違った結果が返される可能性がある問題を修正しました
    • バイナリ照合順序入力#50393 @ イービン87を処理するときにLIKE()関数が間違った結果を返す可能性がある問題を修正しました
    • 2番目のパラメータがNULL #50931 @ シーライズの場合にJSON_LENGTH()関数が間違った結果を返す問題を修正しました
    • 特定の状況下で時間精度が失われる可能#49555 CAST(AS DATETIME) シーライズ
    • テーブルにクラスター化インデックス#51372 @ グオシャオゲがある場合に並列Applyで誤った結果が生成される可能性がある問題を修正しました。
    • 主キーの型がVARCHAR #51810 @ そよ風のようなの場合にALTER TABLE ... COMPACT TIFLASH REPLICA誤って終了する可能性がある問題を修正しました
    • EXCHANGE PARTITIONステートメント#47167 @ ジフハウスを使用してパーティション テーブルを交換するときに、 DEFAULT NULL属性のNULL値のチェックが正しく行われない問題を修正しました。
    • パーティションテーブル定義がUTF8以外の文字セット#49251 @ ヤンケオを使用するときに誤った動作を引き起こす可能性がある問題を修正しました
    • 一部のシステム変数#49461 @ ジフハウスINFORMATION_SCHEMA.VARIABLES_INFOテーブルに誤ったデフォルト値が表示される問題を修正しました
    • 一部のケースでデータベース名に空の文字列が使用された場合にエラーが報告されない問題を修正#45873 @ ヨシキポム
    • SPLIT TABLE ... INDEX文で TiDB がpanicを起こす可能性がある問題を修正#50177 @ 定義2014
    • KeyPartitionタイプのパーティションテーブルをクエリするとエラーが発生する可能性がある問題を修正しました#50206 #51313 #51196 @ 時間と運命 @ ジフハウス @ ミョンス
    • ハッシュパーティションテーブルをクエリすると誤った結果が生成される可能性がある問題を修正#50427 @ 定義2014
    • OpenTracingが正しく動作しない問題を修正#50508 @ 定義2014
    • ALTER INSTANCE RELOAD TLSエラー#50699 @ ドヴェーデンを報告したときにエラーメッセージが完全ではない問題を修正しました
    • 自動増分 ID #50819 @ 天菜まおを割り当てるときに、 AUTO_INCREMENT属性によって不要なトランザクション競合が発生し、ID が連続しなくなる問題を修正しました。
    • 一部のエラー#50849 @ 天菜まおについて、TiDB ログ内の不完全なスタック情報の問題を修正しました
    • LIMIT句の数値が大きすぎる場合に一部のクエリで過剰なメモリ使用が発生する問題を修正しました#51188 @ 定義2014
    • TTL 機能により、データ範囲の分割が不正確になり、場合によっては#51527 @ lcwangchaoでデータ ホットスポットが発生する問題を修正しました。
    • 明示的なトランザクション#51387 @ ヤンケオの最初の行にSET文が表示されても有効にならない問題を修正しました
    • BINARYタイプの JSON をクエリすると、場合によってはエラーが発生する可能性がある問題を修正しました#51547 @ ヤンケオ
    • 有効期限#51675 @ lcwangchaoを計算するときに、TTL が夏時間調整の移行を正しく処理しない問題を修正しました。
    • 特定の条件下でSURVIVAL_PREFERENCES属性がSHOW CREATE PLACEMENT POLICYステートメントの出力に表示されない可能性がある問題を修正#51699 @ lcwangchao
    • 無効な設定項目#51399 @ 定義2014が含まれている場合、設定ファイルが有効にならない問題を修正しました
  • TiKV

    • tidb_enable_row_level_checksum有効にするとTiKVがpanicを起こす可能性がある問題を修正#16371 @ cfzjywxk
    • 例外的な状況で休止状態の領域がすぐに復帰しない問題を修正#16368 @ LykxSassinator
    • ノードをオフラインにする前に、リージョン内のすべてのレプリカの最後のハートビート時間をチェックすることで、1 つのレプリカがオフラインになるとリージョン全体が使用できなくなる問題を修正しました#16465 @ トニー・シュッキ
    • JSON 整数の最大値INT64より大きく最大値UINT64より小さい値が TiKV によってFLOAT64として解析され、TiDB #16512 @ ヤンケオとの不整合が発生する問題を修正しました。
    • 監視メトリックtikv_unified_read_pool_thread_countデータがない場合がある問題を修正#16629 @ ユジュンセン
  • PD

  • TiFlash

    • レプリカ移行#8323 @ ジェイソン・ファン中に PD とのネットワーク接続が不安定になり、 TiFlash がpanic可能性がある問題を修正しました
    • クエリ#8564 @ ジンヘリンの低速化によりメモリ使用量が大幅に増加する問題を修正
    • TiFlashレプリカを削除して再度追加すると、 TiFlash #8695 @ ジェイソン・ファンでデータ破損が発生する可能性がある問題を修正しました。
    • ポイントインタイムリカバリ(PITR)を実行した後、またはFLASHBACK CLUSTER TO実行した後にTiFlashレプリカデータが誤って削除され、データ異常#8777 @ ジェイソン・ファンが発生する可能性がある問題を修正しました。
    • ALTER TABLE ... MODIFY COLUMN ... NOT NULL実行した後にTiFlash がパニックを起こし、NULL 可能列が#8419 @ ジェイソン・ファンに非 NULL に変更される問題を修正しました。
    • 分散storageおよびコンピューティングアーキテクチャで、ネットワーク分離#8806 @ ジンヘリン後にクエリが永続的にブロックされる可能性がある問題を修正しました
    • 分散storageとコンピューティングアーキテクチャで、シャットダウン#8837 @ ジェイソン・ファン中にTiFlash がpanicになる可能性がある問題を修正しました。
    • リモート読み取り#8685 @ ソロツグの場合にデータ競合によりTiFlash がクラッシュする可能性がある問題を修正しました
    • CAST(AS JSON)関数が JSON オブジェクトキー#8712 @ シーライズの重複を排除しない問題を修正しました
    • チャンクエンコード#8674 @ イービン87中にENUM列目がTiFlashを引き起こす可能性がある問題を修正しました
  • ツール

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

      • リージョンがリーダー#16469 @ ユジュンセンになった直後に分割またはマージされると、ログ バックアップ チェックポイントがスタックする問題を修正しました。
      • フルバックアップでピアが見つからない場合に TiKV がパニックを起こす問題を修正#16394 @ リーヴルス
      • 同じノード#50445 @ 3ポイントシュートで TiKV IP アドレスを変更した後にログ バックアップが停止する問題を修正しました
      • S3 #49942 @ リーヴルスからファイル コンテンツを読み取っているときにエラーが発生した場合にBR が再試行できない問題を修正しました
      • データの復元に失敗した後、チェックポイントから再開するとエラーthe target cluster is not freshが発生する問題を修正しました#50232 @ リーヴルス
      • ログバックアップタスクを停止すると TiDB がクラッシュする問題を修正#50839 @ ユジュンセン
      • TiKVノード#50566 @ リーヴルスにリーダーがいないためにデータ復元が遅くなる問題を修正
      • --filterオプションを指定した後でも、完全な復元を行うにはターゲット クラスターが空である必要があるという問題を修正しました#51009 @ 3ポイントシュート
    • TiCDC

      • storageシンク#10352 @ チャールズ・チュン96使用時に、storageサービスによって生成されたファイルシーケンス番号が正しく増加しない可能性がある問題を修正しました。
      • 複数のチェンジフィード#10430 @ チャールズ・チュン96を同時に作成すると TiCDC がErrChangeFeedAlreadyExistsエラーを返す問題を修正しました
      • ignore-eventadd table partitionイベントをフィルタリングするように構成した後、TiCDC が関連パーティションの他のタイプの DML 変更をダウンストリーム#10524 @ チャールズ・チュン96に複製しない問題を修正しました。
      • アップストリームテーブル#10522 @ スドジTRUNCATE PARTITIONが実行された後にチェンジフィードがエラーを報告する問題を修正しました
      • 変更フィードを再開するときにsnapshot lost caused by GC時間内に報告されず、変更フィードのcheckpoint-ts TiDB #10463 @ スドジの GC セーフポイントよりも小さい問題を修正しました。
      • 単一行データのデータ整合性検証が有効にされた後、タイムゾーンの不一致により TiCDC がTIMESTAMP種類のチェックサムの検証に失敗する問題を修正#10573 @ 3エースショーハンド
      • 同期ポイントテーブルが誤って複製される可能性がある問題を修正#10576 @ アズドンメン
      • Apache Pulsarをダウンストリーム#10602 @ アズドンメンとして使用するとOAuth2.0、TLS、mTLSが正しく有効化できない問題を修正
      • TiKV がリーダー#10584 @ アズドンメンをアップグレード、再起動、または排除したときに、変更フィードがスタックする可能性がある問題を修正しました。
      • DDL文が頻繁に実行されるシナリオで、間違ったBarrierTSが原因でデータが間違ったCSVファイルに書き込まれる問題を修正#10668 @ リデジュ
      • KVクライアントのデータ競合によりTiCDCがpanic#10718 @ アズドンメンになる問題を修正
      • テーブルレプリケーションタスク#10613 @ チャールズ・チュン96をスケジュールするときに TiCDC がパニックになる問題を修正しました
    • TiDB データ移行 (DM)

      • アップストリーム主キーがバイナリタイプ#10672 @ GMHDBJDの場合にデータが失われる問題を修正しました
    • TiDB Lightning

      • TiKVスペース#43636 @ ランス6716チェックによって発生するパフォーマンス低下の問題を修正
      • ファイルスキャン中に無効なシンボリックリンクファイルに遭遇すると、 TiDB Lightning がエラーを報告する問題を修正しました#49423 @ ランス6716
      • sql_mode #50757 @ GMHDBJDNO_ZERO_IN_DATE含まれていない場合に、 TiDB Lightning が0を含む日付値を正しく解析できない問題を修正しました。

寄稿者

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

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