📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

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 が想定どおりに起動しない場合は、次の点を確認してください。

  1. UDF が存在し、適切に設定されているか確認する
  2. 環境変数がクラウドコンソールで設定されていることを確認する
  3. 現在の 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';

このページは役に立ちましたか?