简单说明:
本篇博文讨论进程负载切分时要考虑的诸多因素,并不涉及具体的配置操作
进程拆分的原因:
当在一个非常繁忙的系统中部署复制时,一个单独的抽取和应用进程不足以保证复制事务的速度
这种情况下,一般应用进程是瓶颈,应用进程从trail文件中读取事务,重构成SQL,然后一条条的在目标端执行
除非是特意配制成这种延迟行的复制,否则该情况就是不合理的
进程拆分所需要关注的地方:
为了切分应用负载到多个进程,关键点是要考虑怎样将表切分到不同应用进程中,要根据环境具体分析:
1,查询动态性能视图,统计出库中更新操作最频繁的20张表:
select *
from (SELECT OWNER, OBJECT_NAME, VALUE AS TOTAL_WRITES
FROM V$SEGMENT_STATISTICS
WHERE STATISTIC_NAME IN ('PHYSICAL WRITES')
ORDER BY TOTAL_WRITES DESC)
where ROWNUM <= 20;
2,如果这些表属于不同的业务用户,则根据用户来切分多个应用进程
3,尽量保持业务上相关联的用户或者表在同一个应用进程里面
4,将某个表相关的DDL和DML的映射配置放在一个相同的应用进程里面
5,包含参照完整性的父子表配置在同一个应用进程里面
6,如果某个表有很高的update负载,可以为它配置一个专用的应用进程
7,如果一个专用的进程不够用,可以使用@RANGE函数切分成多个应用进程
参见《12. Setting up a GoldenGate replication with multiple process groups》
8,如果要使用BATCHSQL模式,则为行超过25KB的表、包含LONG或LOB的表
和除主键外还有其他唯一性约束的表创建单独应用进程
9,如果有三个或以上的应用进程从相同的trail文件中读取数据
设置更多的发送进程,将相同的trail文件发送到同一个目标端的不同trail目录中
10,每个OGG进程需要消耗大约55MB内存,需要考虑进程拆分的内存和CPU使用
11,能够被拆分的进程可以是应用进程也可以是抽取或发送进程,使用@RANGE函数拆分
参见《12. Setting up a GoldenGate replication with multiple process groups》
[TOC]