最近接触一个项目,需要每天定时把PgSql一张数据量超大的数据表同步到ClickHouse 思考这种场景下怎么提高同步速度。
按主键分页
思路
按照主键排序分区间查询
代码
1 | package main |
优点
命中索引查询
缺点
PgSql设置主键会影响插入和查询速度,这也是为什么PgSql数据表一般不设置主键的原因
游标
思路
多个协程获取同一个游标的数据
代码
1 | package main |
优点
能保证数据的完整,可靠性较高
缺点
必须等待结果集迭代完成后才能处理下一个
为啥不用 offset, limit
因为offset, limit
会扫全表 233