通过持续的调优工作和监测可以找到运行中应用程序的最佳值。此时,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
SORT MERGE JOIN指各自访问两侧表的处理范围后逐一扫描排序结果,同时使用连接条件进行合并(Merge)的方式。通过SORT MERGE JOIN引导调优的情况几乎不存在,但可能对减少RANDOM ACCESS、大容量处理对象集有效。由前文可知,NESTED LOOP JOIN访问大容量数据时会执行较多RANDOM ACCESS,可能会降低性能,但SORT MERGE JOIN执行全表扫描时可执行MULTI BLOCK I/O和SEQUENTIAL READ,可能会得到更好的性能。该方式最大的特征是不会接收对方的任何值,仅使用自己拥有的条件就可确定处理范围,因此可以减少随机访问的情况,但始终会执行全表扫描。以下将介绍SORT MERGE JOIN的其他特征以及能保证良好性能的情形。
1)特征
(1)同时进行处理。表访问各自的处理范围再进行排序。
(2)各个表不会从其他表接收任何常数值。即仅由各自指定的常数值缩小范围。
(3)无法执行部分范围处理,始终执行全范围处理。
(4)主要以扫描方式处理。为缩小自身处理范围而使用索引时才为随机访问,合并操作为扫描方式。
(5)就算指定条件中的所有列均有索引,也不会全部使用。具有链路作用的列完全不会使用索引。
(6)与连接方向完全无关。
(7)为缩小自身处理范围而使用的索引将选择最有利的一个索引。虽然其他条件无法使用索引,但能减少操作对象,因此有重要意义。
2)使用标准
(1)进行全范围处理时较为有效。
(2)在对方表中不接收任何常数值就能缩小处理范围时较为有效。将接收常数值后处理(NESTED LOOP JOIN)范围的大小与缩小处理范围后处理(SORT MERGE JOIN)范围的大小进行比较时,若接收常数值后范围缩小约30%以上,SORT MERGE JOIN通常有效。但对部分范围处理则完全不同。在这种情况下,不要比较要处理的全部范围,为达到第一个数组大小而需要判断访问的范围。
(3)主要处理量较大时(始终要进行全范围处理时)有效。这是由于处理方式主要采用扫描方式,因此可以减少大量随机访问。(www.chuimin.cn)
(4)这不会受到链路异常状态的影响,因此无须为链路生成索引。
(5)如何缩小自身处理范围对执行速度产生很大的影响,因此更为有效地构成访问索引非常重要。
(6)处理方式为全范围处理,因此数组大小不会影响执行速度。可用的数组越大则FETCH次数越少。当然,若数组过大则会对系统产生不良影响。
(7)通常NESTED LOOP JOIN对待处理数据量较少的在线应用程序更为有效,因此请勿随意使用SORT MERGE JOIN。
(8)优化器目标(Goal)为“ALL_ROWS”时,通过 SORT MERGE JOIN确立执行计划的可能性较高,若要执行部分范围处理,应注意优化器目标的指定方式。
参考以下例子:
优化器判断以上查询语句的执行计划的过程如下。
3)条件语句分析
(1)连接条件的索引:a.PK=b.FK,两侧均不存在。
(2)连接顺序 :tab2→tab1。
(3)连接方法:SORT MERGE JOIN(参数 HASH_JOIN_ENABLED的值为FALSE时)。
有关数据库性能管理与调优的文章
通过持续的调优工作和监测可以找到运行中应用程序的最佳值。此时,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
对象表的连接顺序和方法不同是为了加快访问速度。因此即使变更连接方法和顺序,结果值也不能有任何变化。连接时表的驱动顺序是性能中的重要组成部分。4)优化器的连接选择对于参与连接条件语句的列,索引位置对优化器决定执行计划时的连接顺序和方法有很大影响。连接列的两侧均无索引时,将SORT MERGE JOIN或HASH 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
实例已启动意味着数据库系统运行所需的后台进程已启动,并且处于“确保内存可用于数据处理”的状态,这种实例的调优将成为DBMS性能调优的重要基础。1) DBMS 内存 区域——SGASGA 是作为实例启动时确保控制器信息保存和数据处理空间的内存区域,存在于实例访问的所有进程共享的内存区域中。SGA相关调优的基准基本以命中率评价为主,通过适当地调整相关参数,将实际运行反映到评价结果中。......
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
为根据不同情况使用适当的索引,要学习各种类型的索引。因为只有明确了解表和索引的概念才能轻松解决复杂的内容。创建索引抽屉时,应考虑偶有发生的损益分歧点,考虑是否创建。总体来说,索引是用户使用SQL语句查找时为提高查找速度而创建的对象。但若创建太多索引,购买新书或废弃时,会产生额外的维护费用。这是由于添加或删除书籍时应更新现有的索引抽屉。......
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
统计信息中保存有列选择度、数据量等大量信息,因此基于规则的优化器可以更灵活地创建执行计划。extent是由相关联的数据块构成的逻辑单位。否则,会因表的random access造成表扫描的平均成本增高。排序操作成本并非用于访问对象数据的成本,而是用于排序已提取数据的成本。若使用以特定列为标准排序的索引提取数据时,可以减少额外的排序操作成本。要了解SQL语句实际应访问的对象范围程度才能计算实际成本,这是非常重要的概念。......
2023-11-01
相关推荐