9月14日内存结构--sga

今日整理标准文档:
1、oracle内存结构:SGAPGA
(1)SGA
(1)share pool(共享池)
一条sql语句执行流程:客户端--实例--发送sql语句--oracle实例接收语句--解析sql--产生执行计划(n条)--数据库实例中的优化器选择最优的执行计划--执行sql--返回结果给客户
软解析和硬解析
(1)硬解析:shara pool 会根据执行计划去硬盘读数据,并存放在内存里;
(2)软解析:shara pool 会先查检有没有完全一样的sql语句(严格区分大小写和空格),有的话就直接去内存里读取之前的数据;
硬解析:发生物理IO,读取速度慢;软解析:发生逻辑IO,读取速度快;软解析优先于硬解析执行
   共享池作用:
1)存放sql语句
2)解析sql语名
3)产生执行计划
4)数据字典高速缓存--提升查询效率
哪些情况会导致SQL操作失败:
test表不存在
数据库会自动维护数据字典--》包含对像名称信息,为了提升查询数据字典的性能,会缓存在内存里供进程访问;
id字段,name字段不存在
数据字典中会缓存表结构中基本的字段信息;
zhangsan不存在
查询数据的操作是在表中完成的;
④权限不足;
为了提高SQL的执行效率,数据库会自动维护数据字典信息,用于SQL对像确认,权限验证等操作;
oracle因为执行的sql语句多了,内存里存了大量的sql语句,这样软解析就多了,硬解析就少了,所以数据库运行越久,性能就越稳定。
     SQL>show parameter block;
  2buffer cache(缓存区高速缓存)
         1buffer 用于缓存来自于硬盘的数据库文件里数据块;
         2)数据块是在建库初期就已经定义好了,一般是8k,一但建库成功完成后不能更改;
         3)硬盘里的数据信息会加载到内存里的buffer cache里面,用于查询和修改操作;
         4)内存数据块与硬盘的数据块不一致,我们称这个叫脏块(脏数据)
       硬盘id99
       updata test  id=100 where name=’zhangsan’
5)oracle使用redo来保证脏块数据安全,redo的空间是固定的,按照时间顺序保存用户操作信息,如果因停电,引起系统停机可以用数据页+redo重新构建脏页;
6)事务结束的标志:
   commit 提交修改的数据
   rollback 撤消执行过程中的操作
7)undo的作用:
a)支持事务做rollback操作;
b)RC undo 解决脏读问题;
          8buffer cache里的脏块是异步落盘,redo是顺序落盘,在某种情况下,实例会将某些数据块刷新到硬盘;
  3redo log cache(重做日志缓存)
      1) 脏块落盘性能太差,引入redo log的机制来代替脏块直接落盘;
          2) 在现在的传统关系型数据库中,保证数据持久性,都是通过redo机制来保证的;
          3)日志数据量小于数据块数据量;
          4)顺序IO(日志落盘)性能高于随机IO(脏块落盘)
  4large pool(大型池)
         共享服务器
          一对多的工作场景,监听进程的工作机制相关。
        服务器进程
          一对一的工作场景,一个服务器进程使用一块PGA空间,为一个用户会话提供服务
        大型池和oracle的备份恢复操作有关
  5java pooljava池) 和 stream pool(流池)
今日收获(已学到、已解决):
1、了解了SGA的模块,重点了解shara pool,buffer cache,redo log
今日困惑(未完成、为解决):
1、无


标签: 暂无标签
fm98888

写了 20 篇文章,拥有财富 88,被 0 人关注

转播转播 分享分享 分享聚知识
回复

使用道具

成为第一个吐槽的人

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