DM 提供两种通信加密方式:一基于传输层的 SSL 协议加密;二基于应用层的消息包加 密。两个层次的加密互不影响,可以同时使用。
本文测试基于传输层的 SSL 协议加密对性能的影响。
为了尽量全面反映真实应用场景,我们编写两个测试案例。一个为为交互式应用。另一个为计算密集型。实测结果交互式应用采用基于传输层的 SSL 协议通信加密后性能下降了18%;计算密集型应用反而提高了1%,考虑到误差可以任务没有性能下降。
可以得出结论:采用基于传输层的 SSL 协议通讯加密,不同应用场景性能会下降0%至18%不等。原厂给出的测试数据是平均下降5%。
测试A(交互式应用)
先创建测试表
create table test(a int,b datetime);
编写测试脚本,循环建立1000个到远程数据库的sql会话,每个会话插入1行数据
e()
{
disql SYSDBA/SYSDBA@192.168.100.100:5236 <<eof
insert test values(${1},sysdate);
commit;
select count(*) from test;
eof
}
A=`date +"%Y-%m-%d %H:%M:%S"`
for ((i=1;i<=1000;i++ ))
do
e $i
done >/dev/null
disql SYSDBA/SYSDBA@192.168.100.100:5236 <<eof
select count(*),datediff(ss,min(b),max(b)) from test;
eof
echo
echo BEGIN:${A}
echo END: `date +"%Y-%m-%d %H:%M:%S"`
默认不开启通信加密的情况下执行测试脚本:
如上可见,向远程数据库顺序建立1000个会话并插入测试数据共耗时48秒。
将ENABLE_ENCRYPT参数(需重启数据库)设置为1,执行测试脚本
清空测试表后执行测试脚本
如上可见,向远程数据库顺序建立1000个会话并插入测试数据共耗时57秒。性能下降了18%。
测试B(计算密集型应用)
编写测试脚本,循环建立100个到远程数据库的sql会话,每个会话插入1行数据并执行统计查询。
e()
{
disql SYSDBA/SYSDBA@192.168.100.100:5236 <<eof
insert test values(${1},sysdate);
commit;
select count(*) from sysusers,sysobjects,dba_segments,dba_objects;
eof
}
A=`date +"%Y-%m-%d %H:%M:%S"`
for ((i=1;i<=100;i++ ))
do
e $i
done >/dev/null
disql SYSDBA/SYSDBA@192.168.100.100:5236 <<eof
select count(*),datediff(ss,min(b),max(b)) from test;
eof
echo
echo BEGIN:${A}
echo END: `date +"%Y-%m-%d %H:%M:%S"`
将ENABLE_ENCRYPT参数设置为0,执行测试脚本
将ENABLE_ENCRYPT参数设置为1,执行测试脚本
由上可见,将ENABLE_ENCRYPT参数后性能还略有提升。不过考虑到也许这时服务器在执行其他内部任务。我们认为修改参数后性能没有变化。