为根据不同情况使用适当的索引,要学习各种类型的索引。因为只有明确了解表和索引的概念才能轻松解决复杂的内容。创建索引抽屉时,应考虑偶有发生的损益分歧点,考虑是否创建。总体来说,索引是用户使用SQL语句查找时为提高查找速度而创建的对象。但若创建太多索引,购买新书或废弃时,会产生额外的维护费用。这是由于添加或删除书籍时应更新现有的索引抽屉。......
2023-11-01
在普通表中使用索引访问记录时执行两个过程,先以关键字值搜索索引获得ROWID,再通过ROWID读取表。而且关键字列将重复保存到索引和表中,如果关键字值太大则会浪费磁盘。为解决此问题设计了IOT(index organized table)索引。IOT因为已在索引中添加了表结构,读取索引便能完成所有操作。无须在表中读取与关键字值对应的记录,数据重复的问题也随之解决。IOT表面上来看是表,实际上是以主关键字(primary key)为根据的索引,需要将主关键字作为前提条件使用。生成IOT后索引和表在相同的存储结构中创建,执行SQL语句后无条件通过IOT索引搜索数据,可以快速搜索数据且使用较少的存储空间。
IOT具有以下特征:
(1) IOT的结构设置为将表数据加载到primary key的B[1]树index。
(2) IOT的索引行包含索引关键字值和non-key值。
(3) IOT的索引中没有ROWID信息。(因为可同时读取相应列的值)
IOT具有以下优点:
(1)执行范围搜索、同等搜索时与普通表相比可更快速进行 KEY-BASED ACCESS。
(2)全表扫描时会对primary key执行FULL INDEX SCAN,因此会自动执行排序操作。
(3)避免INDEX KEY COLUMN和ROWID出现STORAGE重复的情况,可节省存储空间。(www.chuimin.cn)
普通表和IOT表的差别主要有以下几点:
(1)普通表以ROWID区分行,IOT以PK区分行。
(2)普通表的FULL SCAN无法预测行的RETURN顺序,但IOT根据PK值的顺序输出。
(3) IOT无法设置unique限制条件。
(4) IOT无法使用簇。
(5) IOT比普通表节省存储空间。
(6) IOT必须生成 primary key。
(7) IOT的SECONDARY索引通过 primary key值和以该值为依据的“universal rowid”,即Urowid*创建索引(与普通索引不同,IOT未包含物理ROWID信息,而是包含逻辑通用ROWID(UROWID),可快速搜索)。
有关数据库性能管理与调优的文章
为根据不同情况使用适当的索引,要学习各种类型的索引。因为只有明确了解表和索引的概念才能轻松解决复杂的内容。创建索引抽屉时,应考虑偶有发生的损益分歧点,考虑是否创建。总体来说,索引是用户使用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
图5-14考虑索引生成标准从根本上来说创建索引是为了加快查找速度。但如果创建特定索引,反而会对整体执行性能造成不良影响。因此为确定特定表的索引构成,需要调查访问表的SQL的访问模式,并基于调查结果做出综合性的判断。此外,添加索引时最好计算查找负载量减少和DML负载量增加造成的大致损益。因此生成两个索引对整个系统较为有效。......
2023-11-01
用于客户业务的应用程序,会根据开发者的能力而生成千变万化的逻辑和SQL语句,其质量和完成度对整个系统的性能具有极大的影响。应在分析执行计划后选择性地使用HINT,最好不超过全部SQL语句的20%。因为如果过多地使用HINT,发生索引重置等变更事项时会加重应用程序的修改负担。如果未生成适当的索引用于优化器制定最佳执行计划,那么无论怎样调优应用程序的逻辑也无法达到满意的性能。......
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
相关推荐