【说明】本文档介绍DataGuard在最大性能模式下面的写测试实验;
启用Dataguard的日志传输命令:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='ENABLE'; 启用日志传输 ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2='DEFER'; 关闭日志传送 |
测试步骤:
创建表t,然后在启用日志和关闭日志情况下插入数据的时间对比
脚本:
drop table t purge; create table t(x int); 在源数据库创建表t alter system flush shared_pool; 清空shared_pool的数据 create or replace procedure proc1 创建proc1 as begin for i in 1 .. 100000 loop execute immediate 'insert into t values('||i||')'; commit; end loop; end; /
SQL> set timing on; 打开自动计时 SQL> exec proc1; 执行脚本 |
结果:
次数
重做日志大小:50M
重做日志大小:500M
插入数据量:100000
插入数据量:500000
插入数据量:500000
关闭DG
启动DG
关闭DG
启动DG
关闭DG
启动DG
第一次
00:00:55.58
00:00:58.91
00:04:55.82
00:05:57.37
00:04:49.98
00:04:43.35
第二次
00:00:52.87
00:00:52.98
00:04:45.33
00:06:09.11
00:04:34.19
00:04:40.98
第三次
00:00:55.10
00:00:52.70
00:05:13.32
00:06:06.60
00:04:35.46
00:04:42.68
总结:
1、当插入数据量较小的情况下,关闭DG和启动DG的情况下,并不影响系统的效率;
2、进行大量数据插入的情况下,启动DG会严重影响系统的性能;
3、调整重做日志的大小到合理的大小,可以避免DG对系统效率的影响;
原因分析:最大性能模式下按照道理应该不会影响系统的性能的,但是当日志切换速度太快的时候就会导致一直触发检查点的发生,就会导致REDO BUFFER的信息一直写入到磁盘中,LRS来不及从内存去读取REDO LOG的信息,就需要从磁盘中去读取信息,这个过程会影响IO的性能;
所以IO的争用导致系统性能的下降;
以上纯属个人的判断,尚未找到相应的支持论点。