TiDB 7.5.0 リリースノート
発売日: 2023年12月1日
TiDB バージョン: 7.5.0
クイックアクセス: クイックスタート | 実稼働環境への導入
TiDB 7.5.0 は長期サポートリリース (LTS) です。
以前の LTS 7.1.0 と比較して、 7.5.0 には、 7.2.0-DMR 、 7.3.0-DMR 、 7.4.0-DMRでリリースされた新機能、改善、バグ修正が含まれています。 7.1.x から 7.5.0 にアップグレードする場合、 TiDB リリースノート PDFをダウンロードして、2 つの LTS バージョン間のすべてのリリース ノートを表示できます。 次の表に、 7.2.0 から 7.5.0 までのハイライトの一部を示します。
機能の詳細
スケーラビリティ
分散実行フレームワーク (DXF) が有効な場合に、
ADD INDEXまたはIMPORT INTOタスクを分散実行するための TiDB ノードの指定と分離をサポート#46258 @ うわーリソースを大量に消費するクラスターで
ADD INDEXまたはIMPORT INTOタスクを並行して実行すると、大量の TiDB ノード リソースが消費され、クラスターのパフォーマンスが低下する可能性があります。既存のサービスへのパフォーマンスへの影響を回避するために、v7.4.0 では、 TiDB 分散実行フレームワーク (DXF)の下にある各 TiDB ノードのサービス スコープを制御するための実験的機能としてシステム変数tidb_service_scope導入されています。複数の既存の TiDB ノードを選択するか、新しい TiDB ノードの TiDB サービス スコープを設定すると、分散実行されるすべてのADD INDEXおよびIMPORT INTOタスクはこれらのノードでのみ実行されます。v7.5.0 では、この機能が一般提供 (GA) されます。詳細についてはドキュメント参照してください。
パフォーマンス
TiDB 分散実行フレームワーク (DXF) が一般提供 (GA) され、並列実行#45719 @ 翻訳:における
ADD INDEXおよびIMPORT INTOタスクのパフォーマンスと安定性が向上しました。v7.1.0 で導入された DXF が GA になりました。TiDB v7.1.0 より前のバージョンでは、1 つの TiDB ノードのみが同時に DDL タスクを実行できました。v7.1.0 以降では、DXF の下で複数の TiDB ノードが同じ DDL タスクを並列に実行できます。v7.2.0 以降では、DXF は複数の TiDB ノードが同じ
IMPORT INTOタスクを並列に実行することをサポートするため、TiDB クラスターのリソースをより有効に活用し、DDL およびIMPORT INTOタスクのパフォーマンスを大幅に向上できます。さらに、TiDB ノードを増やすことで、これらのタスクのパフォーマンスを直線的に向上させることもできます。DXF を使用するには、
tidb_enable_dist_task値をONに設定します。SET GLOBAL tidb_enable_dist_task = ON;詳細についてはドキュメント参照してください。
単一のSQL文で複数のインデックスを追加するパフォーマンスを向上する#41602 @ タンジェンタ
v7.5.0 より前では、単一の SQL ステートメントで複数のインデックス (
ADD INDEX) を追加すると、パフォーマンスは個別の SQL ステートメントを使用して複数のインデックスを追加する場合と同等でした。v7.5.0 以降では、単一の SQL ステートメントで複数のインデックスを追加する場合のパフォーマンスが大幅に向上しています。特に幅の広いテーブルを使用するシナリオでは、内部テスト データによると、パフォーマンスが最大 94% 向上することが示されています。
DB操作
DDL ジョブは一時停止と再開操作をサポートします (GA) #18015 @ ゴドゥム
v7.2.0 で導入された DDL ジョブの一時停止および再開操作が一般提供 (GA) されます。これらの操作により、リソースを大量に消費する DDL ジョブ (インデックスの作成など) を一時停止して、リソースを節約し、オンライン トラフィックへの影響を最小限に抑えることができます。リソースが許せば、DDL ジョブをキャンセルして再開することなく、シームレスに再開できます。この機能により、リソースの使用率が向上し、ユーザー エクスペリエンスが強化され、スキーマ変更プロセスが簡素化されます。
ADMIN PAUSE DDL JOBSまたはADMIN RESUME DDL JOBS使用して複数の DDL ジョブを一時停止および再開できます。ADMIN PAUSE DDL JOBS 1,2; ADMIN RESUME DDL JOBS 1,2;詳細についてはドキュメント参照してください。
BRは統計情報のバックアップと復元をサポートします#48008 @ リーヴルス
TiDB v7.5.0 以降、br コマンドライン ツールでは、データベース統計のバックアップと復元を行うための
--ignore-statsパラメータが導入されています。このパラメータをfalseに設定すると、br コマンドライン ツールは、列、インデックス、およびテーブルの統計のバックアップと復元をサポートします。この場合、バックアップから復元された TiDB データベースの統計収集タスクを手動で実行したり、自動収集タスクの完了を待ったりする必要はありません。この機能により、データベースのメンテナンス作業が簡素化され、クエリのパフォーマンスが向上します。詳細についてはドキュメント参照してください。
可観測性
TiDBダッシュボードはTiKV #15927 @ コナー1996のヒーププロファイリングをサポートします
以前は、TiKV OOM または高メモリ使用量の問題に対処するには、通常、インスタンス環境でヒープ プロファイルを生成するために
jeprofを手動で実行する必要がありました。v7.5.0 以降、TiKV ではヒープ プロファイルのリモート処理が可能になります。ヒープ プロファイルのフレーム グラフとコール グラフに直接アクセスできるようになりました。この機能は、Go ヒープ プロファイリングと同じシンプルで使いやすいエクスペリエンスを提供します。詳細についてはドキュメント参照してください。
データ移行
IMPORT INTOSQL文(GA) #46704 @ D3ハンターをサポートv7.5.0 では、
IMPORT INTOSQL ステートメントが一般提供 (GA) されます。このステートメントは、 TiDB Lightningの物理インポートモード機能を統合し、CSV、SQL、PARQUET などの形式のデータを TiDB の空のテーブルにすばやくインポートできるようにします。このインポート方法により、 TiDB Lightningを個別に展開および管理する必要がなくなり、データ インポートの複雑さが軽減され、インポートの効率が大幅に向上します。詳細についてはドキュメント参照してください。
データ移行 (DM) は、互換性のない (データの一貫性を損なう) DDL 変更のブロックをサポートします#9692 @ GMHDBJD
v7.5.0 より前の DM Binlog Filter 機能では、指定されたイベントのみを移行またはフィルタリングすることができ、粒度は比較的粗いものでした。たとえば、
ALTERなどの大きな粒度の DDL イベントのみをフィルタリングできます。この方法は、一部のシナリオでは制限されています。たとえば、アプリケーションではADD COLUMN許可されますがDROP COLUMN許可されませんが、以前の DM バージョンでは、どちらもALTERイベントでフィルタリングされます。このような問題に対処するため、v7.5.0 では、サポートされる DDL イベントの粒度が改良され、
MODIFY COLUMNフィルタリング (列のデータ型の変更)、DROP COLUMNなどの、データ損失、データの切り捨て、精度の低下につながる細かい DDL イベントがサポートされるようになりました。必要に応じて構成できます。この機能では、互換性のない DDL 変更のブロックや、そのような変更のエラーの報告もサポートされているため、下流のアプリケーション データに影響を与えないように、適切なタイミングで手動で介入できます。詳細についてはドキュメント参照してください。
継続的なデータ検証のためのリアルタイムチェックポイント更新をサポート#8463 @ リチュンジュ
v7.5.0 より前では、 継続的なデータ検証機能は DM から下流へのレプリケーション中にデータの一貫性を保証します。これは、上流データベースから TiDB へのビジネス トラフィックの切り替えの基盤として機能します。ただし、レプリケーションの遅延や不整合データの再検証の待機など、さまざまな要因により、継続的な検証チェックポイントは数分ごとに更新する必要があります。これは、切り替え時間が数十秒に制限されている一部のビジネス シナリオでは受け入れられません。
継続的なデータ検証のためのチェックポイントのリアルタイム更新の導入により、上流データベースからbinlogの位置を提供できるようになりました。継続的な検証プログラムは、メモリ内でこのbinlogの位置を検出すると、数分ごとにチェックポイントを更新するのではなく、すぐにチェックポイントを更新します。したがって、すぐに更新されるこのチェックポイントに基づいて、カットオフ操作をすばやく実行できます。
詳細についてはドキュメント参照してください。
互換性の変更
注記:
このセクションでは、v7.4.0 から現在のバージョン (v7.5.0) にアップグレードするときに知っておく必要のある互換性の変更について説明します。v7.3.0 以前のバージョンから現在のバージョンにアップグレードする場合は、中間バージョンで導入された互換性の変更も確認する必要がある可能性があります。
システム変数
コンフィグレーションファイルのパラメータ
オフラインパッケージの変更
v7.5.0 以降では、 TiDB-community-toolkit バイナリパッケージから次のコンテンツが削除されます。
tikv-importer-{version}-linux-{arch}.tar.gzmydumperspark-{version}-any-any.tar.gztispark-{version}-any-any.tar.gz
廃止された機能
マイダンパーは v7.5.0 で非推奨となり、その機能のほとんどはDumplingに置き換えられました。Mydumper の代わりにDumpling を使用することを強くお勧めします。
TiKV インポーターは v7.5.0 では非推奨です。代わりにTiDB Lightningの物理インポートモード使用することを強くお勧めします。
TiDB v7.5.0 以降、 TiDBBinlogのデータ レプリケーション機能のテクニカル サポートは提供されなくなりました。データ レプリケーションの代替ソリューションとしてティCDC使用することを強くお勧めします。TiDB Binlog v7.5.0 では、ポイントインタイム リカバリ (PITR) シナリオが引き続きサポートされていますが、このコンポーネントは将来のバージョンでは完全に廃止される予定です。データ復旧の代替ソリューションとしてピトル使用することを推奨します。
統計の
Fast Analyze機能 (実験的) は、v7.5.0 で非推奨になりました。統計の増分コレクション機能 (実験的) は、v7.5.0 で非推奨になりました。
改善点
ティビ
- GlobalStats のマージの同時実行モデル#47219最適化します
tidb_enable_async_merge_global_stats導入して統計の同時読み込みとマージを可能にし、パーティション テーブルでの GlobalStats の生成を高速化します。GlobalStats のマージのメモリ使用量を最適化して、OOM を回避し、メモリ割り当てを削減します。3 @ ホーキングレイ ANALYZEプロセスを最適化しますtidb_build_sampling_stats_concurrency導入してANALYZEの同時実行性をより適切に制御し、リソース消費を削減しますANALYZEのメモリ使用量を最適化してメモリ割り当てを削減し、中間結果を再利用することで頻繁な GC を回避します#47275 @ ホーキングレイ- 配置ポリシーの使用を最適化: ポリシーの範囲をグローバルに設定できるようにサポートし、一般的なシナリオの構文サポートを改善します#45384 @ ノルーシュ
tidb_ddl_enable_fast_reorgを有効にしてインデックスを追加するパフォーマンスを改善しました。内部テストでは、v7.5.0 は v6.5.0 と比較してパフォーマンスが最大 62.5% 向上しました#47757 @ タンジェンタ
- GlobalStats のマージの同時実行モデル#47219最適化します
ティクヴ
PD
ツール
バグ修正
ティビ
- 非整数クラスター化インデックス#47350 @ タンジェンタでのテーブル分割操作を禁止する
- タイムゾーン情報が正しくない時間フィールドをエンコードする問題を修正#46033 @ タンジェンタ
- ソート演算子によりスピル処理中に TiDB がクラッシュする可能性がある問題を修正#47538 @ 風の話し手
- TiDBが
GROUP_CONCAT#41957 @ アイリンキッドのクエリに対してCan't find columnを返す問題を修正 batch-clientinclient-go#47691 @ クレイジーcs520のpanic問題を修正INDEX_LOOKUP_HASH_JOIN#47788 @ シーライズでのメモリ使用量の推定が不正確になる問題を修正- 長期間オフラインだったTiFlashノードの再参加によって生じるワークロードの不均一性の問題を修正#35418 @ 風の話し手
- HashJoin 演算子がプローブ#48082 @ うわー実行するときにチャンクを再利用できない問題を修正しました。
COALESCE()関数がDATEの型パラメータ#46475 @ 翻訳者に対して誤った結果型を返す問題を修正しました- サブクエリを含む
UPDATEステートメントが誤って PointGet #48171 @ ハイラスティンに変換される問題を修正しました - キャッシュされた実行プランに日付型と
unix_timestamp#48165 @ qw4990の比較が含まれている場合に誤った結果が返される問題を修正しました。 - 集計関数またはウィンドウ関数を含むデフォルトのインライン共通テーブル式 (CTE) が再帰 CTE #47881 @ エルサ0520によって参照されるとエラーが報告される問題を修正しました
- ウィンドウ関数#46177 @ qw4990によって導入されたソートを減らすために、オプティマイザが誤って IndexFullScan を選択する問題を修正しました。
- CTE #47881 @ ウィノロスの条件プッシュダウンにより、CTE への複数の参照が誤った結果になる問題を修正しました。
- MySQL 圧縮プロトコルが大量のデータ (>=16M) を処理できない問題を修正#47152 #47157 #47161 @ ドヴェーデン
- TiDB が
systemd#47442 @ ホーキングレイで起動したときにcgroupリソース制限を読み取らない問題を修正しました
ティクヴ
PD
evict-leader-scheduler構成#6897 @ ヒューシャープ失う可能性がある問題を修正- ストアがオフラインになった後、その統計の監視メトリックが削除されない問題を修正#7180 @ rleungx
- 配置ルールの構成が複雑な場合に、データレプリケーション自動同期 (DR 自動同期) モードを採用しているクラスターで
canSyncとhasMajority誤って計算される可能性がある問題を修正しました#7201 @ ディスク - ルールチェッカーが配置ルール#7185 @ ノルーシュの設定に従って学習者を追加しない問題を修正しました。
- TiDBダッシュボードがPD
traceデータを正しく読み取れない問題を修正#7253 @ ノルーシュ - 内部的に取得された空の領域が原因でPDがpanic可能性がある問題を修正#7261 @ 翻訳者
- データレプリケーション自動同期(DR自動同期)モード#7221 @ ディスクを採用しているクラスターで
available_stores誤って計算される問題を修正 - TiKV ノードが利用できない場合に PD が通常のピアを削除する可能性がある問題を修正#7249 @ 翻訳者
- 大規模なクラスターに複数の TiKV ノードを追加すると、TiKVハートビートレポートが遅くなったり停止したりする可能性がある問題を修正しました#7248 @ rleungx
TiFlash
ツール
バックアップと復元 (BR)
ティCDC
- オブジェクト ストア シンク#10041 @ チャールズ・チュン96にデータを複製するときに NFS ディレクトリにアクセスすることによって発生するパフォーマンスの問題を修正しました。
claim-checkが有効になっているときにstorageパスのスペルが間違っている問題を修正#10036 @ 3エースショーハンド- TiCDC のスケジュールが場合によってはバランスが取れない問題を修正#9845 @ 3エースショーハンド
- Kafka #9855 @ ヒックにデータを複製するときに TiCDC が停止する可能性がある問題を修正しました
- TiCDCプロセッサが場合によってはpanic可能性がある問題を修正#9849 #9915 @ ヒック @ 3エースショーハンド
kv-client.enable-multiplexingを有効にするとレプリケーション タスクが#9673 @ ふびんずで停止する問題を修正しました- REDOログが有効になっている場合にNFS障害により所有者ノードが停止する問題を修正#9886 @ 3エースショーハンド
パフォーマンステスト
TiDB v7.5.0 のパフォーマンスについては、 TiDB Cloud Dedicated クラスターのTPC-C パフォーマンステストレポートとSysbench パフォーマンステストレポートを参照してください。
寄稿者
TiDB コミュニティの以下の貢献者に感謝いたします。