为根据不同情况使用适当的索引,要学习各种类型的索引。因为只有明确了解表和索引的概念才能轻松解决复杂的内容。创建索引抽屉时,应考虑偶有发生的损益分歧点,考虑是否创建。总体来说,索引是用户使用SQL语句查找时为提高查找速度而创建的对象。但若创建太多索引,购买新书或废弃时,会产生额外的维护费用。这是由于添加或删除书籍时应更新现有的索引抽屉。......
2023-11-01
特定表根据访问模式生成不同索引,如图5-14所示。
图5-14 考虑索引生成标准
从根本上来说创建索引是为了加快查找速度。因此开发者会为加快自己的应用程序速度而请求添加或变更索引。但如果创建特定索引,反而会对整体执行性能造成不良影响。因此为确定特定表的索引构成,需要调查访问表的SQL的访问模式,并基于调查结果做出综合性的判断。此外,添加索引时最好计算查找负载量减少和DML负载量增加造成的大致损益。
1)使用 Col1+Col3+Col2时
(1) SQL1速度改善 :1000×0.5=500 s
(2) SQL2速度低下 :100000×1=100000 s
(3) SQL3速度改善 :5000×0.5=2500 s
2)使用 Col1+Col2+Col3时
(1) SQL1速度低下 :1000×0.5=500 s
(2) SQL2速度改善 :100000×1=100000 s(www.chuimin.cn)
(3) SQL3速度低下 :5000×0.5=2500 s
3)两个都生成时
(1) SQL1速度改善 :1000×0.5=500 s
(2) SQL2速度改善:100000×1=100000 s
(3) SQL3速度改善 :5000×0.5=2500 s
4)一个索引的DML负载量(速度低下)
(1) INSERT (100000) +DELETE(100000) +UPDATE(50000) =250000 次
(2) DML 执行时间 :250000×0.01 s=2500 s
(3)每添加 1个索引时DML负载量增加(20%~30%):增加2500 s×0.3=750 s
在上述情况下DML的负载量非常少。因此生成两个索引对整个系统较为有效。
有关数据库性能管理与调优的文章
为根据不同情况使用适当的索引,要学习各种类型的索引。因为只有明确了解表和索引的概念才能轻松解决复杂的内容。创建索引抽屉时,应考虑偶有发生的损益分歧点,考虑是否创建。总体来说,索引是用户使用SQL语句查找时为提高查找速度而创建的对象。但若创建太多索引,购买新书或废弃时,会产生额外的维护费用。这是由于添加或删除书籍时应更新现有的索引抽屉。......
2023-11-01
通过持续的调优工作和监测可以找到运行中应用程序的最佳值。此时,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语句的执行计划过程中,提示为用户提供了可直接进行介入的方法。提示是用户对优化器下达的指示,但优化器可能会忽略不合理的提示。意味着除了RULE和DRIVING_SITE外的所有提示将选择CBO用作优化器。使用Orange Template Browser查看优化器提示如图2-8所示。图2-8Orange Template Browser查看优化器提示单击方框部分图标()、单击最顶端菜单的[View]—[Template Browser]或按快捷键 Alt+F2则会运行[Template Browser]。......
2023-11-01
为解决此问题设计了IOT索引。IOT因为已在索引中添加了表结构,读取索引便能完成所有操作。IOT表面上来看是表,实际上是以主关键字为根据的索引,需要将主关键字作为前提条件使用。 IOT的索引行包含索引关键字值和non-key值。 IOT的索引中没有ROWID信息。普通表和IOT表的差别主要有以下几点:普通表以ROWID区分行,IOT以PK区分行。 IOT无法设置unique限制条件。 IOT比普通表节省存储空间。 IOT必须生成 primary key。......
2023-11-01
而重中之重仍然是调优访问数据库SQL语句的方法,因为很少能像SQL调优这样可以在短时间内以低成本得到效果。因此,为了性能考虑,开发者应不遗余力地投入时间和精力进行SQL调优。如果对未优化的SQL进行调优,则计划增设容量的许多企业都无须执行容量增设。大量数据排序的SQL或者大量访问数据块的未优化的SQL,可能会过量地使用内存。就因为这种现象,才会因未优化的SQL而出现磁盘I/O增加的情况。SQL的优化过程必然也涉及索引的优化。......
2023-11-01
实例已启动意味着数据库系统运行所需的后台进程已启动,并且处于“确保内存可用于数据处理”的状态,这种实例的调优将成为DBMS性能调优的重要基础。1) DBMS 内存 区域——SGASGA 是作为实例启动时确保控制器信息保存和数据处理空间的内存区域,存在于实例访问的所有进程共享的内存区域中。SGA相关调优的基准基本以命中率评价为主,通过适当地调整相关参数,将实际运行反映到评价结果中。......
2023-11-01
统计信息中保存有列选择度、数据量等大量信息,因此基于规则的优化器可以更灵活地创建执行计划。extent是由相关联的数据块构成的逻辑单位。否则,会因表的random access造成表扫描的平均成本增高。排序操作成本并非用于访问对象数据的成本,而是用于排序已提取数据的成本。若使用以特定列为标准排序的索引提取数据时,可以减少额外的排序操作成本。要了解SQL语句实际应访问的对象范围程度才能计算实际成本,这是非常重要的概念。......
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
相关推荐