欢迎来到天天文库
浏览记录
ID:52087415
大小:324.34 KB
页数:19页
时间:2020-03-31
《《数据库性能优化》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第18章数据库性能优化Oracle数据库提供了优良的性能,但这并不意味着开发人员在速度优化方面就再无用武之地。恰恰相反,开发人员可以通过多种途径来提高数据库的性能优化。本章主要针对以下三种:通过修改Oracle数据库的启动参数添加索引SQL语句的优化通过本章的学习,读者可以对Oracle数据库性能优化的常用手段有大致了解,并可以自行动手来提高数据库性能。18.1在物理层面上提高Oracle性能在物理层面上提高Oracle的性能,基于这样一个众所周知的原理——从内存中获取数据要快于从磁盘中获取。对于内存来说
2、,两个重要因素会影响性能(不止Oracle数据库,其他应用系统也是如此),一是可用内存大小;二是如何管理、分配和使用这些内存。对于用户来说,后者可操作性较差,所幸,Oracle10g提供了自动内存管理机制,因此,用户只需手动分配内存即可。Oracle的内存主要包括两部分,SGA和PGA。二者既可以在Oracle数据库启动时进行加载,也可以在数据库使用中进行设置。本节将简要介绍SGA和PGA的基本知识,以及如何设置这两个参数。18.1.1修改SGASGA是指SystemGlobalArea,即系统全局区。系
3、统全局区是共享的内存结构。其存储的信息是数据库的公用信息,例如,数据库的控制信息。无论多少个用户连接到当前数据库,都会共享SGA提供的内存。因此,SGA也被称为共享全局区。SGA主要由以下部分构成:共享池、缓冲区、大型池、Java池和日志缓冲区。1.查看当前数据库的SGA状态2.共享池3.修改SGA4.验证SGA修改后的效果18.1.2修改PGAPGA是指ProcessGlobalArea,即进程全局区。每位客户端用户连接到Oracle服务器,均会由服务器分配一定内存来保持连接,并将在该内存中实现用户私有
4、操作。所有用户连接的内存的集合便形成了Oracle数据库的PGA。Oracle10g提供了PGA内存的自动管理。参数pga_aggregate_target可以指定PGA内存的最大值。当参数pga_aggregate_target大于0时,Oracle将自动管理pga内存,并且各进程的所占PGA之和,不大于pga_aggregate_target所指定的值。SQL>showparameterpga;18.1.3异常情况在Oracle10g中,除了修改sga_target与pga_aggregate_tar
5、get之外,还可以手动修改各组件的大小。但是有时候,手动修改之后,由于参数不当,会造成数据库无法启动。Oracle10g数据库启动时,加载的启动参数文件主要有两种,spfilesid.ora和initsid.ora。其中,sid为实例名,二者的加载顺序为:首先尝试获取spfilesid.ora,如果获取失败,则使用initsid.ora文件启动。Oracle启动参数不当引起的启动失败,证明spfilesid.ora文件中的参数配置出错,而该文件是一个二进制文件,不能手动修改。18.2索引的使用索引是数据库
6、重要对象之一。索引也是数据库性能优化的重要手段之一。利用合适的索引,可以大大提高数据库性能。本节将简要介绍索引的基础知识,并在分析索引的原理上讲述索引的适用场合。18.2.1索引简介在查字典的场景中,我们可以有两种方式来获得要搜寻的目标:一是逐页翻查,二是根据字典的目录首先获得目标所在的页数,然后直接翻到该页,最终获得目标。对于一个数据表来说,索引并非必需。正如一本没有目录的字典,仍然是完整有效的。而一旦在数据表的某列上创建索引,那么Oracle必需为索引另辟新的空间,以存储列值与记录物理地址的对应关系。
7、正如为一本字典添加目录,那么必须添加若干页数来指定字与所在页数的对应关系。18.2.1索引简介18.2.2索引的创建与使用在Oracle数据表上创建索引,应使用createindex命令,其使用语法如下所示。createindex索引名称on表名(列名)【示例18-2】视图dba_objects可以获得数据库中所有对象的信息。可以利用该视图创建一个表,并在该表上创建索引,以验证索引的优越性。SQL>createtabletest_objects2asselect*fromdba_objects;Table
8、createdSQL>selectcount(1)fromtest_objects;COUNT(1)----------4774918.2.2索引的创建与使用18.2.3索引的开销索引在大表查询时可以显著提高查询速度,但并非所有数据表都适合建立索引。这是因为索引的创建需要较大的开销。为一个数据表创建索引只是开销的一部分,当数据表中的数据发生改变时,往往需要维护索引。这里的维护,针对数据的增加、删除、修改,所进行的具体操作也不相
此文档下载收益归作者所有