欢迎来到天天文库
浏览记录
ID:58881610
大小:438.00 KB
页数:120页
时间:2020-09-30
《Oracle数据库开发.SQL优化ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、ORACLE数据库开发信息公司2009.11SQL优化引言体系结构概述范式索引的使用SQL优化的建议一些有用的数据字典开发成功的Oracle应用程序基于数据库(或依赖于数据库)构建的应用是否成功,这取决于如何使用数据库。另外,从经验看,所有应用的构建都围绕着数据库。如果一个应用未在任何地方持久地存储数据难想象这个应用真的有用。应用总是在“来来去去”,而数据不同,它们会永远存在。从长远来讲,我们的目标并不是建应用,而应该是如何使用这些应用底层的数据。开发小组的核心必须有一些精通数据库的开发人员,他们要负责确保数据库
2、逻辑是可靠的,统能够顺利构建。如果已成事实(应用已经部署)之后再去调优,这通常表明,在开发期间没有认真考虑这些问题。了解数据库数据库的体系结构,数据库如何工作,以及有怎样的表现。并发控制是什么,并发控制对你意味着什么。性能、可扩缩性和安全性都是开发时就应该考虑的需求,必须适当地做出设计,不要指望能碰巧满足这些需求。数据库的特性如何实现。某个特定数据库特性的实际实现方式可能与你想象的不一样。你必须根据数据库实际上如何工作(而不是认为它应该如何工作)来进行设计。数据库已经提供了哪些特性,为什么使用数据库已提供的特性要
3、优于自行构建自己的特性。为什么粗略地了解SQL还不够,还需要更深入地学习SQL。DBA和开发人员都在为同一个目标努力,他们不是敌对的两个阵营,不是想在每个回合中比试谁更聪明。开发数据库软件的指导思想如果可能,尽量利用一条SQL语句完成工作。如果无法用一条SQL语句完成,就通过PL/SQL实现。如果在PL/SQL中也无法做到(因为它缺少一些特性,如列出目录中的文件),可以试试使用Java存储过程来实现。不过,有了Oracle9i及以上版本后,如今需要这样做的可能性极小。如果用Java还办不到,那就在C外部过程中实现
4、。如果速度要求很高,或者要使用采用C编写的一个第三方API,就常常使用这种做法。如果在C外部例程中还无法实现,你就该好好想想有没有必要做这个工作了。一个例子-绑定变量Oracle将已解析、已编译的SQL连同其他内容存储在共享池(SharedPool)中,这是系统全局区(SystemGlobalArea,SGA)中一个非常重要的共享内存结构。这个结构能完成“平滑”操作,但有一个前提,要求开发人员在大多数情况下都会使用绑定变量。如果你确实想让Oracle缓慢地运行,甚至几近停顿,只要根本不使用绑定变量就可以办到。绑定
5、变量SQL>settimingon;SQL>execproc1;PL/SQL过程已成功完成。已用时间:00:00:03.56SQL>deletefromt;已删除10000行。已用时间:00:00:03.48SQL>commit;提交完成。已用时间:00:00:00.04SQL>settimingon;SQL>execproc2;PL/SQL过程已成功完成。已用时间:00:00:49.91SQL>deletefromt;已删除10000行。已用时间:00:00:03.05SQL>commit;提交完成。已用时间:
6、00:00:00.01Oracle的锁定策略Oracle只在修改时才对数据加行级锁。正常情况下不会升级到块级锁或表级锁(不过两段提交期间的一段很短的时间内除外,这是一个不常见的操作)。如果只是读数据,Oracle绝不会对数据锁定。不会因为简单的读操作在数据行上锁定。写入器(writer)不会阻塞读取器(reader)。换种说法:读(read)不会被写(write)阻塞。这一点几乎与其他所有数据库都不一样。在其他数据库中,读往往会被写阻塞。尽管听上去这个特性似乎很不错(一般情况下确实如此),但是,如果你没有充分理解
7、这个思想,而且想通过应用逻辑对应用施加完整性约束,就极有可能做得不对。写入器想写某行数据,但另一个写入器已经锁定了这行数据,此时该写入器才会被阻塞。读取器绝对不会阻塞写入器。多版本读一致查询:对于一个时间点(pointintime),查询会产生一致的结果。非阻塞查询:查询不会被写入器阻塞,但在其他数据库中可能不是这样。insertintotselect*fromt;这个INSERT语句得到了T的一个读一致视图。它看不到自己刚刚插入的行,而只是插入INSERT操作刚开始时表中已有的记录行。许多数据库甚至不允许前面的
8、这种递归语句,因为它们不知道到底可能插入多少行。引言体系结构概述范式索引的使用SQL优化的建议一些有用的数据字典Oracle体系架构InstanceSGARedologbuffercacheSharedpoolDataDict.cacheLibrarycacheDBWRSMONPMONCKPTLGWROthersUserprocessServerprocessPG
此文档下载收益归作者所有