通过持续的调优工作和监测可以找到运行中应用程序的最佳值。此时,UNIX内核的内存不易减少,需要有效地调优数据库内存区域,使用更少内存发挥相同水平的性能。如果内核内存使用约100 MB,并发用户为30名,每个Oracle进程的内存为 10 MB,假定 sort_area_size为 1MB,按以下公式计算出430 MB。100 MB+30×=430 MB因此,物理内存为1 GB的系统,可分配大约600 MB的SGA使用。......
2023-11-01
实例已启动意味着数据库系统运行所需的后台进程已启动,并且处于“确保内存可用于数据处理”的状态,这种实例(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以便灵活地操作。
有关数据库性能管理与调优的文章
通过持续的调优工作和监测可以找到运行中应用程序的最佳值。此时,UNIX内核的内存不易减少,需要有效地调优数据库内存区域,使用更少内存发挥相同水平的性能。如果内核内存使用约100 MB,并发用户为30名,每个Oracle进程的内存为 10 MB,假定 sort_area_size为 1MB,按以下公式计算出430 MB。100 MB+30×=430 MB因此,物理内存为1 GB的系统,可分配大约600 MB的SGA使用。......
2023-11-01
图1-7磁盘I/O瓶颈现象调查最理想的I/O应用就是所有控制器相应的设备都得以均衡使用。图1-10所示为调查Oracle数据库内文件的I/O的SQL。图1-10调查Oracle数据库内文件通过上述分析结果,可采取的措施包括:将 /oracle上数据文件的一部分移至有其他控制器的挂载点,通过移动 RBS、TEMP、USERS中一两个数据文件使 I/O平衡并分散。该操作非一次性操作,分配一次后要重新进行监测,确定 I/O是否分散均衡。......
2023-11-01
在制定由优化器执行的SQL语句的执行计划过程中,提示为用户提供了可直接进行介入的方法。提示是用户对优化器下达的指示,但优化器可能会忽略不合理的提示。意味着除了RULE和DRIVING_SITE外的所有提示将选择CBO用作优化器。使用Orange Template Browser查看优化器提示如图2-8所示。图2-8Orange Template Browser查看优化器提示单击方框部分图标()、单击最顶端菜单的[View]—[Template Browser]或按快捷键 Alt+F2则会运行[Template Browser]。......
2023-11-01
SORT MERGE JOIN指各自访问两侧表的处理范围后逐一扫描排序结果,同时使用连接条件进行合并的方式。通过SORT MERGE JOIN引导调优的情况几乎不存在,但可能对减少RANDOM ACCESS、大容量处理对象集有效。以下将介绍SORT MERGE JOIN的其他特征以及能保证良好性能的情形。通常NESTED LOOP JOIN对待处理数据量较少的在线应用程序更为有效,因此请勿随意使用SORT MERGE JOIN。......
2023-11-01
HASH JOIN是突出SORT MERGE JOIN优点并弥补其缺点的连接方法。该连接是对连接的对象表应用 HASH函数进行合并的方法。其特征是不仅只使用 HASH JOIN,而且提供通过并行处理大容量数据的最佳解决方案。但不建议在OLTP等状况下使用,因为HASH JOIN已为大容量处理进行优化,会占用大量系统资源。不会受JOIN条件(链路)索引有无的影响。2)使用标准由于链路使用HASH Key,因此仅用于EQUI-JOIN。在执行计划中成为HASHING对象的表始终在最前面,但如果是OUTER JOIN则完全相反。......
2023-11-01
统计信息中保存有列选择度、数据量等大量信息,因此基于规则的优化器可以更灵活地创建执行计划。extent是由相关联的数据块构成的逻辑单位。否则,会因表的random access造成表扫描的平均成本增高。排序操作成本并非用于访问对象数据的成本,而是用于排序已提取数据的成本。若使用以特定列为标准排序的索引提取数据时,可以减少额外的排序操作成本。要了解SQL语句实际应访问的对象范围程度才能计算实际成本,这是非常重要的概念。......
2023-11-01
而重中之重仍然是调优访问数据库SQL语句的方法,因为很少能像SQL调优这样可以在短时间内以低成本得到效果。因此,为了性能考虑,开发者应不遗余力地投入时间和精力进行SQL调优。如果对未优化的SQL进行调优,则计划增设容量的许多企业都无须执行容量增设。大量数据排序的SQL或者大量访问数据块的未优化的SQL,可能会过量地使用内存。就因为这种现象,才会因未优化的SQL而出现磁盘I/O增加的情况。SQL的优化过程必然也涉及索引的优化。......
2023-11-01
1)例子(一)正确使用SQL的例子(一)如图5-12所示。因此B.ORDD = : TrDay或B.ORDD = : WorkDay的扫描范围较窄,使用索引时响应速度非常快。在这种情况下,优化器使用OR从内部分为两个SQL语句并各自使用索引,再将执行结果合并为一个结果。图5-13正确使用SQL的例子(二)问题:连接的两个表的条件中决定扫描范围的条件是"AND SUBSTR LIKE : IN_org_cd AND SUBSTR < 600000"。因此可按以下方法变更条件公式并使用相应索引。......
2023-11-01
相关推荐