麻烦问下我们现在使用dataworks数据集成的离线同步功能,从mysql向maxcompute同步数据,使用id作为分片键,但是发现离线同步时拉取数据的batchsize过大,比如 “(1 <= id AND id < 52168)" 这种查询条件,会导致mysql出现慢查询日志,请问这个batchsize支持调整吗,或者有什么其他的解决方案?
如何使用dataworks数据集成的离线同步功能?[阿里云DataWorks]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
id是主键么 看能不能多加一些并发 这样就会多拆分几个sql,mysql reader不支持fetchsize。最好是用分布均匀的整数索引字段作为切分键和过滤条件。此答案整理自钉群“DataWorks交流群(答疑@机器人)”
官方文档中提到,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" } ] }}