1.传输数据压缩
网络性能主要受两方面影响:bandwidth和data volume。
在网络层对数据进行压缩,可以减少对网络带宽的需求。而且对应用是透明的。 如果是CPU是瓶颈时开启网络层数据压缩,反会导致问题更严重。
1.1开启压缩
在sqlnet.ora文件中设置以下参数:
-sqlnet.compression
开启压缩或关闭压缩。取值为on或者off,默认是off。
-sqlnet.compression_levels
设置压缩级别。取值为high或者low,默认是low。database resident connection pooling只支持low压缩级别。high的压缩比例高,但是占用cpu的比例也高。
-sqlnet.compression_threshold
指定需要进行压缩的最少数据数量。如果数据量小于这个参数的值,就不会开启压缩。默认是1k。
2.Session Data Unit(SDU)大小设置
2.1 建议修改SUD的场景:
-来自服务器的数据碎片化
-所在的wide area network(WAN)有很大的延迟
-packet的大小是一致的
-返回大量的数据
2.2不建议修改SUD的场景:
-可以通过应用层调优减少对网络的依赖
-网络环境足够好
-返回的数据比较少
SDU的取值范围为512bytes至2mb。
默认,客户端和专用数据库服务器是8192bytes,共享模式是65535bytes。
实际的SUD的大小是客户端和服务器端协商的结果,取二者最小值。
可以使用trcasst -t工具来测试网络,如果(SDU size - predominant message size < 70bytes) 就建议增加SDU size了。
在sqlnet.ora文件中,通过参数default_sdu_size设置。增加该值会增加内存的开销。
比如:
default_sdu_size=8192