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 @ywqzzyリソース集約型のクラスタで
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) となり、
ADD INDEXおよびIMPORT INTOタスクの並列実行におけるパフォーマンスと安定性が向上しました #45719 @wjhuang2016v7.1.0 で導入された DXF が GA になりました。TiDB v7.1.0 より前のバージョンでは、同時に実行できる TiDB ノードは 1 つだけでした。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 @tangenta
バージョン7.5.0より前は、1つのSQL文で複数のインデックス(
ADD INDEX)を追加した場合、パフォーマンスは個別のSQL文で複数のインデックスを追加した場合とほぼ同じでした。バージョン7.5.0以降では、1つのSQL文で複数のインデックスを追加する際のパフォーマンスが大幅に向上しました。特に、テーブルサイズが大きいシナリオでは、社内テストデータによると、パフォーマンスが最大94%向上することが示されています。
データベース操作
DDL ジョブは操作の一時停止と再開をサポート (GA) #18015 @godouxm
バージョン7.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 @Leavrth
TiDB v7.5.0以降、brコマンドラインツールでは、データベース統計のバックアップと復元を行うための
--ignore-statsパラメータが導入されました。このパラメータをfalseに設定すると、brコマンドラインツールは列、インデックス、およびテーブルの統計のバックアップと復元をサポートします。この場合、バックアップから復元されたTiDBデータベースの統計収集タスクを手動で実行したり、自動収集タスクの完了を待ったりする必要はありません。この機能により、データベースのメンテナンス作業が簡素化され、クエリのパフォーマンスが向上します。詳細については、 ドキュメントを参照してください。
可観測性
TiDB ダッシュボードは TiKV のヒープ プロファイリングをサポートします #15927 @Connor1996
従来、TiKV の OOM やメモリ使用量過多の問題に対処するには、インスタンス環境でヒープ プロファイルを生成するために
jeprofを手動で実行する必要がありました。v7.5.0 以降、TiKV はヒープ プロファイルのリモート処理に対応しました。ヒープ プロファイルのフレーム グラフとコール グラフに直接アクセスできるようになりました。この機能により、Go のヒープ プロファイリングと同様に、シンプルで使いやすい操作性を実現しています。詳細については、ドキュメントを参照してください。
データ移行
IMPORT INTOSQL ステートメントのサポート (GA) #46704 @D3Hunterバージョン7.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 では、
MODIFY COLUMN(列のデータ型の変更)、DROP COLUMN} などのフィルタリングや、データ損失、データの切り捨て、精度低下につながるその他の細かい DDL イベントなど、サポートされる DDL イベントの粒度を細かくしています。必要に応じて設定できます。この機能は、互換性のない DDL 変更をブロックし、そのような変更のエラーを報告することもサポートしているため、下流のアプリケーション データへの影響を回避するために、タイムリーに手動で介入できます。詳細については、 ドキュメントを参照してください。
継続的なデータ検証のためのリアルタイムチェックポイント更新をサポート #8463 @lichunzhu
バージョン7.5.0より前では、 データ継続的なデータ検証機能DMからダウンストリームへのレプリケーション中にデータの一貫性を保証します。これは、アップストリームデータベースからTiDBへのビジネストラフィックの切り替えの基礎となります。しかし、レプリケーションの遅延や不整合データの再検証待ちなど、さまざまな要因により、継続的な検証チェックポイントを数分ごとに更新する必要がありました。切り替え時間が数十秒に制限されている一部のビジネスシナリオでは、これは許容できません。
連続データ検証におけるチェックポイントのリアルタイム更新機能の導入により、上流データベースからbinlogの位置を指定できるようになりました。連続検証プログラムは、メモリ内でこのbinlogの位置を検出すると、数分ごとに更新するのではなく、即座にチェックポイントを更新します。そのため、この即座に更新されたチェックポイントに基づいて、迅速なカットオフ処理を実行できます。
詳細については、 ドキュメントを参照してください。
互換性の変更
注記:
このセクションでは、バージョン7.4.0から最新バージョン(7.5.0)にアップグレードする際に知っておくべき互換性の変更点について説明します。バージョン7.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
非推奨機能
マイダンパーはバージョン7.5.0で非推奨となり、その機能のほとんどはDumplingに置き換えられました。Mydumperの代わりにDumplingを使用することを強くお勧めします。
TiKV インポーターは v7.5.0 で非推奨になりました。代わりにTiDB Lightningの物理インポートモードを使用することを強くお勧めします。
TiDB v7.5.0以降、 TiDBBinlogのデータレプリケーション機能に関する技術サポートは提供されなくなりました。データレプリケーションの代替ソリューションとしてTiCDCを使用することを強くお勧めします。TiDB Binlog v7.5.0は引き続きポイントインタイムリカバリ(PITR)シナリオをサポートしていますが、このコンポーネントは将来のバージョンで完全に非推奨となります。データリカバリの代替ソリューションとしてPITR使用することをお勧めします。
統計情報用の
Fast Analyze機能(実験的)は、バージョン7.5.0で非推奨となりました。統計の増分収集機能 (実験的) は v7.5.0 で非推奨になりました。
改善点
TiDB
- グローバル統計情報のマージにおける並行処理モデルを最適化:
tidb_enable_async_merge_global_statsを導入し、統計情報の同時ロードとマージを可能にすることで、パーティションテーブル上のグローバル統計情報の生成を高速化します。グローバル統計情報のマージにおけるメモリ使用量を最適化し、メモリ不足エラー(OOM)を回避し、メモリ割り当てを削減します。 #47219 @hawkingrei ANALYZEプロセスを最適化します。tidb_build_sampling_stats_concurrencytidb_build_sampling_stats_concurrency導入しANALYZEの並行性をより適切に制御してリソース消費を削減します。ANALYZEのメモリ使用量を最適化し、中間結果を再利用することでメモリ割り当てを削減し、頻繁な GC を回避します。 #47275 @hawkingrei- 配置ポリシーの使用を最適化:ポリシーの範囲をグローバルに設定する機能をサポートし、一般的なシナリオにおける構文サポートを改善します。 #45384 @nolouch
tidb_ddl_enable_fast_reorgが有効になっている場合のインデックス追加のパフォーマンスを向上させます。内部テストでは、v7.5.0 は v6.5.0 と比較して最大 62.5% パフォーマンスが向上しています。 #47757 @tangenta
- グローバル統計情報のマージにおける並行処理モデルを最適化:
TiKV
- Titanマニフェストファイルを書き込む際にミューテックスを保持しないようにして、他のスレッドへの影響を防ぐ #15351 @Connor1996
PD
evict-slow-trendスケジューラの安定性と使いやすさを改善 #7156 @LykxSassinator
ツール
バグ修正
TiDB
- 非整数クラスター化インデックスでの分割テーブル操作を禁止 #47350 @tangenta
- タイムゾーン情報が間違っているタイムフィールドのエンコード問題を修正 #46033 @tangenta
- Sort オペレーターがスピル プロセス中に TiDB をクラッシュさせる可能性がある問題を修正 #47538 @windtalker
- TiDB が
Can't find columnを使用したクエリに対してGROUP_CONCATを返す問題を修正 #41957 @AilinKid batch-clientのclient-goのpanic問題を修正 #47691 @crazycs520INDEX_LOOKUP_HASH_JOIN#47788のメモリ使用量推定の誤りを修正シーライズ- 長期間オフラインだったTiFlashノードの再参加によって生じる不均一なワークロードの問題を修正 #35418 @windtalker
- HashJoin オペレーターがプローブを実行する際にチャンクを再利用できない問題を修正します #48082 @wshwsh12
COALESCE()関数がDATE型のパラメータに対して誤った結果型を返す問題を修正しました #46475 @xzhangxian1008- サブクエリを含む
UPDATEステートメントが誤って PointGet に変換される問題を修正 #48171 @Rustin170506 - キャッシュされた実行プランに日付型と
unix_timestampの比較が含まれている場合に誤った結果が返される問題を修正します #48165 @qw4990 - 集計関数またはウィンドウ関数を含むデフォルトのインライン共通テーブル式(CTE)が再帰CTEによって参照された場合にエラーが報告される問題を修正します #47881 @elsa0520
- ウィンドウ関数によって導入されたソートを削減するために、オプティマイザが誤って IndexFullScan を選択する問題を修正しました #46177 @qw4990
- CTEの条件プッシュダウンにより、複数のCTE参照によって誤った結果が生じる問題を修正 #47881 @winoros
- MySQLの圧縮プロトコルが大量のデータ(>=16M)を処理できない問題を修正#47152 #47157 #47161 @dveeden
- TiDBが
cgroupで起動されたときにsystemdのリソース制限を読み取らない問題を修正 #47442 @hawkingrei
TiKV
- 悲観的トランザクションモードでのプリライト要求の再試行が、まれにデータ不整合のリスクを引き起こす可能性がある問題を修正しました #11187 @MyonKeminta
PD
evict-leader-schedulerの設定が失われる可能性がある問題を修正 #6897 @HuSharp- ストアがオフラインになった後、その統計情報の監視メトリックが削除されない問題を修正します #7180 @rleungx
- データレプリケーション自動同期(DR Auto-Sync)モードを採用しているクラスターにおいて、配置ルールの設定が複雑な場合に
canSynchasMajorityが正しく計算されない可能性がある問題を修正します #7201 @disksing - ルールチェッカーが配置ルールの設定に従って学習者を追加しない問題を修正 #7185 @nolouch
- TiDB DashboardがPD
traceデータを正しく読み取れない問題を修正 #7253 @nolouch - 内部的に取得したリージョンが空であるためにPDがpanic可能性がある問題を修正 #7261 @lhy1024
- データレプリケーション自動同期(DR Auto-Sync)モードを採用しているクラスターで
available_storesが正しく計算されない問題を修正します #7221 @disksing - TiKVノードが利用できない場合にPDが通常のピアを削除する可能性がある問題を修正 #7249 @lhy1024
- 大規模クラスターに複数の TiKV ノードを追加すると、TiKV のハートビート報告が遅くなったり停止したりする可能性がある問題を修正しました #7248 @rleungx
TiFlash
UPPER()関数とLOWER()関数がTiDB とTiFlashの間で一貫性のない結果を返す問題を修正 #7695 @windtalker- 空のパーティションでクエリを実行するとクエリが失敗する問題を修正 #8220 @JaySon-Huang
- TiFlashレプリカの複製時にテーブル作成失敗によって発生するpanic問題を修正 #8217 @hongyunyan
ツール
バックアップと復元 (BR)
TiCDC
- オブジェクトストアシンクへのデータ複製時にNFSディレクトリにアクセスすることで発生するパフォーマンス問題を修正 #10041 @CharlesCheung96
claim-checkが有効な場合にstorageパスのスペルが間違っている問題を修正 #10036 @3AceShowHand- TiCDCのスケジューリングのバランスが崩れる場合がある問題を修正 #9845 @3AceShowHand
- TiCDCがKafkaへのデータ複製時に停止する可能性がある問題を修正 #9855 @hicqu
- 場合によっては TiCDC プロセッサがpanicになる問題を修正#9849 #9915 @hicqu@3AceShowHand
kv-client.enable-multiplexingを有効にするとレプリケーションタスクが停止する問題を修正 #9673 @fubinzh- REDOログが有効な場合にNFS障害によりオーナーノードがスタックする問題を修正 #9886 @3AceShowHand
性能テスト
TiDB v7.5.0 のパフォーマンスについては、 TPC-C性能試験報告書とTiDB Cloud DedicatedクラスターのSysbenchパフォーマンステストレポートを参照してください。
寄稿者
TiDBコミュニティの以下の貢献者の皆様に感謝申し上げます。