扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
对于逻辑备用数据库LDG和Streams,其实很多方面是类似的,尤其是downstream模式下的复制,都是利用log miner技术,对日志进行分析,从而捕获数据的变化,并把变更复制到目标数据库。
逻辑备用数据库和streams比较大的区别是:
streams支持把多个库的数据汇总到一个数据库中而LDG不支持;
streams支持双向复制,而LDG不支持......
我们在实施逻辑备用数据库和streams的时候,经常发现,如果有超大的transaction的时候,数据同步就会很慢,尤其是一条语句要修改几十上百万的时候。
如何进行性能优化呢?我这里有些思路,也希望大家能够补充:
1、对大表或操作频繁的表需要提供关键字或唯一索引
因为如果没有主关键字或唯一索引,需要SUPPLEMENTAL LOG来识别每条变化的记录,这样,你会发现,产生的归档日志量会很多,而且,在目标数据库应用数据变化的SQL时候,由于没有索引,SQL执行也会非常慢
2、减少huge transaction的出现
如果你的生产系统经常有一条SQL语句修改几十、上百万条记录的情况,在设计LDG或Streams的时候,就需要留心了。一般的建议是,把这种业务修改成光标的循环,提高commit的频度,从而避免huge transaction
3、对于downstreams来讲,避免无用数据变更的复制
有很多系统,都有类似月末结帐的功能,需要进行大量的计算,最后,生成一些最终的结果。如果把所有中间表的数据变化全部复制过去,就会消耗大量的资源、性能也会受到影响。但很多时候,可能真正的需求仅仅是最终的结果表。这个时候,你就可以定义负规则,把不需要关注的表,排除在复制之外
4、调整并行参数或一些阀值
有一些参数,可以影响性能,如LDG中的_eager_size等,通过参数调整来影响性能,需要十分小心,这里我就先不详细介绍了。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者