Worker の例
このページでは、TiDB Cloud Lake で UDF 実行環境を管理するために WORKER コマンドを使用する包括的な例を紹介します。
基本的な Worker ライフサイクル
1. Worker を作成する
read_env という名前の UDF 用の基本的な worker を作成します。
CREATE WORKER read_env;
エラーを回避するために、IF NOT EXISTS を付けて worker を作成します。
CREATE WORKER IF NOT EXISTS read_env;
カスタム設定を指定して worker を作成します。
CREATE WORKER read_env
WITH size = 'small',
auto_suspend = '300',
auto_resume = 'true',
max_cluster_count = '3',
min_cluster_count = '1';
2. Worker を一覧表示する
現在のテナント内のすべての worker を表示します。
SHOW WORKERS;
3. Worker 設定を変更する
worker のサイズと自動サスペンド設定を変更します。
ALTER WORKER read_env SET size = 'medium', auto_suspend = '600';
特定のオプションをデフォルト値にリセットします。
ALTER WORKER read_env UNSET size, auto_suspend;
4. Worker タグを管理する
worker を分類するためのタグを追加します。
ALTER WORKER read_env SET TAG purpose = 'sandbox', owner = 'ci';
不要になったタグを削除します。
ALTER WORKER read_env UNSET TAG purpose, owner;
5. Worker の状態を制御する
worker をサスペンドします(実行環境を停止します)。
ALTER WORKER read_env SUSPEND;
サスペンドされた worker を再開します。
ALTER WORKER read_env RESUME;
6. Worker を削除する
不要になった worker を削除します。
DROP WORKER read_env;
安全に worker を削除します(存在しない場合でもエラーになりません)。
DROP WORKER IF EXISTS read_env;
高度な例
異なる環境向けの Worker
環境ごとに異なる設定で worker を作成し、それぞれにタグを付けます。
-- Development worker
CREATE WORKER dev_processor WITH
size = 'small',
auto_suspend = '60',
auto_resume = 'true',
max_cluster_count = '1',
min_cluster_count = '1';
ALTER WORKER dev_processor SET TAG environment = 'development', purpose = 'testing';
-- Production worker
CREATE WORKER prod_processor WITH
size = 'large',
auto_suspend = '1800',
auto_resume = 'true',
max_cluster_count = '5',
min_cluster_count = '2';
ALTER WORKER prod_processor SET TAG environment = 'production', team = 'data-engineering';
動的な Worker 管理
特定の設定を持つ worker が存在することを保証するスクリプトです。
-- Create worker if it doesn't exist
CREATE WORKER IF NOT EXISTS my_worker WITH
size = 'small',
auto_suspend = '300';
-- Update tags
ALTER WORKER my_worker SET TAG
environment = 'staging',
owner = 'ci';
-- Tune options later
ALTER WORKER my_worker SET auto_resume = 'true', max_cluster_count = '2';
-- Show current configuration
SHOW WORKERS;
ベストプラクティス
1. 命名規則
- UDF の用途が分かる説明的な名前を使用する
- 環境を表すサフィックスを含める(例:
_dev、_prod、_staging) - 複数チームの環境では、チーム名やプロジェクト名のプレフィックスを検討する
2. リソースサイズ設定
- 開発およびテストでは
size='small'から始める - 使用頻度の低い worker のコストを節約するために
auto_suspendを使用する - 想定される負荷に基づいて適切な
min_cluster_countを設定する
3. タグ戦略
- コスト配分とリソース追跡のためにタグを使用する
- 環境、チーム、プロジェクトの情報を含める
- 監査目的で作成日と所有者を追加する
4. ライフサイクル管理
- 冪等なスクリプトのために
IF NOT EXISTSとIF EXISTSを使用する SHOW WORKERSで worker の使用状況を監視する- コスト削減のために未使用の worker をクリーンアップする
一般的なユースケース
1. UDF 開発
-- Create a worker for UDF development
CREATE WORKER dev_transform WITH
size = 'small',
auto_suspend = '60';
ALTER WORKER dev_transform SET TAG environment = 'development', purpose = 'testing';
-- After UDF is developed and tested
ALTER WORKER dev_transform SET
size = 'medium',
auto_suspend = '300';
ALTER WORKER dev_transform SET TAG purpose = 'production-ready';
2. バッチ処理
-- Worker for nightly batch jobs
CREATE WORKER nightly_etl WITH
size = 'large',
auto_suspend = '3600', -- Suspend after 1 hour of inactivity
auto_resume = 'false'; -- Don't auto-resume (manual control)
ALTER WORKER nightly_etl SET TAG
schedule = 'nightly',
job_type = 'etl',
criticality = 'high';
3. マルチテナント環境
-- Workers for different teams
CREATE WORKER team_a_processor WITH
size = 'medium';
ALTER WORKER team_a_processor SET TAG team = 'team-a', billing_code = 'TA-2024';
CREATE WORKER team_b_processor WITH
size = 'small';
ALTER WORKER team_b_processor SET TAG team = 'team-b', billing_code = 'TB-2024';
トラブルシューティング
Worker が起動しない
Worker が想定どおりに起動しない場合は、次の点を確認してください。
- UDF が存在し、適切に設定されているか確認する
- 環境変数がクラウドコンソールで設定されていることを確認する
- 現在の worker メタデータを確認し、必要に応じて再開する
-- Inspect current worker metadata
SHOW WORKERS;
-- Resume the worker
ALTER WORKER my_worker RESUME;
権限の問題
必要な権限があることを確認してください。
-- Check your privileges
SHOW GRANTS;
リソース制約
パフォーマンスの問題が発生している場合は、次を試してください。
-- Increase worker size
ALTER WORKER my_worker SET size = 'large';
-- Adjust cluster counts
ALTER WORKER my_worker SET
max_cluster_count = '5',
min_cluster_count = '2';
関連トピック
- ユーザー定義関数 (UDF) - UDF の作成方法と使用方法について説明します
- Warehouse 管理 - クエリ実行用のコンピュートリソースを管理します
- ワークロードグループ - リソース割り当てと優先度を制御します