一、

客户端输入sql语句

sql语句通过网络到达数据库实例

server process接收sql语句-------1、找shared pool2、解析

1sql---执行计划,然后才能执行

2、解析(语法、权限、访问对象是否存在、sql该如何执行---找个最优的执行方案生成执行计划)

消耗很多资源:CPU(最)、IO

3sql语句和执行计划需要缓存---shared pool


二、

logic readserver processbuffer cache中读取数据返回给用户

physics readserver process 先把dbf数据从磁盘读到buffercache中,然后再从buffer cache中读取数据返回给用户

命中率:buffer cache---L/(L+P)

命中率低一定有问题,命中率高不一定没问题

例:一定时间逻辑读10万,物理读1 ------命中率高但是物理读也很多



关注每秒物理读-------查看IO是否繁忙

linuxvmstat 1 10 iostat 1 10 sar 1 10

mpstat 查看多处理器状况

tps字段:每秒传输次数


三、

以“改”为例:

前台进程---server processdbf读到buffer cache中进行修改,server process对数据的修改产生日志(server process产生),日志将被server process写到log buffer中,

后台进程---commit后,首先LGWR将日志实时的写到log file中;然后在一定的触发条件下DBWR将脏的数据从buffer cache中写到磁盘中


server process不负责写(datafile)只负责读(buffercache---原因:

server process直接为用户服务,server process接收到用户的SQL后,首先对SQL进行解析,然后执行SQL,然后获取数据,将结果返回给用户;如果server process慢的话,用户会感到数据库很慢。

希望让server process只做一些最有意义的事------不关心什么时候将修改的数据写到磁盘---DBWRLGWR(交给后台进程执行)


DB性能监控时主要关注serverprocess------server process的快慢直接反应数据库的快慢,直接反馈给用户数据库的性能



DBWRLGWR

CKPT:周期性运行,比较轻松,将数据库当前的状态信息写到control filedatafile header(更新控制文件和数据文件头部)

SMON:负责对数据库实例(SGA)内部进行清理和维护------共享池的碎片整理

PMON:负责对数据库实例(serverprocess)外部进行维护和清理------客户网络断掉,server process一直被用户启着,PMON会周期性的启动,发现server process的客户已经挂掉了,

PMON 会清理该server process:关掉server process的进程,以及清理所对应PGA的内存空间

ARCH:归档log file



缓冲区状态:

干净、未使用、脏、连接(serverprocess读写数据块的瞬间)pin

若所有的buffer都被使用,优先使用干净的bufferdatafile中有一样的数据)

若所有的buffer都是脏的,则会触发DBWR将脏的buffer写到磁盘,buffer变为干净的---重用