小妖女 发表于 2015-1-16 22:32:23

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数据库的公司。

简单生活 发表于 2015-1-19 16:18:29

从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。

再见西城 发表于 2015-1-27 14:59:10

两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书

莫相离 发表于 2015-2-5 09:35:49

XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!)

柔情似水 发表于 2015-3-2 03:50:13

所以你总能得到相应的升级版本,来满足你的需求。

若天明 发表于 2015-3-11 02:17:44

但换公司用MSSQL2K感觉自己好像根本就不了解MSSQL。什么DTS触发器以前根本没用过。

第二个灵魂 发表于 2015-3-17 19:08:40

可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。

深爱那片海 发表于 2015-3-24 21:20:00

这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
页: [1]
查看完整版本: MYSQL网页设计数据库功能反省引导计划 - Part I