数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle学习应用之数据库性能优化策略


发布日期:2020年04月25日
 
Oracle学习应用之数据库性能优化策略

数据库系统和操作系统一样在计算机上安装成功后还需要进一步配置和优化从而使其具有更强大的功能和运行在最佳状态如果在设计阶段因为各种因素没有进行较为合理的配置和计划那么就需要在后期对数据库系统进行优化

数据库系统性能的优化除了在设计阶段对其逻辑存储结构和物理存储结构设计进行优化使之在满足需求条件下时空开销性能最佳外还可在运行阶段采取一些优化措施使系统性能最佳本专题所讨论的性能优化主要指运行阶段的性能优化即讨论如何使用Oracle所提供的优化手段来提高系统性能大多数性能问题并不是一种孤立的症状而是系统设计的结果因此性能优化就集中在那些导致不可接受特征的同一的固定的和潜在的问题上优化是数据库设计中计划设计监视优化四大步骤的最后一步 除了用Oracle优化器来优化数据库的性能外DBA还可通过优化Oracle的参数设置等手段来优化数据库的性能对参数的细微优化便能影响系统整体性能

为了有目的优化系统性能首先应明确优化目标然后再根据目标优化各种初始参数的设置以达到更好效果可有如下几个优化目标:

◆ 应用程序设计的优化

◆ 指定类型SQL语句的优化

◆ 内存使用的优化

◆ 数据存储物理存储和逻辑存储的优化

◆ 网络通信量的优化

DBA可选定上述一个或多个目标来实施优化性能优化主要是通过优化初始化参数来实现本专题从以下几个方面来谈谈如何优化Oracle数据库使其具有最佳性能

()优化初始参数

()优化内存

()优化I/O

()优化资源争用

()其它参数优化

可变参数的优化

在对Oracle数据库进行优化时需要用到许多的参数其中有一部分参数对系统性能影响较大这部分参数叫可变参数可变参数按其作用可以分为两大类一大类是起限制作用的如OPEN_CURSORS;另一大类是影响系统性能的如DB_BLOCK_BUFFERS

在进行数据库系统性能优化时需要熟练掌握和了解一些可变参数本文讨论了一些对系统性能有较大影响的参数

限制类可变参数

()DML_LOCKS

该参数表明多少个用户可同时能修改多少张表例如:有三个用户同时修改二张表则要求表上的总数为若置为则组织队列不起作用其性能会稍有提高使用该参数时不能用DROP TABLECREATE INDEX或显式封锁

()LICENSE_MAX_SESSION

该参数指出允许并发用户会话的最大数若此参数为则不能实施并发若并发的用户会话数已达到此极限则只有具有RESTRICTEDSESSION权限的用户才能连接到服务器

()LICENSE_MAX_USERS

该参数指出在一个数据库上可建立的最大用户数当达到最大值时便不能再建新用户可改变此值以放松限制在LICENSE_MAX_SESSION或LICENSE_MAX_USER为则并发会话或任何用户都不能用若对不同的实例此参数不同时则以第一个登录的数据库实例的参数为准

()MAX_DUMP_FILE_SIZE

该参数指定操作系统中写跟蹤文件的块的最大值可用此值来限制跟蹤文件的空间

()OPEN_CURSORS

该参数指明一个用户进程能同时打开光标的最大数它能限制每个用户进程占用的内存空间量

()OPEN_LINKS

该参数指定并发连接到远程数据库的最大用户进程数若同时引用多个数据库则应该增大该值例如:同时交替访问AB和C三个数据库时若OPEN_LINKS设置为则需花费等待连接时间此参数只用于分布事务若该参数设置为则不允许进行分布事务处理

()PROCESS

该参数指定同时连接到Oracle服务器上的最大用户进程数该参数值包括个后台进程和一个登录因此该参数值为则只能有个并发用户连接到服务器

()ROW_LOCKING

该参数指定行封锁方式若设置为ALWAYS则在修改表时只实施行封锁若设置为INTENT则行封锁只适用于SELECT FOR UPDATE而在修改时实施表封锁

影响系统性能类可变参数

()CHECKPOINT_PROCESS

该参数根据是否要求检查点而设置成TRUE或者FALSE当所有缓沖区的信息写到磁盘时检查点进程(CHPT)建立一个静态的点在归档日志文件中做一个记号表示有一个检查点发生检查点发生在归档日志转换的时候或当达到log_checkpoint_interval定义的块数的时候当设置此参数为TRUE时后台进程CHPT便可工作在检查点期间内若日志写进程(LGWR)的性能减低则可用CHPT进程加以改善

()DB_BLOCK_CHECKPOINT_BATCH

