美文网首页oracle
相老师的OCP教程 5-10课 文字版

相老师的OCP教程 5-10课 文字版

作者: fjxCode | 来源:发表于2018-07-12 20:53 被阅读8次

    甲骨论05~07课计算机工作机制概述

    Swap工作机制:

    #top //显示计算机现在运行的进程

    Tasks:totalrunning sleeping stopped zombie

    Cpus: us用户占用(高好);sy系统占用(低好);ni; id空闲(要求大于25%);wa(wait time如等待IO,浪费时间);hi;si。

    Mem:total;used;free;buffers。

    Swap:total;used;free;cached。磁盘Swap很慢,优化DB使其尽量少用。

    硬盘:

    l  磁道

    l  相同半径的磁道组成柱面,相同的柱面只需要一次寻道

    l  扇区sector,每扇区512Kb

    l  读数据时间:寻道时间(最长)、旋转时间、传输时间

    l  速度、容量、接口速度

    l  接口:个人SATA3 服务器SCSI SASFC(FibreChannel光纤盘)

    存储及raid技术:

    l  Oracle基本设备:2 个服务器、2个交换机、2 个存储。服务器的重装不影响存储。每台服务器至少两台硬盘,每种设备2台防止单点故障。两个同种设备实现高可用HA和负载均衡LB。

    l  磁盘阵列RAID提高冗余和提高了访问速度。

    l  RAID0将文件分块写在组内磁盘,读写快无冗余,缺点是硬盘越多则一块硬盘损坏的概率越大。因而RAID0适用于对读写速度要求高,不注意数据安全性的场合。一般RAID0不超过6块。

    l  RAID1将文件镜像写在组内磁盘,快读慢写无冗余,缺点是浪费空间。服务器一般作成RAID1。

    l  RAID5将文件分N块写入组内磁盘并且再用一个磁盘写奇偶校验数据。相比RAID0,RAID5有冗余,浪费1/N空间,读性能高,写性能差。

    l  RAID6是RAID5写两份奇偶较难数据,最多同时可坏两块硬盘。

    RAID5坏一块硬盘性能会明显下降,原因是从N份硬盘读数据且需要计算。

    l  RAID01是两个RAID0组成RAID1,快读写有冗余,且只浪费50%空间

    l  RAID10是两个RAID1组成RAID0

    MPIO多路径技术防止网络损坏。

    甲骨论09课Oracle体系结构概述

    1)            #cd /u01/app/oracle //Oracle程序文件

    2)            #cd /oradata //数据库文件

    3)            .ctl控制文件

    .log日志文件

    .dbf数据文件

    启动的Oracle进程及占用内存称Oracle实例。一个数据库对应2/4/8个实例。多个实例对应一个数据库的技术叫RAC技术,可以将多个实例分工给多个服务器,达到负载均衡的目的。

    1)            #ps –ef|grep ora //查看进程

    2)            #ipcs //查看内存

    3)            #export NLS_LANG=American_america.zhs16gbk

    4)            #sqlplus /as sysdba

    >startup

    SGA(systemshared array):sharedPool共享池;databaseBufferedCache数据库缓冲区高速缓存,reDoLogBuffer重做日志缓冲区。Java池;Streams池;大型池。

    数据库实例占用内存由SGA(共享池)和DGA(用于后台进程)组成。DGA含后台进程和前台进程。

    前台进程有用户进程和服务器进程。后台进程有系统监视器SMON、进程监视器PMON、数据库监视器DBWn、日志写进程LGWR、归档进程ARCn。后台进程分别对应Oracle的3种数据文件,及归档日志文件。

    总结:OracleDB共6大内存池、5大后台进程(含检查点进程)、4大文件类型。

    Web服务器与DB服务器这间的连接称为连接池。Oracle从连接连接池获取并处理大量的sql语句,返回数据给Web服务器。

    控制文件存放:数据库的物理结构信息,如各种数据库文件的存放位置。同时也存放着数据库文件的状态信息。

    数据文件存放数据的表信息。

    重做日志文件存放每个数据块的所有的变化过程。

    下节讲一条sql语句在Oracle中的执行流程。

    甲骨论10课SQL语句执行过程剖析

    1)            客户端输入sql语句

    2)            sql 语句由客户端转到数据库实例

    3)            server process接收sql语句,sql到达数据库

    4)            sql语句被解析成“执行计划”,才能被执行

    解析过程:语法检查、需要被访问的表是否存在和是否有访问权限、检查共享池试图免解析、从一条sql语句的n种执行方案中选优(需要消耗CPU/ IO/MEM)。

    Oracle会将语句执行计划缓存在sharedPool,当有类似语句被执行则不必进行解析,直接调用缓存中的执行计划。

    5)            server process按执行计划先在bufferCache中找数据,找不到再在dbf文件中取数据,缓存到bufferCache再返回数据(缓存的意义在于当相同数据被再次访问,直接从内存中的缓存区读取,避免IO)。

    从缓存区读又称逻辑读、内存读,从dbf文件读又称物理读、硬盘读。缓存命中率=L/(L+P),高命中率意味逻辑读比例高,而数据库性能未必好。同一时段内高命中率也可能高物理读,从而数据库性能并不高。

    #vmstat 1 10

    #iostat 1 10 //查看每秒传输次数tps、每秒读的块数Blk_read/s

    6)            sql语句分为增删改查,修改过程由server process先将表读入bufferCache,在缓冲区中修改,并在redoLogBuffer记录日志。DBwriter进程负责将bufferCache的修改表写回dbf文件,LGwriter进程负责将redoLog写回log文件。DBwriter、LGwriter周期性地运行。

    注:server process是前台进程,DBwriter、LGwriter是后台进程。

    Server process与直接用户交互,交互的响应要快。因而其设计特点是只读改不写,将缓存区写回操作交给后台进程去做。常见的低性能表现是server process占用CPU不高,而数据库却响应很慢,这时就需要优化。

    CKPT检查点进程周期性地将数据状态信息写入控制文件和数据文件头部。

    缓存区的数据类型:干净数据(缓存区数据与磁盘数据一样)、Pin(缓存区被修改的过程)、脏数据、空闲。从磁盘读入的数据先请求空闲缓存,满了请求干净缓存,全脏触发DBwriter再净数据写入擦干净的缓存。

    相关文章

      网友评论

        本文标题:相老师的OCP教程 5-10课 文字版

        本文链接:https://www.haomeiwen.com/subject/frxdpftx.html