MYSQL网页设计数据库功能反省引导计划 - Part I
对于IT经理来说,令他们喜欢的MySQL的简单性还有另一方面。MySQL可以运行的更快速。某些人或许会说MySQL缺少了一些人们想要的功能。数据|数据库|功能数据库功能反省引导计划
Author:Kamus
Date:2004-9
在体系不乱以后,应当依照本引导计划每月反省一次产物数据库。
该引导计划合用于Oracle9i数据库,由于有些剧本在9i中才能够运转。
反省体例均为以sysdba身份登录数据库今后在SQLPLUS中实行命令剧本(每大节的“反省办法”部分有具体的命令剧本)。
上岸数据库的命令:
sqlplus“sys/passwordassysdba”
一.内存功能评价
在内存功能评价的时分,我们利用内存功能指数(MPI,MemoryPerformanceIndex),下表列出了MPI中的各项指数,这个评分体系其实不意味着对内存的利用和分派的全方位评价,而只是代表一个晴雨表,反应以后体系内存的利用和分派情况。
MPI指数
分类
所需品级
最高分
缓冲区射中率(BufferCache)
>98%
30
数据字典射中率(DictionaryCache)
>98%
30
库缓存射中率(LibraryCache)
>98%
30
内存中的排序(SortinMemory)
>98%
30
余暇的数据缓冲区比例
10-25%
30
利用最多的前10个SQL占用的内存
<5%
60
是不是已调剂利用最多的前25个SQL
是
30
是不是实验流动高速缓存中常常利用的工具
是
10
MPI指数
总分
250
1.缓冲区射中率
显现了关于数据总读取量而言,非磁盘读取(缓冲区射中)的百分比。固然,非常高的射中率其实不代表数据库功能必定优秀,也有多是糟的SQL引发了大批的缓冲区读操纵,只要在已调剂过主要的查询以后,这个射中率才干更好地反应数据库功能。
反省办法:
select(1-(sum(decode(name,physicalreads,value,0))/
(sum(decode(name,dbblockgets,value,0))+
sum(decode(name,consistentgets,value,0)))))*100
"HitRatio"
fromv$sysstat;
评价原则:
品级
分数
<90%
0
90-94%
10
95-98%
20
>98%
30
2.数据字典射中率
显现了对数据字典和别的工具的内存读操纵的百分比。
反省办法:
select(1-(sum(getmisses)/sum(gets)))*100"HitRatio"
fromv$rowcache;
评价原则:
品级
分数
<85%
0
86-92%
10
92-98%
20
>98%
30
3.库缓存射中率
显现了对SQL和PL/SQL工具的内存读操纵的百分比。一样注重,很高的射中率其实不老是反应数据库功能优异。
反省办法:
selectsum(pins)/(sum(pins)+sum(reloads))*100"HitRatio"
fromv$librarycache;
评价原则:
品级
分数
<90%
0
90-94%
10
94-98%
20
>98%
30
4.内存中的排序
依据初始化参数PGA_AGGREGATE_TARGET大概SORT_AREA_SIZE的值,用户的排序操纵大概在内存中实行,也大概在一时表空间中实行。这个反省用以显现在内存中排序占总排序的百分比。
反省办法:
selecta.value"DiskSorts",
b.value"MemorySorts",
round((100*b.value)/
decode((a.value+b.value),0,1,(a.value+b.value)),
2)"PctMemorySorts"
fromv$sysstata,v$sysstatb
wherea.name=sorts(disk)
andb.name=sorts(memory);
评价原则:
品级
分数
<90%
0
90-94%
10
94-98%
20
>98%
30
5.余暇的数据缓冲区比例
余暇的纪录数除以X$BH表中的纪录总数(即所分派的数据块缓冲区的总数)失掉的余暇缓冲区百分比。一样注重,具有浩瀚余暇缓冲区的数据库纷歧定是最好情况,由于多是缓冲区设置过年夜,华侈内存。
反省办法:
selectdecode(state,
0,
FREE,
1,
decode(lrba_seq,0,AVAILABLE,BEINGUSED),
3,
BEINGUSED,
state)"BlockStatus",
count(*)
fromx$bh
groupbydecode(state,
0,
FREE,
1,
decode(lrba_seq,0,AVAILABLE,BEINGUSED),
3,
BEINGUSED,
state);
评价原则:
品级
分数
<5%
0
5-19%
30
20-25%
20
>25%
0
6.最华侈内存的前10个语句占全体内存读取量的比例
一般一个没有优化体系中,10个最经常使用的SQL语句的会见量会占到全部体系中内存读操纵的50%以上。这些SQL是最必要举行优化的部分,也是优化事情中优先级很高的部分。
反省办法:
selectsum(pct_bufgets)
from(selectrank()over(orderbybuffer_getsdesc)asrank_bufgets,
to_char(100*ratio_to_report(buffer_gets)over(),999.99)pct_bufgets
fromv$sqlarea)
whererank_bufgets<11;
评价原则:
品级
分数
<5%
60
5-19%
50
20-25%
30
>25%
0
7.调剂前25个最华侈内存的语句
在没有调剂的情形下,尽年夜多半体系中,会见量占前25位的语句的内存读操纵将占用全部体系一切内存读操纵的75%,对这部分语句举行调剂是相当主要的。这部分剧本用于取得会见量占前25位的SQL语句。
反省办法:
setserveroutputonsize1000000
declare
top25number;
text1varchar2(4000);
xnumber;
len1number;
cursorc1is
selectbuffer_gets,substr(sql_text,1,4000)
fromv$sqlarea
orderbybuffer_getsdesc;
begin
dbms_output.put_line(Gets||||Text);
dbms_output.put_line(--------||||---------------);
openc1;
foriin1..25loop
fetchc1
intotop25,text1;
dbms_output.put_line(rpad(to_char(top25),9)||||
substr(text1,1,66));
len1:=length(text1);
x:=66;
whilelen1>x-1loop
dbms_output.put_line("||substr(text1,x,66));
x:=x+66;
endloop;
endloop;
end;
/
评价原则:
本部分没有评价原则,必要开辟职员大概DBA往确认在这25个SQL中属于使用体系的语句是不是都已作过调优。
8.流动缓存工具
实验在内存中流动(pin)常常利用的工具,包含表,存储历程等。
检索必要在共享池中请求年夜于100K一连空间的工具:
select*
fromv$db_object_cache
wheresharable_mem>100000
andtypein(PACKAGE,PACKAGEBODY,PROCEDURE,FUNCTION);
考查前往的了局,确认是不是必要pin到共享池中,前往了局中的KEPT字段假如是YES,那末暗示该工具已流动在了共享池中,为NO,则暗示还没有流动。
假如必要流动,利用上面的语句:
execdbms_shared_pool.keep(SYS.STANDARD);
数据库默许安装的时分没有创立dbms_shared_pool包,以是必要先创立该包。
cd$ORACLE_HOME/rdbms/admin
sqlplus“/assysdba”
@dbmspool.sql
假如我们要流动表,那末能够在创立表的时分大概修正表属性时利用CACHE关头字,将表安排到BufferCache的LRU列表的MRU端。一般我们必要关于较小的可是频仍利用的表举行这类操纵。
altertabletable_namecache;
我们也能够将必要频仍利用的表安排到别的一个自力的BufferCache中,好比KEEP池。这类操纵可使这些表的数据不至于很快被扫除出DefaultBufferCache。
altertabletable_namestorage(bufferpoolkeep);
评价原则:
本部分没有评价原则,必要开辟职员大概DBA在体系剖析今后审慎实行。
二.存储功能评价
三.Statspack报表中必要起首检察的十项内容
本文参考:
Oracle9iPerformanceTuningTips&Techniques-RichardJ.Niemiec
Oracle9iDatabaseConcepts-tahiti.oracle.com
Oracle9iDatabaseReference-tahiti.oracle.com
”由于MySQL已经是一个运行了众多知名Web2.0网站的数据,包括Craigslist、Digg、Wikipedia和Google等,或许我们可以说每一个Web2.0公司实质上是一个使用MySQL数据库的公司。 从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。 两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书 XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!) 所以你总能得到相应的升级版本,来满足你的需求。 但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。 可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。 这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
页:
[1]