TiDB 7.6.0 リリースノート
発売日: 2024年1月25日
TiDB バージョン: 7.6.0
クイックアクセス: クイックスタート
7.6.0 では、次の主要な機能と改善が導入されています。
カテゴリ | 機能/拡張機能 | 説明 |
---|---|---|
スケーラビリティとパフォーマンス | データベース間のSQLバインディング | 同じスキーマを持つ数百のデータベースを管理する場合、これらのデータベース全体に SQL バインディングを適用する必要があることがよくあります。たとえば、SaaS または PaaS データ プラットフォームでは、各ユーザーは通常、同じスキーマを持つ個別のデータベースを操作し、それらに対して同様の SQL クエリを実行します。この場合、各データベースに SQL を 1 つずつバインドするのは現実的ではありません。TiDB v7.6.0 では、すべてのスキーマが同等のデータベース間でバインディングを一致させることができるデータベース間 SQL バインディングが導入されています。 |
スナップショットの復元を最大 10 倍高速化 (実験的) | BR v7.6.0 では、クラスターのスナップショット復元を高速化するための実験的粗粒度のリージョン分散アルゴリズムが導入されています。多数の TiKV ノードを持つクラスターでは、このアルゴリズムにより、ノード間で負荷がより均等に分散され、ノードごとのネットワーク帯域幅がより有効に活用されるため、クラスターのリソース効率が大幅に向上します。実際のいくつかのケースでは、この改善により復元プロセスが最大約 10 倍高速化されます。 | |
バッチでテーブルを作成する場合、最大 10 倍の速度を実現 (実験的) | v7.6.0 で新しい DDLアーキテクチャが実装されたことで、バッチ テーブル作成のパフォーマンスが最大 10 倍高速化し、大幅に向上しました。この大幅な機能強化により、多数のテーブルの作成に必要な時間が大幅に短縮されます。この高速化は、数万から数十万に及ぶ大量のテーブルが一般的に存在する SaaS シナリオで特に顕著です。 | |
アクティブ PD フォロワーを使用して PD のリージョン情報クエリ サービスを強化する (実験的) | TiDB v7.6.0 では、PD フォロワーがリージョン情報クエリ サービスを提供できるようにする実験的機能「Active PD Follower 」が導入されています。この機能により、多数の TiDB ノードとリージョンを持つクラスターでGetRegion およびScanRegions 要求を処理する PD クラスターの機能が向上し、PD リーダーの CPU 負荷が軽減されます。 | |
信頼性と可用性 | TiProxy をサポート (実験的) | デプロイメント ツールを使用して簡単にデプロイできる TiProxy サービスを完全にサポートし、ローリング再起動、アップグレード、またはスケーリング イベントを通じて TiDB への接続を管理および維持します。 |
データ移行 (DM) が MySQL 8.0 (GA) を正式にサポート | これまで、DM を使用して MySQL 8.0 からデータを移行することは実験的機能であり、実本番環境では使用できませんでした。TiDB v7.6.0 では、この機能の安定性と互換性が強化され、実本番環境で MySQL 8.0 から TiDB にデータをスムーズかつ迅速に移行できるようになります。v7.6.0 では、この機能が一般提供 (GA) されます。 |
機能の詳細
スケーラビリティ
アクティブ PDFollower機能を使用して、PD のリージョン情報クエリ サービスのスケーラビリティを強化します (実験的) #7431 @ キャビンフィーバーB
多数のリージョンを持つ TiDB クラスターでは、ハートビートの処理とタスクのスケジュール設定のオーバーヘッドが増加するため、PD リーダーの CPU 負荷が高くなる可能性があります。クラスターに多数の TiDB インスタンスがあり、リージョン情報に対する要求の同時実行性が高い場合、PD リーダーの CPU 負荷がさらに増加し、PD サービスが利用できなくなる可能性があります。
高可用性を確保するために、TiDB v7.6.0 では、PD のリージョン情報クエリ サービスのスケーラビリティを強化する Active PD Follower機能の使用をサポートしています。システム変数
pd_enable_follower_handle_region
をON
に設定することで、Active PD Follower機能を有効にすることができます。この機能を有効にすると、TiDB はリージョン情報要求をすべての PD サーバーに均等に分散し、PD フォロワーもリージョン要求を処理できるため、PD リーダーの CPU 負荷が軽減されます。詳細についてはドキュメント参照してください。
パフォーマンス
BR はスナップショットの復元速度を最大 10 倍向上させます (実験的) #33937 #49886 @ 3ポインター
TiDB クラスターのスケールアップに伴い、ビジネスのダウンタイムを最小限に抑えるために、クラスターを障害から迅速に復元することがますます重要になります。v7.6.0 より前では、リージョン分散アルゴリズムがパフォーマンス復元における主なボトルネックでした。v7.6.0 では、 BR はリージョン分散アルゴリズムを最適化し、復元タスクを多数の小さなタスクにすばやく分割し、それらをすべての TiKV ノードに一括で分散します。新しい並列復元アルゴリズムは、各 TiKV ノードのリソースを最大限に活用し、迅速な並列復元を実現します。実際のいくつかのケースでは、大規模なリージョンシナリオでクラスターのスナップショット復元速度が約 10 倍向上しています。
新しい粗粒度リージョン散布アルゴリズムは実験的です。これを使用するには、
br
コマンドの--granularity="coarse-grained"
パラメータを設定します。例:br restore full \ --pd "${PDIP}:2379" \ --storage "s3://${Bucket}/${Folder}" \ --s3.region "${region}" \ --granularity "coarse-grained" \ --send-credentials-to-tikv=true \ --log-file restorefull.log詳細についてはドキュメント参照してください。
Titanエンジンはデフォルトで有効になっています#16245 @ コナー1996 @ v01dスター @ トニー
TiDB 全体のテーブル書き込みシナリオをより適切にサポートするため、特に JSON をサポートするために、TiDB v7.6.0 以降では Titan エンジンがデフォルトで有効になっています。Titan エンジンは、32 KB を超える大きな値を RocksDB の LSM ツリーから自動的に分離し、Titan に別々に保存して、大きな値の処理を最適化します。Titan エンジンは、TiKV が使用する RocksDB 機能と完全に互換性があります。この戦略的なシフトにより、書き込み増幅効果が軽減されるだけでなく、大きな値を含む書き込み、更新、およびポイント クエリ シナリオのパフォーマンスが向上します。さらに、範囲スキャン シナリオでは、Titan エンジンの最適化により、デフォルト構成の RocksDB に匹敵するパフォーマンスが実現されています。
この構成変更は、以前のバージョンとの互換性が維持されます。既存の TiDB クラスターの場合、TiDB v7.6.0 以降のバージョンにアップグレードすると、Titan エンジンはデフォルトで無効になります。特定の要件に基づいて、Titan エンジンを手動で有効または無効にすることができます。
詳細についてはドキュメント参照してください。
次の文字列関数を TiKV #48170 @ ゲンリキにプッシュダウンすることをサポートします
LOWER()
UPPER()
詳細についてはドキュメント参照してください。
次のJSON関数をTiFlashにプッシュダウンすることをサポートします#48350 #48986 #48994 #49345 #49392 @ シーライズ @ いびん87
JSON_UNQUOTE()
JSON_ARRAY()
JSON_DEPTH()
JSON_VALID()
JSON_KEYS()
JSON_CONTAINS_PATH()
詳細についてはドキュメント参照してください。
テーブル作成のパフォーマンスを10倍向上(実験的) #49752 @ 翻訳者
以前のバージョンでは、上流データベースから TiDB に数万のテーブルを移行する場合、TiDB がこれらのテーブルを作成するのは時間がかかり、非効率的でした。v7.6.0 以降、TiDB は新しい TiDB DDL V2アーキテクチャを導入します。システム変数
tidb_ddl_version
を構成することでこれを有効にできます。以前のバージョンと比較して、新しいバージョンの DDL ではバッチ テーブルの作成パフォーマンスが 10 倍向上し、テーブルの作成時間が大幅に短縮されます。詳細についてはドキュメント参照してください。
定期的な完全圧縮をサポート(実験的) #12729 アファインベルグ
v7.6.0 以降、TiDB は TiKV の定期的な完全圧縮をサポートしています。この機能は、冗長なデータ バージョンを排除するためのガベージ コレクション (GC) の拡張機能として機能します。アプリケーション アクティビティに明らかなピークと谷が見られるシナリオでは、この機能を使用してアイドル期間中にデータ圧縮を実行し、ピーク期間中のパフォーマンスを向上させることができます。
TiKV 構成項目
periodic-full-compact-start-times
構成することで、TiKV が定期的な完全圧縮を開始する特定の時間を設定し、periodic-full-compact-start-max-cpu
構成することで TiKV の定期的な完全圧縮の最大 CPU 使用率を制限できます。デフォルト値periodic-full-compact-start-max-cpu
は 10% です。つまり、定期的な完全圧縮は TiKV の CPU 使用率が 10% 未満の場合にのみトリガーされ、アプリケーション トラフィックへの影響が軽減されます。詳細についてはドキュメント参照してください。
信頼性
クロスデータベース実行プランバインディング#48875 @ qw4990
TiDB で SaaS サービスを実行する場合、データの保守と管理を容易にするために、各テナントのデータを別々のデータベースに保存するのが一般的です。その結果、同じテーブルとインデックスの定義、および類似の SQL ステートメントを持つデータベースが何百も作成されます。このようなシナリオでは、SQL ステートメントの実行プラン バインディングを作成すると、通常、このバインディングは他のデータベースの SQL ステートメントにも適用されます。
このシナリオでは、TiDB v7.6.0 でクロスデータベース バインディング機能が導入され、異なるデータベースにある場合でも、同じスキーマを持つ SQL ステートメントに同じ実行プランをバインドできるようになりました。クロスデータベース バインディングを作成するときは、次の例に示すように、ワイルドカード
*
使用してデータベース名を表す必要があります。バインディングが作成されると、テーブルt1
とt2
がどのデータベースにあるかに関係なく、TiDB はこのバインディングを使用して同じスキーマを持つすべての SQL ステートメントの実行プランを生成しようとします。これにより、データベースごとにバインディングを作成する手間が省けます。CREATE GLOBAL BINDING FOR USING SELECT /*+ merge_join(t1, t2) */ t1.id, t2.amount FROM *.t1, *.t2 WHERE t1.id = t2.id;さらに、クロスデータベース バインディングは、ユーザー データとワークロードの不均一な分散と急速な変化によって引き起こされる SQL パフォーマンスの問題を効果的に軽減できます。SaaS プロバイダーはクロスデータベース バインディングを使用して、大量のデータを持つユーザーによって検証された実行プランを修正し、すべてのユーザーの実行プランを修正できます。SaaS プロバイダーにとって、この機能は利便性とエクスペリエンスの大幅な向上をもたらします。
クロスデータベース バインディングによって発生するシステム オーバーヘッド (1% 未満) のため、TiDB はデフォルトでこの機能を無効にします。クロスデータベース バインディングを使用するには、まず
tidb_opt_enable_fuzzy_binding
システム変数を有効にする必要があります。詳細についてはドキュメント参照してください。
可用性
プロキシコンポーネントTiProxy をサポート (実験的) #413 @ 翻訳者 @ xhebox
TiProxy は、クライアントと TiDBサーバーの間にある TiDB の公式プロキシコンポーネントです。TiDB の負荷分散機能と接続永続化関数を提供し、TiDB クラスターのワークロードのバランスをより良くし、メンテナンス操作中にデータベースへのユーザー アクセスに影響を与えないようにします。
- TiDB クラスターのローリング再起動、ローリングアップグレード、スケールインなどのメンテナンス操作中は、TiDB サーバーに変更が発生し、クライアントと TiDB サーバー間の接続が中断されます。TiProxy を使用すると、これらのメンテナンス操作中に接続を他の TiDB サーバーにスムーズに移行できるため、クライアントに影響が及ぶことはありません。
- TiDBサーバーへのクライアント接続は、他の TiDB サーバーに動的に移行できません。複数の TiDB サーバーのワークロードが不均衡な場合、クラスター全体のリソースは十分であるものの、特定の TiDB サーバーでリソースが枯渇し、レイテンシーが大幅に増加する状況が発生する可能性があります。この問題に対処するために、TiProxy は接続の動的移行を提供します。これにより、クライアントに影響を与えることなく、接続を 1 つの TiDBサーバーから別の TiDB サーバーに移行できるため、TiDB クラスターの負荷分散が実現します。
TiProxy はTiUP、 TiDB Operator、および TiDB Dashboard に統合されており、構成、展開、保守が容易になります。
詳細についてはドキュメント参照してください。
構文
LOAD DATA
明示的なトランザクションとロールバックをサポート#49079 @ エキシウムMySQL と比較すると、
LOAD DATA
ステートメントのトランザクション動作は、v7.6.0 より前の TiDB バージョンによって異なるため、このステートメントを使用する際には追加の調整が必要になる場合があります。具体的には、v4.0.0 より前では、LOAD DATA
20000 行ごとにコミットします。v4.0.0 から v6.6.0 まで、TiDB はデフォルトで 1 つのトランザクションですべての行をコミットし、tidb_dml_batch_size
システム変数を設定することで固定行数ごとにコミットすることもサポートします。v7.0.0 以降では、tidb_dml_batch_size
LOAD DATA
には影響しなくなり、TiDB は 1 つのトランザクションですべての行をコミットします。v7.6.0 以降、TiDB はトランザクション内の
LOAD DATA
他の DML ステートメントと同じ方法、特に MySQL と同じ方法で処理します。トランザクション内のLOAD DATA
ステートメントは、現在のトランザクションを自動的にコミットしたり、新しいトランザクションを開始したりしなくなりました。さらに、トランザクション内のLOAD DATA
ステートメントを明示的にコミットまたはロールバックできます。さらに、LOAD DATA
ステートメントは、TiDB トランザクション モード設定 (楽観的トランザクションまたは悲観的トランザクション) の影響を受けます。これらの改善により、MySQL から TiDB への移行プロセスが簡素化され、より統一された制御可能なデータ インポート エクスペリエンスが提供されます。詳細についてはドキュメント参照してください。
DB操作
FLASHBACK CLUSTER
正確なTSO #48372 @ ボーンチェンジャーの指定をサポートしますTiDB v7.6.0 では、フラッシュバック機能がさらに強力かつ正確になりました。指定された履歴タイムスタンプへのクラスターのロールバックをサポートするだけでなく、
FLASHBACK CLUSTER TO TSO
使用して正確なリカバリTSOを指定できるため、データリカバリの柔軟性が向上します。たとえば、この機能は TiCDC で使用できます。データレプリケーションを一時停止し、ダウンストリーム TiDB クラスターでオンライン前の読み取り/書き込みテストを実行した後、この機能により、クラスターは一時停止した TSO に迅速かつ適切にロールバックし、TiCDC を使用してデータのレプリケーションを続行できます。これにより、オンライン前の検証プロセスが合理化され、データ管理が簡素化されます。FLASHBACK CLUSTER TO TSO 445494839813079041;詳細についてはドキュメント参照してください。
長時間実行中のアイドルトランザクションの自動終了をサポート#48714 @ クレイジーcs520
ネットワークの切断やアプリケーション障害が発生するシナリオでは、
COMMIT
/ROLLBACK
ステートメントがデータベースに送信されない可能性があります。これにより、データベース ロックの解放が遅れ、トランザクション ロック待機が発生し、データベース接続が急増する可能性があります。このような問題はテスト環境では一般的ですが、本番環境でも時々発生する可能性があり、迅速に診断することが難しい場合があります。これらの問題を回避するために、TiDB v7.6.0 では、長時間実行されているアイドル トランザクションを自動的に終了するtidb_idle_transaction_timeout
システム変数が導入されています。トランザクション状態のユーザー セッションが、この変数の値を超える期間アイドル状態のままになると、TiDB はトランザクションのデータベース接続を終了し、ロールバックします。詳細についてはドキュメント参照してください。
実行プランバインディングを作成するための構文を簡素化する#48876 @ qw4990
TiDB v7.6.0 では、実行プラン バインディングを作成するための構文が簡素化されています。実行プラン バインディングを作成するときに、元の SQL ステートメントを指定する必要がなくなりました。TiDB は、ヒント付きのステートメントに基づいて元の SQL ステートメントを識別します。この改善により、実行プラン バインディングを作成する際の利便性が向上します。例:
CREATE GLOBAL BINDING USING SELECT /*+ merge_join(t1, t2) */ * FROM t1, t2 WHERE t1.id = t2.id;詳細についてはドキュメント参照してください。
TiDB #49237 @ ジグアンの単一行レコードのサイズ制限を動的に変更する機能をサポート
v7.6.0 より前では、トランザクション内の単一行レコードのサイズは、TiDB 構成項目
txn-entry-size-limit
によって制限されていました。サイズ制限を超えると、TiDB はentry too large
エラーを返します。この場合、TiDB 構成ファイルを手動で変更し、変更を有効にするために TiDB を再起動する必要があります。管理オーバーヘッドを削減するために、TiDB v7.6.0 では、txn-entry-size-limit
構成項目の値を動的に変更することをサポートするシステム変数tidb_txn_entry_size_limit
が導入されました。この変数のデフォルト値は0
です。つまり、TiDB はデフォルトで構成項目txn-entry-size-limit
の値を使用します。この変数がゼロ以外の値に設定されている場合、TiDB はトランザクション内の行レコードのサイズをこの変数の値に制限します。この改善により、TiDB を再起動せずにシステム構成を調整する柔軟性が向上しました。詳細についてはドキュメント参照してください。
BRはデフォルトで、ユーザーデータ#48567 @ ボーンチェンジャー #49627 @ リーヴルスなどのシステムテーブルを復元します。
v5.1.0 以降では、スナップショットをバックアップすると、 BR は
mysql
スキーマ内のシステム テーブルを自動的にバックアップしますが、デフォルトではこれらのシステム テーブルを復元しません。v6.2.0 では、 BR は一部のシステム テーブル内のデータの復元をサポートするためにパラメータ--with-sys-table
を追加し、操作の柔軟性を高めています。管理オーバーヘッドをさらに削減し、より直感的なデフォルト動作を提供するために、バージョン 7.6.0 以降、 BR はデフォルトでパラメータ
--with-sys-table
有効にします。つまり、 BR は復元時にデフォルトで一部のシステム テーブル (特にユーザー アカウントとテーブル統計データ) を復元します。この改善により、バックアップと復元の操作がより直感的になり、手動構成の負担が軽減され、全体的な操作エクスペリエンスが向上します。詳細についてはドキュメント参照してください。
可観測性
リソース制御に関する可観測性を強化する#49318 @ 栄光 @ バッファフライ @ ノルーシュ
リソース グループを使用してアプリケーションのワークロードを分離するユーザーが増えるにつれて、リソース コントロールはリソース グループに基づいて拡張データを提供します。これにより、リソース グループのワークロードと設定を監視し、次のような問題を迅速に特定して正確に診断できるようになります。
- 遅いクエリ : リソース グループ名、リソース ユニット (RU) の消費量、およびリソースの待機時間を追加します。
- ステートメント要約表 : リソース グループ名、RU 消費量、リソースの待機時間を追加します。
- システム変数
tidb_last_query_info
に、SQL ステートメントによって消費されたロシア示す新しいエントリru_consumption
を追加します。この変数を使用して、セッション内の最後のステートメントのリソース消費量を取得できます。 - リソース グループに基づいてデータベース メトリックを追加します: QPS/TPS、実行時間 (P999/P99/P95)、障害数、接続数。
- すべてのリソース グループの毎日消費された RU の履歴レコードを記録するために、システム テーブル
request_unit_by_group
を追加します。
詳細については、 遅いクエリを特定する 、 ステートメント要約表 、 リソース管理の主要な監視指標を参照してください。
データ移行
MySQL 8.0 の移行のためのデータ移行 (DM) サポートが一般提供 (GA) される#10405 @ 翻訳者
これまで、DM を使用して MySQL 8.0 からデータを移行することは実験的機能であり、実本番環境では使用できませんでした。TiDB v7.6.0 では、この機能の安定性と互換性が強化され、実本番環境で MySQL 8.0 から TiDB にデータをスムーズかつ迅速に移行できるようになります。v7.6.0 では、この機能が一般提供 (GA) されます。
詳細についてはドキュメント参照してください。
TiCDC は双方向レプリケーション (BDR) モードでの DDL ステートメントのレプリケーションをサポートしています (実験的) #10301 #48519 @ ok江 @ アズドンメン
v7.6.0 以降、TiCDC は双方向レプリケーションが構成された DDL ステートメントのレプリケーションをサポートします。以前は、DDL ステートメントのレプリケーションは TiCDC でサポートされていなかったため、TiCDC の双方向レプリケーションのユーザーは、両方の TiDB クラスターに DDL ステートメントを個別に適用する必要がありました。この機能により、TiCDC ではクラスターに
PRIMARY
BDR ロールを割り当てることができ、そのクラスターから下流のクラスターへの DDL ステートメントのレプリケーションが可能になります。詳細についてはドキュメント参照してください。
TiCDC は、チェンジフィード#10289 @ ホンユンヤンのダウンストリーム同期ステータスのクエリをサポートしています。
v7.6.0 以降、TiCDC では、指定されたレプリケーション タスク (changefeed) のダウンストリーム同期ステータスを照会するための新しい API
GET /api/v2/changefeed/{changefeed_id}/synced
が導入されています。この API を使用すると、TiCDC が受信したアップストリーム データがダウンストリーム システムに完全に同期されているかどうかを判断できます。詳細についてはドキュメント参照してください。
TiCDC は CSV 出力プロトコル#9969 @ 張金鵬87で 3 文字の区切り文字のサポートを追加します
v7.6.0 以降では、CSV 出力プロトコルの区切り文字を 1 ~ 3 文字の長さに指定できます。この変更により、出力内のフィールドを区切るために 2 文字の区切り文字 (
||
や$^
など) または 3 文字の区切り文字 (|@|
など) を使用してファイル出力を生成するように TiCDC を構成できます。詳細についてはドキュメント参照してください。
互換性の変更
注記:
このセクションでは、v7.5.0 から現在のバージョン (v7.6.0) にアップグレードするときに知っておく必要のある互換性の変更について説明します。v7.4.0 以前のバージョンから現在のバージョンにアップグレードする場合は、中間バージョンで導入された互換性の変更も確認する必要がある可能性があります。
MySQL 互換性
- TiDB v7.6.0 より前では、
LOAD DATA
操作はすべての行を単一のトランザクションでコミットするか、トランザクションをバッチでコミットしていましたが、これは MySQL の動作とは少し異なります。v7.6.0 以降、TiDB は MySQL と同じようにトランザクション内のLOAD DATA
処理します。トランザクション内のLOAD DATA
ステートメントは、現在のトランザクションを自動的にコミットしたり、新しいトランザクションを開始したりしなくなりました。さらに、トランザクション内のLOAD DATA
ステートメントを明示的にコミットまたはロールバックできます。さらに、LOAD DATA
ステートメントは TiDB トランザクション モード設定 (楽観的トランザクションまたは悲観的トランザクション) の影響を受けます#49079 @ エキシウム
システム変数
変数名 | タイプを変更 | 説明 |
---|---|---|
tidb_auto_analyze_partition_batch_size | 修正済み | さらにテストを行った後、デフォルト値を1 から128 に変更します。 |
tidb_sysproc_scan_concurrency | 修正済み | 大規模クラスターでは、 scan 操作の同時実行性をANALYZE ニーズに合わせて高く調整できるため、最大値を256 から4294967295 に変更します。 |
tidb_analyze_distsql_scan_concurrency | 新しく追加された | ANALYZE 操作を実行するときのscan 操作の同時実行性を設定します。デフォルト値は4 です。 |
tidb_ddl_version | 新しく追加された | TiDB DDL V2有効にするかどうかを制御します。有効にするには値を2 に設定し、無効にするには1 設定します。デフォルト値は1 です。TiDB DDL V2 を有効にすると、DDL ステートメントは TiDB DDL V2 を使用して実行されます。テーブルを作成するための DDL ステートメントの実行速度は、TiDB DDL V1 と比較して 10 倍向上します。 |
tidb_enable_global_index | 新しく追加された | パーティション化されたGlobal indexes の作成をサポートするかどうかを制御します。デフォルト値はOFF ですGlobal index 現在開発段階にあります。このシステム変数の値を変更することはお勧めしません。 |
tidb_idle_transaction_timeout | 新しく追加された | ユーザー セッション内のトランザクションのアイドル タイムアウトを制御します。ユーザー セッションがトランザクション状態にあり、この変数の値を超える期間アイドル状態のままになると、TiDB はセッションを終了します。デフォルト値0 は無制限を意味します。 |
tidb_opt_enable_fuzzy_binding | 新しく追加された | データベース間バインディング機能を有効にするかどうかを制御します。デフォルト値OFF は、データベース間バインディングが無効であることを意味します。 |
tidb_txn_entry_size_limit | 新しく追加された | TiDB 構成項目performance.txn-entry-size-limit 動的に変更します。これにより、TiDB 内の 1 行のデータのサイズが制限されます。この変数のデフォルト値は0 です。つまり、TiDB はデフォルトで構成項目txn-entry-size-limit の値を使用します。この変数がゼロ以外の値に設定されている場合、 txn-entry-size-limit も同じ値に設定されます。 |
pd_enable_follower_handle_region | 新しく追加された | アクティブPDFollower機能 (実験的) を有効にするかどうかを制御します。値がOFF の場合、TiDB は PD リーダーからのみリージョン情報を取得します。値がON の場合、TiDB はリージョン情報の要求をすべての PD サーバーに均等に分散し、PD フォロワーもリージョン要求を処理できるため、PD リーダーの CPU 負荷が軽減されます。 |
コンフィグレーションファイルのパラメータ
コンフィグレーションファイル | コンフィグレーションパラメータ | タイプを変更 | 説明 |
---|---|---|---|
ティビ | tls-version | 修正済み | デフォルト値は "" です。TiDB のデフォルトでサポートされる TLS バージョンがTLS1.1 以上からTLS1.2 以上に変更されました。 |
ティクヴ | blob-file-compression | 修正済み | Titan で値を圧縮するために使用されるアルゴリズム。値を単位とします。TiDB v7.6.0 以降、デフォルトの圧縮アルゴリズムはzstd です。 |
ティクヴ | rocksdb.defaultcf.titan.min-blob-size | 修正済み | TiDB v7.6.0 以降、新しいクラスターのデフォルト値は32KB です。v7.6.0 にアップグレードする既存のクラスターの場合、デフォルト値は1KB のまま変更されません。 |
ティクヴ | rocksdb.titan.enabled | 修正済み | Titan を有効または無効にします。v7.5.0 以前のバージョンの場合、デフォルト値はfalse です。v7.6.0 以降では、新しいクラスターのみのデフォルト値はtrue です。v7.6.0 以降のバージョンにアップグレードされた既存のクラスターは、元の構成を保持します。 |
ティクヴ | gc.num-threads | 新しく追加された | enable-compaction-filter false に設定すると、このパラメータは GC スレッドの数を制御します。デフォルト値は1 です。 |
ティクヴ | raftstore.periodic-full-compact-start-times | 新しく追加された | TiKV が定期的な完全圧縮を開始する特定の時間を設定します。デフォルト値[] は、定期的な完全圧縮が無効であることを意味します。 |
ティクヴ | raftstore.periodic-full-compact-start-max-cpu | 新しく追加された | TiKV 定期完全圧縮の最大 CPU 使用率を制限します。デフォルト値は0.1 です。 |
ティクヴ | zstd-dict-size | 新しく追加された | zstd 辞書圧縮サイズを指定します。デフォルト値は"0KB" で、 zstd 辞書圧縮を無効にすることを意味します。 |
TiFlash | logger.level | 修正済み | ログ記録のコストを削減するために、デフォルト値を"debug" から"INFO" に変更します。 |
TiDB Lightning | tidb.pd-addr | 修正済み | PD サーバーのアドレスを設定します。v7.6.0 以降、TiDB は複数の PD アドレスの設定をサポートします。 |
TiDB Lightning | block-size | 新しく追加された | 物理インポート モード ( backend='local' ) でローカル ファイルをソートするための I/O ブロック サイズを制御します。デフォルト値は16KiB です。ディスク IOPS がボトルネックになっている場合は、この値を増やすとパフォーマンスが向上します。 |
BR | --granularity | 新しく追加された | --granularity="coarse-grained" 指定して、粗粒度のリージョン散布アルゴリズム (実験的) を使用します。これにより、大規模なリージョンシナリオでの復元速度が向上します。 |
ティCDC | compression | 新しく追加された | REDO ログ ファイルを圧縮する動作を制御します。 |
ティCDC | sink.cloud-storage-config | 新しく追加された | データをオブジェクトstorageに複製するときに、履歴データの自動クリーンアップを設定します。 |
システムテーブル
- TiDB でサポートされているすべてのキーワードの情報を表示するための新しいシステム テーブル
INFORMATION_SCHEMA.KEYWORDS
を追加します。 - システム テーブル
INFORMATION_SCHEMA.SLOW_QUERY
に、リソース制御に関連する次のフィールドを追加します。Resource_group
: ステートメントがバインドされているリソース グループ。Request_unit_read
: ステートメントによって消費された読み取り RU の合計。Request_unit_write
: ステートメントによって消費された書き込み RU の合計。Time_queued_by_rc
: ステートメントが利用可能なリソースを待機する合計時間。
オフラインパッケージの変更
v7.6.0 以降、 TiDB-community-server
バイナリパッケージには、プロキシコンポーネントTiプロキシのインストール パッケージであるtiproxy-{version}-linux-{arch}.tar.gz
が含まれるようになりました。
廃止された機能
- TLSv1.0 および TLSv1.1 プロトコルのサポートは TiDB v7.6.0 では非推奨となり、v8.0.0 では削除されます。TLSv1.2 または TLSv1.3 にアップグレードしてください。
- 実行プランのベースライン進化機能は、TiDB v8.0.0 で廃止されます。同等の機能は、以降のバージョンで再設計されます。
tidb_disable_txn_auto_retry
システム変数は TiDB v8.0.0 で廃止されます。それ以降、TiDB は楽観的トランザクションの自動再試行をサポートしなくなります。
改善点
ティビ
- 非バイナリ照合順序が設定され、クエリに
LIKE
含まれる場合、オプティマイザは実行効率を向上させるためにIndexRangeScan
生成します#48181 #49138 @ 時間と運命 - 特定のシナリオで
OUTER JOIN
をINNER JOIN
に変換する能力を強化する#49616 @ qw4990 - ノードが再起動されるシナリオで、Distributed eXecution Framework (DXF) タスクのバランスを改善します#47298 @ うわー
- 通常の
ADD INDEX
タスク#47758 @ タンジェンタにフォールバックする代わりに、複数の高速化されたADD INDEX
DDL タスクをキューに入れて実行できるようにします。 ALTER TABLE ... ROW_FORMAT
#48754 @ ホーキングレイの互換性を向上させるCANCEL IMPORT JOB
文を同期文#48736 @ D3ハンターに変更します。- 空のテーブルにインデックスを追加する速度を向上#49682 @ ジムララ
- 相関サブクエリの列が上位レベルの演算子によって参照されていない場合、相関サブクエリは直接削除できます#45822 @ キング・ディラン
EXCHANGE PARTITION
操作により、統計#47354 @ ハイラスティンのメンテナンス更新がトリガーされます- TiDBは、連邦情報処理標準(FIPS) #47948 @ 天菜まおの要件を満たすバイナリファイルの構築をサポートしています。
- いくつかの型変換を処理する際の TiDB 実装を最適化し、関連する問題を修正#47945 #47864 #47829 #47816 @ ヤンケオ @ lcwangchao
- スキーマバージョンを取得する際、TiDBはデフォルトでKVタイムアウト機能を使用して読み取り、遅いメタリージョンリーダーの読み取りがスキーマバージョンの更新に与える影響を軽減します#48125 @ 翻訳
- 非バイナリ照合順序が設定され、クエリに
ティクヴ
PD
TiFlash
- ディスクパフォーマンスジッターによる読み取りレイテンシーへの影響を軽減#8583 @ ジェイソン・ファン
- バックグラウンドGCタスクが読み取りおよび書き込みタスクのレイテンシーに与える影響を軽減する#8650 @ ジェイソン・ファン
- ストレージとコンピューティングの分離アーキテクチャで同一のデータ読み取り操作をマージして、高同時実行性#6834 @ ジンヘリンでのデータスキャンパフォーマンスを向上させることをサポートします。
JOIN ON
#47424 @ ゲンリキにJOIN KEY等価条件のみが含まれる場合のSEMI JOIN
とLEFT OUTER SEMIJOIN
の実行パフォーマンスを最適化します
ツール
バックアップと復元 (BR)
ティCDC
- 並列処理#10098 @ チャールズ・チュン96を増やすことで、TiCDC がオブジェクトstorageにデータを複製する際のパフォーマンスが向上します。
sink-uri
構成#10106 @ 3エースショーハンドでcontent-compatible=true
設定することにより、 TiCDC Canal-JSON コンテンツ形式公式Canal出力のコンテンツフォーマットと互換性があるの作成をサポートします。
TiDB データ移行 (DM)
TiDB Lightning
バグ修正
ティビ
- TiDBがパニックを起こしてエラーを報告する問題を修正
invalid memory address or nil pointer dereference
#42739 @ Cbcウェストウルフ - DDL
jobID
が 0 #46296 @ ジフハウスに復元されたときに発生する TiDB ノードpanicの問題を修正しました。 - 同じクエリプランで
PLAN_DIGEST
値が#47634 @ キング・ディランの場合に異なる問題を修正 - 最初のサブノードとしてDUALテーブルを使用して
UNION ALL
実行するとエラー#48755 @ ウィノロスが発生する可能性がある問題を修正しました - 共通テーブル式 (CTE) を含むクエリで、
tidb_max_chunk_size
小さい値#48808 @ グオシャオゲに設定されている場合にruntime error: index out of range [32] with length 32
報告される問題を修正しました。 AUTO_ID_CACHE=1
#46324 @ 天菜まお使用時の Goroutine リークの問題を修正- MPP によって計算された
COUNT(INT)
の結果が正しくない可能性がある問題を修正#48643 @ アイリンキッド - パーティション列タイプが
DATETIME
#48814 @ クレイジーcs520の場合にALTER TABLE ... LAST PARTITION
実行が失敗する問題を修正 - データの末尾にスペースが含まれている場合に
LIKE
で_
ワイルドカードを使用すると、クエリ結果が不正確になる可能性がある問題を修正しました#48983 @ 時間と運命 tidb_server_memory_limit
#48741 @ 徐懐玉による長期メモリ圧迫により TiDB の CPU 使用率が高くなる問題を修正ENUM
型の列を結合キー#48991 @ ウィノロスとして使用するとクエリ結果が正しくなくなる問題を修正- メモリ制限を超えたときに CTE を含むクエリが予期せず停止する問題を修正#49096 @ アイリンキッド
- 監査ログ用のエンタープライズプラグインを使用すると、TiDBサーバーが大量のリソースを消費する可能性がある問題を修正#49273 @ lcwangchao
- 特定のシナリオでオプティマイザがTiFlash選択パスを DUAL テーブルに誤って変換する問題を修正#49285 @ アイリンキッド
WITH RECURSIVE
CTE を含むUPDATE
またはDELETE
ステートメントで誤った結果が生成される可能性がある問題を修正しました#48969 @ ウィノロス- IndexHashJoin 演算子を含むクエリがメモリが
tidb_mem_quota_query
#49033 @ 徐懐玉を超えると停止する問題を修正しました。 - 非厳密モード(
sql_mode = ''
)で、INSERT
実行中に切り捨てが行われても、 #49369 @ 天菜まおエラーが報告される問題を修正しました。 - CTEクエリが再試行プロセス#46522 @ 天菜まお中にエラー
type assertion for CTEStorageMap failed
を報告する可能性がある問題を修正 - ネストされた
UNION
クエリ#49377 @ アイリンキッドでLIMIT
とORDER BY
無効になる可能性がある問題を修正しました ENUM
またはSET
タイプの無効な値を解析すると、SQL ステートメント エラー#49487 @ ウィノロスが直接発生する問題を修正しました。- Golang の暗黙的な変換アルゴリズム#49801 @ qw4990によって発生する統計の構築における過度の統計エラーの問題を修正
- 一部のタイムゾーンで夏時間が正しく表示されない問題を修正#49586 @ 金星の上
- テーブルが#48869 @ 天菜まおと多数ある場合に、テーブルが
AUTO_ID_CACHE=1
の場合に gRPC クライアント リークが発生する可能性がある問題を修正しました。 - 正常なシャットダウン中に TiDBサーバーがpanicになる可能性がある問題を修正#36793 @ bb7133
CommonHandle
#47687 @ 定義2014を含むテーブルを処理するときにADMIN RECOVER INDEX
ERROR 1105
報告する問題を修正しましたALTER TABLE t PARTITION BY
実行時に配置ルールを指定するとエラーERROR 8239
#48630 @ ミョンス報告される問題を修正INFORMATION_SCHEMA.CLUSTER_INFO
のSTART_TIME
列目タイプが#45221 @ ドヴェーデンでは有効ではない問題を修正INFORMATION_SCHEMA.COLUMNS
の無効なEXTRA
列タイプがエラーData Too Long, field len 30, data len 45
#42030 @ タンジェンタを引き起こす問題を修正しましたIN (...)
INFORMATION_SCHEMA.STATEMENTS_SUMMARY
#33559 @ キング・ディランで異なるプランダイジェストを引き起こす問題を修正TIME
型をYEAR
型に変換すると、返される結果にTIME
と#48557 @ ヤンケオ混在する問題を修正しました。tidb_enable_collect_execution_info
無効にするとコプロセッサキャッシュがpanicになる問題を修正#48212 @ あなた06shuffleExec
予期せず終了すると TiDB がクラッシュする問題を修正#48230 @ うわー- 静的
CALIBRATE RESOURCE
Prometheusデータ#49174 @ 栄光に依存している問題を修正 - 日付に大きな間隔を追加すると、誤った結果が返される問題を修正しました。修正後は、無効なプレフィックスまたは文字列
true
を持つ間隔はゼロとして扱われ、MySQL 8.0 #49227 @ lcwangchaoと一致します。 ROW
関数がnull
型を誤って推論し、予期しないエラー#49015 @ うわーが発生する問題を修正しました。ILIKE
関数がいくつかのシナリオでデータ競合を引き起こす可能性がある問題を修正#49677 @ lcwangchaoSTREAM_AGG()
CI #49902 @ うわーを誤って処理したためにクエリ結果が正しくない問題を修正しました- バイトを
TIME
#47346 @ うわーに変換するときにエンコードが失敗する問題を修正 CHECK
制約のENFORCED
オプションの動作がMySQL 8.0 #47567 #47631 @ ジフハウスと一致しない問題を修正CHECK
制約の DDL ステートメントが#47632 @ ジフハウスでスタックする問題を修正しました- メモリ不足のため DDL ステートメントのインデックス追加が失敗する問題を修正#47862 @ GMHDBJD
ADD INDEX
実行中にクラスターをアップグレードすると、データがインデックス#46306 @ ジムララと矛盾する可能性がある問題を修正しました。tidb_mem_quota_query
システム変数を更新した後にADMIN CHECK
実行するとERROR 8175
#49258 @ タンジェンタ返される問題を修正しましたALTER TABLE
外部キーによって参照される列の型を変更すると、DECIMAL
精度の変更がエラーとして報告されない問題を修正#49836 @ ヨシキポムALTER TABLE
外部キーによって参照される列の型を変更すると、INTEGER
長さの変更が誤ってエラーとして報告される問題を修正#47702 @ ヨシキポム- いくつかのシナリオで式インデックスが除数が 0 #50053 @ lcwangchaoであることを検出しない問題を修正しました
- 多数のテーブル#50077 @ ジムララを処理するときに TiDB ノードが OOM エラーに遭遇する可能性がある問題を軽減します。
- クラスターのローリング再起動中に DDL が実行状態のままになる問題を修正#50073 @ タンジェンタ
PointGet
またはBatchPointGet
演算子を使用してパーティション テーブルのグローバル インデックスにアクセスすると結果が不正確になる可能性がある問題を修正しました#47539 @ L-メープル- 生成された列のインデックスが表示可能#47766 @ アイリンキッドに設定されている場合、MPP プランが選択されない可能性がある問題を修正しました。
LIMIT
OR
に押し下げられない問題を修正しましたIndex Merge
#48588 @ アイリンキッドと入力します。- BRインポート#46527 @ qw4990後に
mysql.bind_info
テーブルに重複した組み込み行が存在する可能性がある問題を修正 - パーティションが削除された後にパーティションテーブルの統計が期待どおりに更新されない問題を修正#48182 @ ハイラスティン
- パーティションテーブル#48713 @ ホーキングレイのグローバル統計の同時マージ中にエラーが返される可能性がある問題を修正しました。
- PADDING SPACE #48821 @ 時間と運命の列のインデックス範囲スキャンに
LIKE
演算子を使用すると、クエリ結果が正しくなくなる可能性がある問題を修正しました。 - 生成された列がメモリ上で同時読み取りと書き込みをトリガーし、データ競合#44919 @ タンジェンタが発生する可能性がある問題を修正しました。
WITH 0 TOPN
(トップN統計を収集しないことを示す) が指定されている場合でも、ANALYZE TABLE
トップ1統計を収集する可能性がある問題を修正#49080 @ ホーキングレイ- 不正なオプティマイザヒントによって有効なヒントが無効になる可能性がある問題を修正#49308 @ ホーキングレイ
- ハッシュパーティションテーブルの統計が、パーティションの追加、削除、再編成、または
TRUNCATE
パーティション#48235 #48233 #48226 #48231 @ ハイラスティンを行ったときに、それに応じて更新されない問題を修正しました。 - 自動統計更新の時間枠を設定した後、その時間枠外でも統計が更新される可能性がある問題を修正#49552 @ ホーキングレイ
- パーティションテーブルを非パーティションテーブルに変換したときに古い統計情報が自動的に削除されない問題を修正#49547 @ ハイラスティン
TRUNCATE TABLE
#49663 @ ハイラスティンを使用してパーティションテーブルからデータをクリアしたときに古い統計が自動的に削除されない問題を修正しました。- クエリがソートを強制するオプティマイザヒント(
STREAM_AGG()
など)を使用し、実行プランにIndexMerge
#49605 @ アイリンキッドが含まれている場合に、強制ソートが無効になる可能性がある問題を修正しました。 - ヒストグラムの境界に
NULL
#49823 @ アイリンキッドが含まれている場合、ヒストグラム統計が読み取り可能な文字列に解析されない可能性がある問題を修正しました。 GROUP_CONCAT(ORDER BY)
構文を含むクエリを実行するとエラー#49986 @ アイリンキッドが返される可能性がある問題を修正しましたSQL_MODE
が厳密でない場合に、UPDATE
、DELETE
、INSERT
ステートメントが警告ではなくオーバーフロー エラーを返す問題を修正しました#49137 @ ヤンケオ- テーブルに複数値インデックスと非バイナリ型文字列#49680 @ ヤンケオで構成される複合インデックスがある場合にデータを挿入できない問題を修正
- 複数レベルのネストされた
UNION
クエリのLIMIT
無効になる可能性がある問題を修正#49874 @ 定義2014 BETWEEN ... AND ...
条件でパーティション テーブルをクエリすると誤った結果が返される問題を修正#49842 @ 定義2014REPLACE INTO
文#34325 @ ヤンケオでヒントが使用できない問題を修正- ハッシュパーティションテーブル#50044 @ 定義2014をクエリするときに TiDB が間違ったパーティションを選択する可能性がある問題を修正しました。
- 圧縮を有効にした状態でMariaDB Connector/Jを使用する際に発生する接続エラーを修正#49845 @ 猫のみ
- TiDBがパニックを起こしてエラーを報告する問題を修正
ティクヴ
- 破損した SST ファイルが他の TiKV ノードに広がり、TiKV がpanicを起こす可能性がある問題を修正しました#15986 @ コナー1996
- オンラインの安全でないリカバリがマージ中止#15580 @ v01dスター処理できない問題を修正
- #15817 @ コナー1996にスケールアウトするときに DR 自動同期のジョイント状態がタイムアウトする可能性がある問題を修正しました。
- Titanの
blob-run-mode
がオンライン#15978 @ トニー更新できない問題を修正 - 解決済みのTSが2時間ブロックされる可能性がある問題を修正#11847 #15520 #39130 @ 金星の上
notLeader
またはregionNotFound
#15712 @ ヒューシャープに遭遇するとフラッシュバックが停止する可能性がある問題を修正しました- TiKV の実行速度が非常に遅い場合、リージョン#16111と金星の上マージ後にpanicが発生する可能性がある問題を修正しました。
- GC が期限切れのロック#15066 @ 翻訳をスキャンするときに TiKV がメモリ内の悲観的ロックを読み取れない問題を修正
- Titan モニタリングの BLOB ファイル サイズが正しくない問題を修正#15971 @ コナー1996
- TiCDC を使用して大きなテーブルを複製すると、TiKV が OOM #16035 @ 金星の上になる可能性がある問題を修正しました。
DECIMAL
算術乗算切り捨て#16268 @ ソロッツを処理するときに TiDB と TiKV が矛盾した結果を生成する可能性がある問題を修正しました。cast_duration_as_time
誤った結果を返す可能性がある問題を修正#16211 @ ゲンリキ- TiKV がブラジルとエジプトのタイムゾーンを誤って変換する問題を修正#16220 @ 金星の上
- gRPC スレッドが
is_shutdown
#16236 @ ピンギュをチェックしているときに TiKV がpanicになる可能性がある問題を修正しました
PD
TiFlash
- クエリ#8447 @ ジンヘリン中にTiFlash がメモリ制限に遭遇した場合のメモリリークの問題を修正しました。
FLASHBACK DATABASE
#8450 @ ジェイソン・ファンを実行した後もTiFlashレプリカのデータがガベージ コレクションされる問題を修正しました。- クエリが遅いためにメモリ使用量が大幅に増加する問題を修正#8564 @ ジンヘリン
CREATE TABLE
とDROP TABLE
#1664 @ ジェイソン・ファンを頻繁に実行するシナリオで、一部のTiFlashレプリカデータがRECOVER TABLE
またはFLASHBACK TABLE
で回復できない問題を修正ColumnRef in (Literal, Func...)
#8631 @ ロイド・ポティガーのようなフィルタリング条件でクエリを実行したときにクエリ結果が正しくない問題を修正しました- TiFlash が同時 DDL 実行中に競合に遭遇した場合のTiFlashpanic問題を修正#8578 @ ジェイソン・ファン
- 分散storageおよびコンピューティングアーキテクチャ#8519 @ ジェイソン・ファンでTiFlash がオブジェクトstorageデータの GC 所有者を選択できない可能性がある問題を修正しました。
lowerUTF8
とupperUTF8
関数で、大文字と小文字が異なるバイト#8484 @ ゲンリキを占めることができない問題を修正しました。ENUM
値が 0 #8311 @ ソロッツの場合にTiFlash がENUM
誤って処理する問題を修正しましたINET_NTOA()
式#8211 @ ソロッツの非互換性の問題を修正- ストリーム読み取り#8505 @ ゲンリキ中に複数のパーティション テーブルをスキャンするときに発生する可能性のある OOM 問題を修正しました。
- 短いクエリが正常に実行されると過剰な情報ログ#8592 @ 風の話し手が出力される問題を修正しました
- TiFlashが停止時にクラッシュする可能性がある問題を修正#8550 @ グオシャオゲ
- 定数文字列パラメータ#8604 @ 風の話し手を含む
GREATEST
またはLEAST
関数で発生する可能性のあるランダムな無効なメモリアクセスの問題を修正しました。
ツール
バックアップと復元 (BR)
- BR が外部storageファイル#48452 @ 3エースショーハンドに対して誤った URI を生成する問題を修正
- タスク初期化中にPDへの接続に失敗すると、ログバックアップタスクは開始できるが正常に動作しない問題を修正#16056 @ ユジュンセン
- ログバックアップタスクがメモリリークに遭遇し、起動後に正常に実行されない可能性がある問題を修正#16070 @ ユジュンセン
- PITRプロセス中にシステムテーブル
mysql.gc_delete_range
にデータを挿入するとエラー#49346 @ リーヴルスが返される問題を修正しました。 - 古いバージョン#49466 @ 3ポインターのバックアップからデータを復元するときに
Unsupported collation
エラーが報告される問題を修正しました - 特定のシナリオでスナップショットを介してユーザー テーブルが回復された後に権限がタイムリーに更新されない問題を修正#49394 @ リーヴルス
ティCDC
- 特定のシナリオで
DELETE
ステートメントを複製するときに、WHERE
句が主キーを条件として使用しない問題を修正しました#9812 @ アズドンメン - オブジェクトstorageサービス#10137 @ スドジにデータを複製するときに TiCDCサーバーがpanicになる可能性がある問題を修正しました
kv-client
初期化#10095 @ 3エースショーハンド中に発生する可能性のあるデータ競合問題を修正- 特定の特殊なシナリオで TiCDC が TiKV との接続を誤って閉じる問題を修正#10239 @ ヒック
- アップストリーム#9739 @ ヒックで損失のある DDL ステートメントを実行するときに TiCDCサーバーがpanicになる可能性がある問題を修正しました。
- TiCDC がデータを下流の MySQL #10334 @ 張金鵬87に複製するときに
checkpoint-ts
スタックする可能性がある問題を修正しました。
- 特定のシナリオで
TiDB データ移行 (DM)
寄稿者
TiDB コミュニティの以下の貢献者に感謝いたします。