通过持续的调优工作和监测可以找到运行中应用程序的最佳值。此时,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
用于客户业务的应用程序,会根据开发者的能力而生成千变万化的逻辑和SQL语句,其质量和完成度对整个系统的性能具有极大的影响。开发者的能力包括对关系型数据库系统的理解度及功能的利用率,优化器的理解度,SQL的构思能力等。
低效的逻辑或SQL语句编写将会引起大量不必要的磁盘和内存 I/O,消耗大量系统资源(CPU、内存、网络等),是对性能产生不良影响的关键因素,因此要由知识丰富和有经验的负责人定期验证应用程序的开发质量。
此外,最好在开发时、系统开放时、运行中性能下降时等必要时期向知识丰富和有经验的专家咨询(诊断和调优)。
1)优化器(Optimizer)模式选择
所谓优化器,指的是一种为有效处理所构建的SQL语句而制定执行计划的数据库内部逻辑功能。此类优化器按最终目标分为RULE-BASED模式(RULE)和COST-BASED模式(FIRST_ROWS, ALL_ROWS),默认为 CHOOSE模式。
此处RULE表示根据SQL语句的Where子句中使用的列和运算形式,根据所用索引的绝对优先权制定执行计划,COST则根据以相应对象的列构成、数据的选择度等统计值制定以成本为中心的执行计划。CHOOSE模式是将所有执行计划的全部决策权交给优化器处理的基本操作形式,根据系统情况选择RULE-BASED模式或COST-BASED模式。
通过ANALYZE操作按照数据累积类型分析等标准定期变更统计数据。
影响优化器执行计划模式的设置水平和因素见表 1-1。
表1-1 设置水平和因素
开发之前决定此类优化器模式的选择策略是非常重要的问题,设计者应综合考虑各种条件并慎重判断,决定后要保持一致性,模式选择可参考表1-2。
表1-2 优化器模式选择(www.chuimin.cn)
此外,无论如何设置优化器模式,从决定SQL语句执行计划的趋势方面来看,数据库有些部分不会按我们的意图制定,因此要适当地采用系统所提供的各种HINT功能。应在分析执行计划后选择性地使用HINT,最好不超过全部SQL语句的20%。因为如果过多地使用HINT,发生索引重置等变更事项时会加重应用程序的修改负担。
2)索引(Index)策略
根据从开发前期阶段开始对数据访问方式的全面分析,索引作为需策略性管理的关键要素之一,会对性能产生巨大的影响。但遗憾的是,作为大部分开发项目核心人员的设计者、管理者、DB管理员等人员的水平还不足以有策略性地有效地管理索引,只能被动应对。甚至有些人存有开展业务后等到数据累积导致性能下降时再生成所需索引的安逸想法。这是亡羊补牢式的安逸思考方式,而且一旦失去用户的信任将很难再恢复。
此外,已生成大量索引的事实本身并不重要,不必要的索引只是导致性能下降和存储空间浪费的因素。因此,系统地分析整个应用程序的数据访问类型后,务必进行管理,以便生成最少的所需索引。
如果未生成适当的索引用于优化器制定最佳执行计划,那么无论怎样调优应用程序的逻辑也无法达到满意的性能。因此,重要索引的选择应按步骤系统地进行,其内容整理如下:
(1)收集、分析访问表的所有访问类型(事件个数提取);
(2)对象列的选择和数据选择度调查;
(3)优先解决关键访问路径(反复执行的主要类型);
(4)决定组合索引列的排序顺序;
(5)索引创建和应用程序的应用确认。
有关数据库性能管理与调优的文章
通过持续的调优工作和监测可以找到运行中应用程序的最佳值。此时,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
HASH JOIN是突出SORT MERGE JOIN优点并弥补其缺点的连接方法。该连接是对连接的对象表应用 HASH函数进行合并的方法。其特征是不仅只使用 HASH JOIN,而且提供通过并行处理大容量数据的最佳解决方案。但不建议在OLTP等状况下使用,因为HASH JOIN已为大容量处理进行优化,会占用大量系统资源。不会受JOIN条件(链路)索引有无的影响。2)使用标准由于链路使用HASH Key,因此仅用于EQUI-JOIN。在执行计划中成为HASHING对象的表始终在最前面,但如果是OUTER JOIN则完全相反。......
2023-11-01
SORT MERGE JOIN指各自访问两侧表的处理范围后逐一扫描排序结果,同时使用连接条件进行合并的方式。通过SORT MERGE JOIN引导调优的情况几乎不存在,但可能对减少RANDOM ACCESS、大容量处理对象集有效。以下将介绍SORT MERGE JOIN的其他特征以及能保证良好性能的情形。通常NESTED LOOP JOIN对待处理数据量较少的在线应用程序更为有效,因此请勿随意使用SORT MERGE 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
对象表的连接顺序和方法不同是为了加快访问速度。因此即使变更连接方法和顺序,结果值也不能有任何变化。连接时表的驱动顺序是性能中的重要组成部分。4)优化器的连接选择对于参与连接条件语句的列,索引位置对优化器决定执行计划时的连接顺序和方法有很大影响。连接列的两侧均无索引时,将SORT MERGE JOIN或HASH JOIN用作连接方法。......
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
相关推荐