数组是由同一类型数据元素组成的大小可变的集合。图3-16 数组的创建第1步2)将需要的有效数据对象拖入数组框,切记此要点,如果不分配数据类型,该数组将显示为带空括号的黑框。图3-17 数组创建第2步在数组框图的左端或左上角为数组的索引值,显示在数组左边方框中的索引值对应数组中第一个可显示的元素,通过索引值的组合可以访问到数组中的每一个元素。......
2023-11-07
扫描索引和访问表时DATA FILE和DB BUFFER之间的I/O单位为1 BLOCK。因此,扫描索引时以“读取多少BLOCK”直接确定“执行几次I/O”,以此确定执行速度。但TABLE FULL SCAN时DATA FILE和DB BUFFER之间的I/O单位作为DB_FILE_MULTIBLOCK_READ_COUNT参数值,可读取全表。因此,执行速度根据全表的块数决定。
(1) 1个行通过 UNIQUE INDEX访问表时 I/O:
ROOT BLOCK+BRANCH BLOCK+LEAF BLOCK+TABLE 1 BLOCK=4 I/O
(2)多个行通过UNIQUE INDEX访问表时I/O:
ROOT BLOCK+BRANCH BLOCK+LEAF BLOCK n个+TABLE BLOCK n个=?I/O
(3) 1个行通过 FULL SCAN访问表时 I/O:
表全部块数 /DB_FILE_MULTIBLOCK_READ_COUNT
(4)多个行通过 FULL SCAN访问表时 I/O:
表全部块数 /DB_FILE_MULTIBLOCK_READ_COUNT
1)索引数据生成
随着数据在客户表中生成,显示如何生成“姓名”列的索引数据,如图3-3所示。应先了解以下各种表和索引的概念,充分考虑后再进行管理。
(1)在客户表中添加一个行时,如果含有姓名则每次生成一个索引;如果姓名为null则不会生成索引。因此,索引的行数始终小于或等于表的行数。
(2)索引将根据成为索引的列值按升序进行创建,包含binary tree结构中已转换的balanced tree结构。
(3)索引和表是独立的对象,事务影响不大时可根据需要随时删除、变更索引。
(4)数据变化较大的表应最大限度地减少索引,必要时应定期执行REORG操作。
图3-3 索引数据生成(www.chuimin.cn)
注意:Orange还包含Online Reorg Edition。作为对象Oracle DBMS的Online Reorg正在运行时也可对DBMS内的多个对象进行REORG,应用程序的停机时间为非应用业务而设计。因此适用于24 h持续进行的E-Business业务数据库操作系统。REORG操作可起到的效果包括:通过重新排列数据库内的表空间、表、索引等最小化I/O需求;快速服务响应各个QUERY和BATCH JOB、APPLICATION SERVER的操作请求;增加了可用存储空间,事先阻止因空间(space)不足产生错误并恢复浪费的磁盘空间,提高数据库的性能和减少停机时间影响等。
(5)为优化查找几乎未变更数据的表而添加索引时,无须限制。
(6)索引的生成 Script: CREATE (UNIQUE) INDEX [INDEX_NAME] ON CUSTOMER(NAME);索引中包含相应表的行位置相关信息(ROWID),表的行位置变化时会变更该位置。因此,对于因表的物理存储位置变更操作或批量操作时而受到影响的索引,最好对其进行 DROP+RECREATE。
2)表访问(无索引时)
使用查找条件的列未包含索引时无法应用索引,需要查找整个表,一般称为FULLTABLE SCAN。扫描整个表时,就算中途找到满足条件的数据,剩余部分中还可能有满足条件的数据,所以结果还是要读取整个表。执行此类FULL SCAN时,表的大小(block数)会影响速度。
(1) physical I/O数:表块数 /DB_FILE_MULTIBLOCK_READ_COUNT。
(2) FULL-TABLE SCAN时表块将根据 LRU算法(需要最近使用最少的内存空间时最先使用的算法)记录为least block。因此引起physical I/O的可能性始终很高,是降低DB buffer hit ratio的因素,从整体上看会成为降低性能的要素。为解决此问题,可对表设置CACHE option或使表位于DB BUFFER的KEEP区域。
(3)对表进行 FULL SCAN时,访问路径在执行计划中将按以下方式表示:
TABLE ACCESS (FULL ) OF' CUSTOMER'。
3)表访问(有索引时)
如果用于查找条件的列已生成为索引,并且判断应用该索引时更快,则会通过扫描索引访问表。索引扫描中如果遇到不满足条件的数据,则会判断剩余部分也没有满足条件的数据,将停止扫描。在索引扫描时,索引扫描的访问范围会影响速度。
(1) Physical I/O数:索引扫描块数(root+branch+ leaf)+表扫描块数。
(2) INDEX SCAN时表块将根据LRU算法记录为recently block。因此引起physical I/O的可能性始终很低,且再次使用的可能性较高,是提高 DB buffer hit ratio的因素。
(3)访问路径按以下方式表示:
作为参考,如果索引是NONUNIQUE,为输出准确的查找值必须始终确认不满足条件的数据,因此需要多访问一个超出有效范围的行。
有关数据库性能管理与调优的文章
数组是由同一类型数据元素组成的大小可变的集合。图3-16 数组的创建第1步2)将需要的有效数据对象拖入数组框,切记此要点,如果不分配数据类型,该数组将显示为带空括号的黑框。图3-17 数组创建第2步在数组框图的左端或左上角为数组的索引值,显示在数组左边方框中的索引值对应数组中第一个可显示的元素,通过索引值的组合可以访问到数组中的每一个元素。......
2023-11-07
图5—9“设计表”窗口④在“设计表”窗口中选择要创建索引的字段“成绩”,右键点击打开快捷菜单。图5—10“索引/键”对话框⑥在“索引/键”对话框中单击“添加”按钮,系统将自动创建索引。......
2023-11-24
表示索引为唯一性索引。指索引的长度,必须是字符串类型才可以使用。如果在创建索引时没写索引名称,MySQL会自动用字段名作为索引名称。其中table_name是要增加索引的表名,column_list指出对哪些列进行索引,多列时各列之间用逗号分隔。另外,ALTER TABLE允许在单个语句中更改多个表,因此可以在同时创建多个索引。另外,不能用CREATE INDEX语句创建PRIMARY KEY索引。......
2023-10-29
目前为止主要介绍了索引的概念,现在开始介绍哪种情况要使用索引。为正确使用索引,应熟练掌握以下五个内容:理解索引和表的大小、访问范围对性能的影响,熟练掌握相关索引的正确使用方法。了解组合索引的使用标准和使用方案。与查找相比DML的负担更大时,执行较多DML语句时若使用索引则会成为降低系统性能的原因。......
2023-11-01
B*树状索引具有树形结构。图3-1B*树原理下面介绍如何使用B*树索引搜索数据。B*树的特征如下:最常用作 Oracle的默认索引。为更好地调优,应充分了解B*树索引的缺点。以下为B*树索引的缺点:在B*树索引中,实际列值也应保存在索引中,因此管理大容量数据时可能会成为负担。 B*树索引的列值选择度良好才能保证性能良好。在B*树Index中,访问相同的表时将并行使用两个以上的索引,因此有许多限制。......
2023-11-01
设计索引时应注意以下事项:1)对大容量表应用索引根据 DB_ BLOCK_SIZE参数值确定大容量表的标准。要使用索引的列值选择度良好时并不受影响,但选择度良好条件和不良条件同时存在的情况时,为性能考虑最好使用索引。在这种情况下,对选择度良好的列使用索引,对选择度不良的列使用全表扫描,从而确定执行计划。因此,使用索引时应始终充分全面地考虑后慎重进行。......
2023-11-01
为根据不同情况使用适当的索引,要学习各种类型的索引。因为只有明确了解表和索引的概念才能轻松解决复杂的内容。创建索引抽屉时,应考虑偶有发生的损益分歧点,考虑是否创建。总体来说,索引是用户使用SQL语句查找时为提高查找速度而创建的对象。但若创建太多索引,购买新书或废弃时,会产生额外的维护费用。这是由于添加或删除书籍时应更新现有的索引抽屉。......
2023-11-01
基于COM的Visual C++数据库访问机制研究武汉东湖学院计算机科学学院袁琼文章描述了基于COM的Visual C++两种高级数据库访问技术OLEDB和ADO的机制,对二者的特点、性能、差异以及使用进行了探讨。OLE DB和ADO 是基于COM的数据库访问技术,是VisualC++开发数据库应用中提供的新技术,比传统数据库访问技术更加优越。为此,Visual C++提供了ATL模板,用于设计OLE DB数据提供程序和数据应用程序。......
2023-12-04
相关推荐