<b>优化数据库大幅度提高Oracle的性能-性能调优</b>[Oracle防范]
本文“<b>优化数据库大幅度提高Oracle的性能-性能调优</b>[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
几个简单的步骤大幅提高Oracle性能--我优化数据库的三板斧.
数据库优化的谈论可以说是一个永久的主题.资深的Oracle优化人员普通会要求提出性能问题的人对数据库做一个statspack,贴出数据库配置等等.还有的人认为要抓出履行最慢的语句来举行优化.但实际情形是,提出疑问的人极大概根本不懂履行筹划,更不要说statspack了.而我认为,数据库优化,应当首先从大的方面考虑:网络、服务器硬件配置、操作系统配置、Oracle服务器配置、数据构造组织、然后才是具体的调整.实际上网络、硬件等常常无法决意改换,利用程序普通也无法改正,因此应当侧重从数据库配置、数据构造上来下手,首先让数据库有一个杰出的配置,然后再考虑具体优化某些过慢的语句.我在给我的用户系统举行优化的历程中,总结了一些基本的,简单易行的办法来优化数据库,算是我的三板斧,呵呵.不过请注意,这些不一定广泛利用,乃至有的会有副作用,但是对OLTP系统、基于本钱的数据库常常行之有效,无妨试试.(注:附件是Burleson写的用来报告数据库性能等信息的脚本,本文用到)
一.设置符合的SGA
常常有人抱怨服务器硬件很好,但是Oracle就是很慢.极大概是内存分配不公道造成的.(1)假定内存有512M,这普通是小型利用.倡议Oracle的SGA大约240M,此中:同享池(SHARED_POOL_SIZE)可以设置60M到80M,按照实际的用户数、查询等来定.数据块缓冲区可以大致分配120M-150M,8i下需求设置DB_BLOCK_BUFFERS,DB_BLOCK_BUFFER*DB_BLOCK_SIZE等于数据块缓冲区大小.9i 下的数据缓冲区可以用db_cache_size来直接分配.
(2)假定内存有1G,Oracle 的SGA可以考虑分配500M:同享池分配100M到150M,数据缓冲辨别配300M到400M.
(3)内存2G,SGA可以考虑分配1.2G,同享池300M到500M,剩下的给数据块缓冲区.
(4)内存2G以上:同享池300M到500M就充足啦,再多也没有太大帮忙;(Biti_rainy有专述)数据缓冲区是尽大概的大,但是一定要注意两个问题:一是要给操作系统和其他利用留够内存,二是关于32位的操作系统,Oracle的SGA有1.75G的限制.有的32位操作系统上可以冲破这个限制,办法还请看Biti的大作吧.
二.解析表和索引,更改优化情势
Oracle默许优化情势是CHOOSE,在这种情形下,假如表没有经过解析,常常招致查询利用全表扫描,而不利用索引.这普通招致磁盘I/O太多,而招致查询很慢.假如没有利用履行筹划安定性,则应当把表和索引都解析一下,这样大概直接会使查询速度大幅晋升.解析表号令可以用ANALYZE TABLE 解析索引可以用ANALYZE INDEX号令.关于少于100万的表,可以考虑解析整个表,关于很大的表,可以按百分比来解析,但是百分比不能太低,不然生成的统计信息大概不精确.可以通过DBA_TABLES的LAST_ANALYZED列来查看表能否经过解析或解析时间,索引可以通过DBA_INDEXES的LAST_ANALYZED列.
下面通过例子来阐明解析前后的速度比较.(表CASE_GA_AJZLZ大约有35万数据,有主键)首先在SQLPLUS中翻开自动查询履行筹划功效.(第一次要履行\RDBMS\ADMIN\utlxplan.sql来成立PLAN_TABLE这个表)
|
通过SET AUTOTRACE ON 来查看语句的履行筹划,通过SET TIMING ON 来查看语句运行时间.
|
请注意上面解析中的TABLE ACCESS(FULL),这阐明该语句履行了全表扫描.并且查询利用了21.38秒.这时表还没有经过解析.下面我们来对该表举行解析:
|
表已解析.已用时间: 00: 05: 357.63.然后再来查询:
|
请注意,这次时间仅仅用了0.71秒!这要归功于INDEX(FAST FULL SCAN).通过解析表,查询利用了PK_AJZLZ索引,磁盘I/O大幅削减,速度也大幅晋升!下面的实用语句可以
以上是“<b>优化数据库大幅度提高Oracle的性能-性能调优</b>[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |