このトピックでは、DMSLockFreeSqlOperator の設定パラメーターについて説明します。
機能
このオペレーターは、DMS のチャンク DML サービスを使用して、大規模なロックフリー DML 操作を実行します。長時間にわたるテーブルロックを防ぐためにステートメントを小さなバッチに分割するため、大規模テーブルに対する UPDATE または DELETE ステートメントに最適です。
パラメーター
sql、instance、および database パラメーターは、Jinja テンプレートをサポートしています。
パラメーター | タイプ | 必須 | 説明 |
sql | 文字列 | はい | 実行する DML ステートメント (UPDATE または DELETE) です。 |
instance | 文字列 | はい | DMS で管理されるデータベースインスタンスの接続名 (DBLink) です。 |
database | 文字列 | はい | データベースの名前です。 説明 MySQL インスタンスの場合は、 |
callback | 関数 | いいえ | 実行結果を処理するためのコールバック関数です。 |
polling_interval | int | いいえ | 実行ステータスのポーリング間隔 (秒単位) です。デフォルトは 10 です。このパラメーターを 0 または負の数に設定した場合、タスクは送信されますが、オペレーターは結果を待機しません。ステータスチェックには、組み込みのリトライメカニズムが含まれています。 |
例
task_id と dag は Airflow 固有のパラメーターです。詳細については、「Airflow の公式ドキュメント」をご参照ください。
from airflow import DAG
from airflow.providers.alibabadms.cloud.operators.dms_lock_free_sql import DMSLockFreeSqlOperator
with DAG(
"dms_lock_free_sql_example",
) as dag:
lock_free_task = DMSLockFreeSqlOperator(
task_id="batch_update",
instance="my_mysql_instance",
database="my_database",
sql="UPDATE orders SET status = 'archived' WHERE created_at < '{{ macros.ds_add(ds, -90) }}';",
polling_interval=30,
dag=dag,
)すべての DMS Airflow オペレーターは、タスクのキャンセルや自動リトライなどの共通機能をサポートしています。詳細については、「Airflow DMS Operator」をご参照ください。