リソース制御を使用してバックグラウンドタスクを管理する
注記:
この機能は、クラスターTiDB CloudスターターおよびTiDB Cloudエッセンシャルでは利用できません。
データのバックアップや自動統計収集などのバックグラウンドタスクは、優先度が低いにもかかわらず、多くのリソースを消費します。これらのタスクは通常、定期的または不定期に実行されます。実行中は多くのリソースを消費するため、オンラインの高優先度タスクのパフォーマンスに影響を与えます。
v7.4.0以降、 TiDB リソース制御機能はバックグラウンドタスクの管理をサポートします。タスクがバックグラウンドタスクとしてマークされると、TiKVは他のフォアグラウンドタスクのパフォーマンスへの影響を回避するため、このタイプのタスクで使用されるリソースを動的に制限します。TiKVは、すべてのフォアグラウンドタスクによって消費されるCPUおよびIOリソースをリアルタイムで監視し、インスタンスの合計リソース制限に基づいて、バックグラウンドタスクで使用できるリソースのしきい値を計算します。すべてのバックグラウンドタスクは、実行中にこのしきい値によって制限されます。
BACKGROUNDパラメータ
TASK_TYPES: バックグラウンドタスクとして管理する必要があるタスクの種類を指定します。複数のタスクの種類を指定する場合は、カンマ (,) で区切ります。UTILIZATION_LIMIT: 各 TiKV ノード上でバックグラウンドタスクが消費できるリソースの最大割合(0~100)を制限します。デフォルトでは、TiKV はノードの総リソースとフォアグラウンドタスクが現在占有しているリソースに基づいて、バックグラウンドタスクに利用可能なリソースを計算しますUTILIZATION_LIMITに設定すると、バックグラウンドタスクに割り当てられるリソースはこの制限を超えません。
TiDB は次の種類のバックグラウンド タスクをサポートしています。
lightning: TiDB Lightningを使用してインポートタスクを実行します。TiDB TiDB Lightningの物理インポートモードと論理インポートモードの両方がサポートされています。br: BRを使用してバックアップおよび復元タスクを実行します。PITR はサポートされていません。ddl: Reorg DDL のバッチ データ書き戻しフェーズ中のリソース使用量を制御します。stats: 手動で実行されるか、TiDB によって自動的にトリガーされる統計を収集するタスク。background: 予約済みのタスクタイプ。システム変数tidb_request_source_type使用して、現在のセッションのタスクタイプをbackgroundとして指定できます。
デフォルトでは、バックグラウンドタスクとしてマークされているタスクタイプは""で、バックグラウンドタスクの管理は無効になっています。バックグラウンドタスクの管理を有効にするには、リソースグループdefaultのバックグラウンドタスクタイプを手動で変更する必要があります。バックグラウンドタスクが識別され、マッチングされると、リソース制御が自動的に実行されます。つまり、システムリソースが不足している場合、バックグラウンドタスクの優先度は自動的に最低に下げられ、フォアグラウンドタスクの実行が確保されます。
注記:
現在、すべてのリソースグループのバックグラウンドタスクは
defaultリソースグループにバインドされています。バックグラウンドタスクの種類はdefaultを通じてグローバルに管理できます。バックグラウンドタスクを他のリソースグループにバインドすることは現在サポートされていません。
例
brとddlバックグラウンド タスクとしてマークし、バックグラウンド タスクのリソース制限を 30% に設定して、リソース グループdefaultを変更します。ALTER RESOURCE GROUP `default` BACKGROUND=(TASK_TYPES='br,ddl', UTILIZATION_LIMIT=30);defaultリソース グループを変更して、バックグラウンド タスクの種類を既定値に戻します。ALTER RESOURCE GROUP `default` BACKGROUND=NULL;defaultリソースグループを変更して、バックグラウンドタスクの種類を空に設定します。この場合、このリソースグループのすべてのタスクはバックグラウンドタスクとして扱われません。ALTER RESOURCE GROUP `default` BACKGROUND=(TASK_TYPES="");defaultリソース グループのバックグラウンド タスクの種類をビュー。SELECT * FROM information_schema.resource_groups WHERE NAME="default";出力は次のようになります。
+---------+------------+----------+-----------+-------------+-------------------------------------------+ | NAME | RU_PER_SEC | PRIORITY | BURSTABLE | QUERY_LIMIT | BACKGROUND | +---------+------------+----------+-----------+-------------+-------------------------------------------+ | default | UNLIMITED | MEDIUM | YES | NULL | TASK_TYPES='br,ddl', UTILIZATION_LIMIT=30 | +---------+------------+----------+-----------+-------------+-------------------------------------------+現在のセッションのタスクを明示的にバックグラウンドタイプとしてマークするには、
tidb_request_source_type使用してタスクタイプを明示的に指定します。例を以下に示します。SET @@tidb_request_source_type="background"; /* Add background task type */ ALTER RESOURCE GROUP `default` BACKGROUND=(TASK_TYPES="background"); /* Execute LOAD DATA in the current session */ LOAD DATA INFILE "s3://resource-control/Lightning/test.customer.aaaa.csv"