本文为您介绍DMSLockFreeSqlOperator的配置信息。
功能说明
通过DMS分块DML(Chunk DML)服务执行无锁大批量DML操作,适用于大表UPDATE或DELETE场景。该Operator将大批量DML拆分为多个小批次执行,避免长时间锁表。
参数说明
说明
参数sql、instance、database可以使用Jinja模板。
参数 | 类型 | 是否必填 | 说明 |
sql | string | 是 | 需要执行的DML语句(UPDATE或DELETE)。 |
instance | string | 是 | DMS管理的数据库实例的连接(DBLink)名称。 |
database | string | 是 | 数据库名称。 说明 MySQL实例填写数据库名即可(如 |
callback | function | 否 | 用于处理执行结果的回调函数。 |
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 Operator均支持任务取消和自动重试等通用特性,详情请参见Airflow DMS Operator。