- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据库优及性能
建议 建议:在WHERE条件表达式中,尽可能避免在要使用到索引的字段上使用函数,如果要使用函数建议创建相应的函数索引。 示例: 错误用法: SELECT FIELD FROM TABLENAME WHERE SUBSTRB(FIELD, 1, 4) = 5378 正确用法: SELECT FIELD FROM TABLENAME WHERE FIELD LIKE 5378% 建议 建议:当查询条件选择性很低时使用索引反而降低效率,这种情况下,应该用特殊的方法屏蔽该索引,如果字段为数值型的就在表达式的字段名后+ 0,为字符型的就并上空串。 示例: SELECT NUM_FIELD FROM TABLENAME WHERE NUM_FIELD + 0 30 SELECT STRING_FIELD FROM TABLENAME WHERE STRING_FIELD || = EXAMPLE 建议 建议:创建分区表的索引时,必须创建本地(LOCAL)索引。 说明:如果创建的是全局索引,在对分区表的某个分区TRUNCATE时,导致该索引失效;需要对该全局索引进行重新编译 建议 建议:避免通过DUAL表赋值。 说明:过多的对DUAL表的访问,导致调用该表的等待时间事件比较长。比如取系统时间之类的操作,往一个表插入记录等。 示例: 错误的用法: SELECT SYSDATE INTO v_Date FROM DUAL 正确的用法: v_Date := SYSDATE 错误的用法: INSERT INTO TABLENAME(FIELD1, FIELD2, FIELD3) SELECT 2, SYSDATE, SUSBTR(v_Name, 1, 30) FROM DUAL; 正确的用法: INSERT INTO TABLENAME(FIELD1, FIELD2, FIELD3) VALUES(2, SYSDATE, SUSBTR(v_Name, 1, 30)); 结束 感谢各位同事百忙中抽出时间来学习ORACLE 性能优化,希望在以后开发的过程中能帮到大家。 Oracle SQL性能优化 准备 Oracle存储结构 ● 逻辑存储结构 由块,区,段,表空间等组成 块?区?段?表空间?数据库 ● 物理存储结构 ? 控制文件 ? 数据文件 ? 重做日志文件等 表空间 逻辑存储结构----表空间(tablespace) 表空间是最大的逻辑单位.一个数据库可以有多个表空间,一个表空间可以包含多个数据文件(一个数据文件只能属于一个表空间).任何方案对象都被存储在表空间的数据文件中,虽然不能被存储在多个表空间中,但可以被存储在多个数据文件中.表空间分系统表空间和非系统表空间两类. 系统表空间包括SYSTEM表空间和SYSAUX表空间,其余的表空间就是非系统表空间. 段 逻辑存储结构----段(segment) 段用于存储表空间中某一种特定的具有独立存储结构的对象的所有数据,它由一个或多个区组成. 段的几种类型: ● 表段(数据段) ● 索引段 ● 临时段 ● 回退段 区 逻辑存储结构----区(extent) 区是由物理上连续存放的块构成的.区是Oracle存储分配的最小单位,由一个或多个块组成区,由一个或多个区组成段.当在数据库中创建带有实际存储结构的方案对象(如表,索引,簇)时,Oracle将为该方案对象分配若干个区,以便组成一个对应的段来为该方案对象提供初始的存储空间.当段中已分配的区都写满后,Oracle就为该段分配一个新的区,以便容纳更多的数据. 块 逻辑存储结构----块(block) 块是最小的数据管理单位,也是执行输入输出操作时的最小单位.相对应地,操作系统执行输入输出操作的最小单位是操作系统块. 块的大小是操作系统块大小的整数倍.以Windows 2000为例,操作系统块的大小是4kb,所以块的大小可以是4kb,8kb,16kb等 如果块的大小是4kb,EMP表每行的数据占100个字节.如果某个查询语句只返回1行数据,那么,在将数据读入到数据高速缓存时,读取的数据量是4kb而不是100个字节 数据库性能优化的内容 (1)调整数据结构的设计。 (2)调整应用程序结构设计。 (3)调整数据库SQL语句。(本次重点关注) (4)调整服务器内存分配。 (5)调整硬盘I/O,这一步是在信息系统开发之前完成的。 (6)调整操作系统参数。 SQL语句优化 SQL语句优化的具体方法 (1)SQL语句的开发技巧 (2)索引的使用 (3)开发SQL中的一些建议 选择最有效率的表名顺序
文档评论(0)