麻烦问下我们现在使用dataworks数据集成的离线同步功能,从mysql向maxcompute同步数据,使用id作为分片键,但是发现离线同步时拉取数据的batchsize过大,比如 "(1 <= id AND id < 52168)" 这种查询条件,会导致mysql出现慢查询日志,请问这个batchsize支持调整吗,或者有什么其他的解决方案?
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"
}
]
}
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。