如何使用dataworks数据集成的离线同步功能?[阿里云DataWorks]

麻烦问下我们现在使用dataworks数据集成的离线同步功能,从mysql向maxcompute同步数据,使用id作为分片键,但是发现离线同步时拉取数据的batchsize过大,比如 “(1 <= id AND id < 52168)" 这种查询条件,会导致mysql出现慢查询日志,请问这个batchsize支持调整吗,或者有什么其他的解决方案?

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. id是主键么 看能不能多加一些并发 这样就会多拆分几个sql,mysql reader不支持fetchsize。最好是用分布均匀的整数索引字段作为切分键和过滤条件。此答案整理自钉群“DataWorks交流群(答疑@机器人)”

  2. 官方文档中提到,BatchSize或maxfilesize参数控制一次性批量提交的记录数大小,该值可以减少数据同步与数据库网络交互次数,并提升吞吐量。但如果该值设置过大,会导致数据同步运行进程OOM异常。因此对于你说的由于batchSize过大导致Mysql出现慢查询的情况,建议可以调小maxCommitSize和batchSize的参数值。具体调小的方式可以参考

    {    "type":"job",    "version":"2.0",//版本号。    "steps":[         {            "stepType":"stream",            "parameter":{},            "name":"Reader",            "category":"reader"        },        {            "stepType":"mysql",//插件名。            "parameter":{                "postSql":[],//导入后的准备语句。                "datasource":"",//数据源。                "column":[//列名。                    "id",                    "value"                ],                "writeMode":"insert",//写入模式,您可以设置为insert、replace或update。                "batchSize":1024,//一次性批量提交的记录数大小。                "table":"",//表名。                "preSql":[                      "delete from XXX;" //导入前的准备语句。                   ]            },            "name":"Writer",            "category":"writer"        }    ],    "setting":{        "errorLimit":{//错误记录数。            "record":"0"        },        "speed":{            "throttle":true,//当throttle值为false时,mbps参数不生效,表示不限流;当throttle值为true时,表示限流。            "concurrent":1, //作业并发数。            "mbps":"12"//限流,控制同步的最高速率,防止对上游/下游数据库读取/写入压力过大。        }    },    "order":{        "hops":[            {                "from":"Reader",                "to":"Writer"            }        ]    }}