该参数的值设置得较大时可加速检查点的完成当指定的值比参数DB_BLOCK_CHECKPOINT_BATCH大时其效果和指定最大值相同

()DB_BLOCK_BUFFERS

该参数是在SGA中可作缓沖用的数据库块数该参数决定SGA的大小对数据库性能具有决定性因素若取较大的值则可减少I/O次数但要求内存空间较大每个缓沖区的大小由参数DB_BLOCK_SIZE决定

()DB_BLOCK_SIZE

该参数表示Oracle数据库块的大小以字节为单位典型值为该值一旦设定则不能改变它影响表及索引的FREELISTS参数的最大值

()DB_FILES

该参数为数据库运行时可打开的数据文件最大数目

()DB_FILE_MULTIBLOCK_READ_COUNT

该参数表示在顺序扫描时一次I/O操作可读的最大块数该最大块数取决于操作系统其值在或者是比较好

()DSCRETE_TRANSACTION_ENABLED

该参数实现一个更简单更快的回滚机制以改进某些事务类型的性能 当设置为TRUE时可改善某些类型的事务性能

()LOG_ARCHIVE_BUFFER_SIZE

此参数的值依赖于操作系统它与LOG_ARCHIVE_BUFFER 参数一起用于调整有归档日志的运行使其运行速度尽量加快但不能快到降低性能仅当直接归档到磁带设备时才需要增加这些参数的值重做日志缓沖区要等待归档日志缓沖区变得可用

() LOG_ARCHIVE_BUFFER

该参数指定用于归档的日志时的缓沖区数

() LOG_BUFFER

该参数指明分配给SGA中的日志缓沖区的字节数该参数值较大时可减少日志I/O的次数对于繁忙的系统不宜采用大于或等于K的值缺省值—般为数据库块的

()LOG_CHECKPOINT_TIMEOUT

该参数指明两个检查点之间的时间间隔若指定为则说明不允许进行基于时间的检查点

()LOG_CHECKPOINT_INTERVAL

该参数用来确定检查点进程的执行频率这个数值设置成取检查点之前处理的重做缓沖区块的数量

()LOG_FILES

该参数指定运行期间数据库可打开的日志文件数若需要较大的SGA空间而不需多个日志文件则可减少该值

()LOG_SIMULTANEOUS_COPIES

该参数是日志缓沖区副本闩锁的最大数为同时写日志项所用为提高性能可设置此参数为两倍的CPU数对单进程系统该值多数设置为此时断开闩锁

()LOG_SMALL_ENTRY_MAX_SIZE

该参数与LOG_SIMULTANEOUS_COPIES参数配合使用若日志项大于此项则在给缓沖区分配空间并获得日志复制闩锁之后用户进程释放日志复制闩锁

()OPTIMIZRER_MODE

若该参数的值为RULE则ORACLE优化器选择基于规则的优化;若设置为COST并且在数据字典中存在有统计信息则优化器选择基于代价的优化方法进行优化

()SEQUENCE_CACHE_ENTRIES

该参数指明在SGA中可进行高速缓存的序列数用于直接存取该高速缓存区是基于最近最少使用(LRU)的算法进行管理的若此值设置得较高则可达到较高的并发性

()SEQUENCE_CACHE_HASH_BUCKETS

该参数用于加速查看高速缓沖区最近请求的最新序列的桶式地址数每个桶式地址占个字节高速缓沖区以散列表排列该参数应为质数

()SERIALIZEABLE

此参数用于保证重复读的一致性当它设置为TRUE时查询可保证表级读一致以防止在此查询提交之前的修改

()SHARED_POOL_SIZE

该参数指定共享池的大小其中包括共享光标及存储过程在多用户系统中较大的SHARED_POOL_SIZE值可改善SQL语句的执行性能但较小的值可节省内存

()SMALL_TABLE_THRESHOLD

该参数决定SGA中用于扫描的缓沖区的数目若表的数目小于该值则该表可整个地读入高速缓存区若表大于该值则立即重用该缓沖区一般用缺省值可使性能最好

()SORT_AREA_TETAINED_SIZE

这是会话内存的最大数量用于内存排序当从排序空间提出最后—行时便释放该内存若排序要较大的内存则分配一临时段排序便可在盘上进行用于排序的最大总量可由SORT_AREA_SIZE指定而不用此参数可以分配同样大小的多个排序空间不过一般对于复杂的查询才需要

() SORT_AREA_SIZE

该参数用于指定进行外排序(磁盘)时所需PGA内存的最大数量以字节为单位当排序行写入磁盘时

上一篇:OracleDB组函数

下一篇:oracle删除重复行