时间/资源估算

ETA (预计完成时间) 估算

源端

  • 全量过程, 公式为:
      总时间 = 已用时间 / 发送到目标端的行数 * 总行数
          其中,总行数 = (select count(*) ...)
      预计完成时间 = 总时间 - 已用时间
      即:预计完成时间 = 剩余行数 / 当前发送速率
    
  • 增量过程, ETA 一直为0s

目标端

  • 全量过程. 公式为:
      总时间 = 已用时间 / 已写入目标端的行数 * 总行数
      预计完成时间 = 总时间 - 已用时间
      即:预计完成时间 = 剩余行数 / 当前写入速率
    
  • 增量过程, ETA 一直为0s

内存占用估算

内存占用估算 = RowSize * ChunkSize * QueueSize * 内存占用系数

其中:

  • RowSize为数据行的平均大小 (字节)
  • ChunkSize为配置项
  • QueueSize为传输队列长度, 硬编码为24
  • 内存占用系数 测量约为 常量3.2

关于大事务

大事务指传输、处理数据量较大的事务,一般由DML组成。DDL事务(QueryEvent)不会太大,尽管某些DDL需要较长的执行时间。

对于一个多行的大事务,dtle会按行分开处理、传输并执行(但在目标端仍作为一个事务提交)。

当一个job处理大事务时,需要等待该段数据在目标端执行完毕才会获取下一批数据。

当同时处理大事务的job数量达到 big_tx_max_jobs时,所有job都会进入等待模式。

为了避免MySQL源端超时,等待时间的上限是 @@net_write_timeout / 2

results matching ""

    No results matching ""