首页 理论教育数据库性能优化指南-数据库性能管理与调优

数据库性能优化指南-数据库性能管理与调优

【摘要】:实例已启动意味着数据库系统运行所需的后台进程已启动,并且处于“确保内存可用于数据处理”的状态,这种实例的调优将成为DBMS性能调优的重要基础。1) DBMS 内存 区域——SGASGA 是作为实例启动时确保控制器信息保存和数据处理空间的内存区域,存在于实例访问的所有进程共享的内存区域中。SGA相关调优的基准基本以命中率评价为主,通过适当地调整相关参数,将实际运行反映到评价结果中。

实例已启动意味着数据库系统运行所需的后台进程已启动,并且处于“确保内存可用于数据处理”的状态,这种实例(Instance)的调优将成为DBMS性能调优的重要基础。

1) DBMS 内存 区域——SGA

SGA (system global area)是作为实例启动时确保控制器信息保存和数据处理空间的内存区域,存在于实例访问的所有进程共享的内存区域中。SGA相关调优的基准基本以命中率评价为主,通过适当地调整相关参数,将实际运行反映到评价结果中。

2)缓冲区缓存命中率

数据缓冲区的缓存是处理所需数据的SGA的核心部分,用于保存表、索引、回滚段、簇等数据块的副本,减少因磁盘频繁输入输出导致的性能下降,并提高访问性能效率。在常规OLTP环境下,数据缓冲区缓存的命中率建议维持在90%以上,若低于80%则增大db_block _buffers参数。

3)共享池命中率

共享池是执行为访问用户所需的数据而构建的SQL语句和PL/SQL block等时所使用的非常重要的内存区域,它由数据字典缓存和库缓存组成,可通过shared_pool_size参数指定其大小。为了管理共享池内的数据,Oracle所用的算法是让字典缓存数据保存在内存的时间比库缓存数据更久。因此,调试库缓存命中率到令人满意的水平更合理。

此外,与数据缓冲区缓存丢失相比,数据字典缓存或数据库保存的缓存丢失对系统性能的负载程度影响更大,因此调试时比起缓冲区缓存,要优先给共享池预留足够的内存。(www.chuimin.cn)

库缓存保存SQL cursors、PL/SQL程序、JAVA classes等的执行状态,也是模式对象的信息或元数据的保存区域。Oracle在编译或解析SQL cursors、PL/SQL程序时使用此类元数据。

当发生此类解析相关负载占数据库活动的10%以上的重大问题时,为了最小化SQL语句执行时的“parse”或“execute”阶段可能发生的库缓存丢失,必须进行性能调优。

为评估会影响性能的库缓存丢失的发生程度,可检索V $LIBRARYCACHE动态性能视图,若显示超过1%,则增大shared_pool_size参数。

字典缓存是在数据库逻辑、物理结构中存储如字典表和索引、内部存储管理用表等对象信息的内存区域。此外,还保存了用户信息、表中定义的完整性约束、表的列名和数据类型等信息,在解析SQL语句时会访问到该缓存。为评估影响性能的字典缓存丢失的发生程度,检索V $ROWCACHE动态性能视图,若显示超过10%,则增大shared pool_size参数。

4)磁盘分类

在OLTP和批处理同时进行的非常复杂的业务运营环境中,过多的磁盘排序会影响整体性能,因此当磁盘对内存的排序率超过 10%时,要适当地调整sort_area_size参数的大小。

为提高效率,每个批处理操作进程(会话)都要设置合适的sort_area_size以便灵活地操作。