一、
客户端输入sql语句
sql语句通过网络到达数据库实例
server process接收sql语句-------1、找shared pool2、解析
1、sql---执行计划,然后才能执行
2、解析(语法、权限、访问对象是否存在、sql该如何执行---找个最优的执行方案生成执行计划)
消耗很多资源:CPU(最)、IO
3、sql语句和执行计划需要缓存---shared pool
二、
logic read:server process从buffer cache中读取数据返回给用户
physics read:server process 先把dbf数据从磁盘读到buffercache中,然后再从buffer cache中读取数据返回给用户
命中率:buffer cache中---L/(L+P)
命中率低一定有问题,命中率高不一定没问题
例:一定时间逻辑读10万,物理读1万 ------命中率高但是物理读也很多
关注每秒物理读-------查看IO是否繁忙
linux:vmstat 1 10 iostat 1 10 sar 1 10
mpstat 查看多处理器状况
tps字段:每秒传输次数
三、
以“改”为例:
前台进程---server process将dbf读到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只做一些最有意义的事------不关心什么时候将修改的数据写到磁盘---DBWR、LGWR(交给后台进程执行)
DB性能监控时主要关注serverprocess------server process的快慢直接反应数据库的快慢,直接反馈给用户数据库的性能
DBWR、LGWR
CKPT:周期性运行,比较轻松,将数据库当前的状态信息写到control file和datafile header(更新控制文件和数据文件头部)
SMON:负责对数据库实例(SGA)内部进行清理和维护------共享池的碎片整理
PMON:负责对数据库实例(serverprocess)外部进行维护和清理------客户网络断掉,server process一直被用户启着,PMON会周期性的启动,发现server process的客户已经挂掉了,
PMON 会清理该server process:关掉server process的进程,以及清理所对应PGA的内存空间
ARCH:归档log file
缓冲区状态:
干净、未使用、脏、连接(serverprocess读写数据块的瞬间)pin
若所有的buffer都被使用,优先使用干净的buffer(datafile中有一样的数据)
若所有的buffer都是脏的,则会触发DBWR将脏的buffer写到磁盘,buffer变为干净的---重用
转载于:https://blog.51cto.com/snglw/1308391