让oracle跑得更快——oracle 10g性能分析与优化思路,[让oracle跑得更快oracle10g性能分析与优化思路].doc...

41528d3028836879cd698677c3999917.gif[让oracle跑得更快oracle10g性能分析与优化思路].doc

在线事务OLTP在线分析OLAP在ORACLE数据库中,凡是分配了存储空间的,都称为段,所有段并不一定指的是表,也可能是表的一个分区,还可能是索引、大对象LOB,或者IOT索引表,物化视图等。第1章引起数据库性能问题的因素系统设计包含软件的设计;软件系统架构的设计;软件代码的编写;数据库的设计;数据库的类型选择;根据数据库类型的所有数据库对象的设计;硬件的设计。存储结构的设计;硬件的性能选择;冗余设计。11软件设计对数据库的影响111软件架构设计对数据库性能的影响对于并发操作比较大的系统,在数据库之前建一个缓冲用户请求的中间件服务。112软件代码的编写对数据库性能的影响通常指的是应用程序代码中对数据库操作的代码部分对数据库产生的影响。具体来讲就是SQL语句或是PL/SQL包。SQL语句造成的影响SQL语句本身在逻辑上就是效率低下的SQL语句没有绑定变量性能低下的SQL语句使用HINT、不合适的外连接,谓词的隐含转换,优化器的选择、多表关联、数据的访问方式(索引还是全表扫描)以及表关联方式的选择HAHJOIN,NESTEDLOOPS1121人为地在SQL代码中加入HINT来约束SQL的执行计划SELECT/INDEXT1IND_T1/COL1,COL2FROMT1WHERECOL1ANDCOL11000SELECTA,B,C,DFROMT1,T2WHERET1AT2CANDT2D10001123CBO下优化器模式的选择通常对于一种功能单一的数据库来讲,在实例级设置一个优化器模式就可以了。对于OLAP系统,可以把优化器模式设置成ALL_ROWS。对于一些分页操作比较多的网站类数据库,设置成FIRST_ROWS会更好一些。可以通过HINT的方式来讲优化模式转换成FIRST_ROWSSELECTFROMSELECT/FIRST_ROWS10/A,ROWNUMRNUMFROMSELECT/FIRST_ROWS10/ID,NAMEFROMT1ORDERBYIDAWHEREROWNUM11124没有绑定变量的SQL对OLTP系统影响较大。1125PL/SQL包存储过程是经过成功编译后存放在数据库中的代码,执行起来的效率要比程序代码中PL/SQL包的效率高很多,因为它不再需要做语法和语义的分析。语法的分析指的是数据库对代码进行检查,看它是否存在语法上的错误;语义的分析是查看语句执行的对象是否存在,比如需要操作的表、列等,以及是否有执行这些操作的权限。12数据库的设计通常,可以把业务分为两类在线事务处理系统OLTP强调数据库的内存效率,强调内存各种指标的命中率,强调绑定变量,强调并发操作。在线分析系统OLAP或者DSS决策支持系统强调数据分析,强调SQL执行时长,强调I/O,强调分区等。121OLTP数据库1用户并发数2数据库内存设计内存数据库,比如ORACLE的TIMESTEN内存的设计通常是通过调整ORACLE和内存相关的初始化参数来实现的。包括SGA的大小(DATABUFFER、SHAREDPOOL)、PGA大小排序区,HASH区等。OLTP系统是一个数据库变化非常频繁、SQL语句提交非常频繁的系统。对于数据块来说,应尽可能让数据块保存在内存当中。对于SQL来说,尽可能使用变量绑定技术来达到SQL的重用,减少物理I/O和重复的SQL解析,能极大地改善数据块的性能。方法先给这些参数设定一个经验值,然后通过搭建测试环境对数据块进行测试,通过一些性能报告比如AWR或者STASPACK报告作为依据,不断地调整这些参数值,以达到最佳的性能。3数据库热快HOTBLOCK当一个块被多个用户同时读取的时候,ORACLE为了维护数据的一致性,需要使用一种称为LATCH的东西来串行化用户的操作。当一个用户获得了这个LATCH后,其他的用户就只能被迫等待。获取这个数据块的用户越多,等待就越明显,就造成了这种热快问题。这种热快可能是数据块,也可能是回滚段块。对于数据块来讲,通常是数据块上的数据分布不均匀导致。如果是索引的数据块,可以考虑创建反向索引来达到重新分布数据的目的。对于回滚段数据块,可以适当多增加几个回滚段来避免这种争用。122OLAP数据库磁盘I/O速度SQL的优化分区技术,这种主要体现在数据管理上。比如数据加载,可以通过分区交换的方式实现。备份可以通过备份分区表空间实现。删除数据可以通过分区进行删除。分区与非分区性能的比较1当查询的范围正好落在某个分区的时候分区的效率要高于没有分区的。2当查询的范围跨越几个分区时分区索引要低于非分区索引。13数据库的硬件设计数据库的硬件设计在性能上主要体现在CPUI/O负载情况数据的存储和安全应该主要考虑以下问题131存储容量数据的容量,可以通过估算占有存储空间的所有数据库对象的容量。占用空间的对象,可以通过DBA_SEGMENTS视图获取。数据库的空间的分配是以段的形式分配的,凡是段对象,都是要占用空间的,它包括表、索引、物化视图、其他的一些大对象比如全文索引对象。开发阶段,可以通过预测每个表的记录数,然后根据字段的总长度,计算出表的容量。表的容量记录数字段长度。计算表容量的实例CREATETABLETASSELECTFROMDBA_OBJECTSCREATEINDEXT_INDONTOBJECT_ID1表分析CDBMS_STATSGATHER_TABLE_STATS TEST , T ,CASCADETRUE2获取表的平均行长SELECTAVG_ROW_LENFROMUSER_TABLESWHERETABLE_NAME T 3计算表数据占用的空间平均行长记录数N4获取表数据和索引占用的空间大小SELECTTSEGMENT_NAME,TSEGMENT_TYPE,TBYTESFROMUSER_SEGMENTSTWHERETSEGMENT_NAMEIN T , T_IND 5计算索引和表大小的百分比索引段的大小/表数据段的大小SELECTTRUNC1048576/6291456100FROMDUAL6计算表的空间使用量93BYTESN116预留出备份数据所占用的空间。132存储的物理设计SAN存储结构133数据的安全1331DATAGUARD结构用户对数据的安全性很高,并且对系统的宕机时间要求很高。它是数据库级别的一个冗余结构。1332RAC结构它是实例级的一个冗余结构,它能够保证数据库在一个实例出现故障之后,用户操作可以无缝地由另外一个实例接管。1333RMAN归档的方式当数据库损坏时,如果我们保留有完整的备份集和归档日志,就可以讲数据库恢复到最后出现故障时的时间点。缺点是需要较长的宕机时间。1334数据导出方式EXP/IMP,EXDP/IMDP第2章锁和阻塞21关于锁22锁和阻塞查看阻塞信息BLOCK1表示这个SID就持有了一个锁,并且阻塞其他会话获取这个锁。REQUEST0表示当前会话正在等待一个锁TYPE定义锁的类型LMODE指定锁的模式ID1和ID2定义了这个锁的相关信息,指定这个事务在回滚段中的位置。SELECTSID,TYPE,ID1,ID2,LMODE,REQUEST,BLOCKFROMVLOCKWHERESIDIN143,147ORDERBYSID确定是哪

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值