Know more about Cache Buffer Handle

简介:
在之前的文章《latch free:cache buffer handles造成的SQL性能问题》中我介绍了cache buffer handle latch的一些知识,在这里我们复习一下: "当会话需要pin住buffer header时它首先要获去buffer handle,得到buffer handle的过程中首先要抢占cache buffer handles栓,为了避免对于cache buffer handles栓的过度争用,每个会话被允许cache一小撮buffer handles,也叫保留集(reserved set)。该保留集的上限由隐式参数_db_handles_cached(默认为5)所控制,在此基础上会话在执行不是十分复杂的SQL时不必反复申请栓。 同时存在一些十分复杂的语句,需要同时pin住大量的缓存,此时若存在空闲的handle,会话被允许索要手头5个cached buffer handles以外的handle。也为了限制单个会话的资源占用量,Oracle通过内部算法总是尽量让每个进程能够pin住”合理份额“的buffer,由此单个会话同一时间所能持有的总handle数等于db_block_buffers/processes,隐式参数_cursor_db_buffers_pinned指出了该值。另cache buffer handles并没有子栓,仅有父栓本身,所以如果系统中有大量复杂SQL,会话所能cache的buffer handles远不足以满足需求时,该栓就成为整个系统性能的瓶颈,甚至可能出现潜在的死锁/饿死问题。"  应网友在T.ASKMACLEAN.COM上的提问 ,我们介绍更多cache Buffer handle相关的知识:   cache buffer handle 结构:  
------------------------------
|  Buffer state object       |
------------------------------
|  Place to hang the buffer  |
------------------------------
|  Consistent Get?           |
------------------------------
|  Proc Owning SO            |
------------------------------
|  Flags(RIR)                |
------------------------------

  来看一个 cache buffer handle SO: 70000046fdfe530, type: 24, owner: 70000041b018630, flag: INIT/-/-/0x00 (buffer) (CR) PR: 70000048e92d148 FLG: 0x500000 lock rls: 0, class bit: 0 kcbbfbp: [BH: 7000001c7f069b0, LINK: 70000046fdfe570] where: kdswh02: kdsgrp, why: 0 BH (7000001c7f069b0) file#: 12 rdba: 0x03061612 (12/398866) class: 1 ba: 7000001c70ee000 set: 75 blksize: 8192 bsi: 0 set-flg: 0 pwbcnt: 0 dbwrid: 2 obj: 66209 objn: 48710 tsn: 6 afn: 12 hash: [700000485f12138,700000485f12138] lru: [70000025af67790,700000132f69ee0] lru-flags: hot_buffer ckptq: [NULL] fileq: [NULL] objq: [700000114f5dd10,70000028bf5d620] use: [70000046fdfe570,70000046fdfe570] wait: [NULL] st: SCURRENT md: SHR tch: 0 flags: affinity_lock LRBA: [0x0.0.0] HSCN: [0xffff.ffffffff] HSUB: [65535] where: kdswh02: kdsgrp, why: 0 # Example: #



本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1278316

相关文章
|
Oracle 关系型数据库 MySQL
【大数据实时数据同步】GoldenGate实时同步异常:OGG-03533:character ‘c2 a0‘ at offset 0 that is not available报错解决
博主所在单位目前使用Oracle GoldenGate将各个业务生产库汇聚到一起做数仓实时ODS平台,源端库可能涉及Oracle、Mysql、达梦、Guassdb库。 最近遇到了这个错误:`OGG-03533:character 'c2 a0' at offset 0 that is not available。` 导致报错的原因是源端库有业务人员手动用excel往数据库导入数据,源端库字符集:`AMERICAN_AMERICA.AL32UTF8` ,目标库ODS字符集:`AMERICAN_AMERICA.ZHS16GBK`。
【大数据实时数据同步】GoldenGate实时同步异常:OGG-03533:character ‘c2 a0‘ at offset 0 that is not available报错解决
|
9月前
|
敏捷开发 数据可视化 安全
如何选择低代码开发平台?必看注意事项揭秘!
低代码开发平台和零代码开发平台是近几年时兴的一种新的程序开发方法。该模式的特征是可以使用用户界面、拖拽操作等方式快速构建应用软件软件,从而减少开发者的学习标准,使每个人都能变成开发者。
130 0
ecs.sn1ne.large 和 ecs.e-c1m2.large 的 2C4G 有什么区别
ecs.sn1ne.large 和 ecs.e-c1m2.large 的 2C4G 有什么区别
282 0
|
存储 前端开发 Java
Jetpack-Compose 学习笔记(五)—— State 状态是个啥?又是新概念?(下)
Jetpack-Compose 学习笔记(五)—— State 状态是个啥?又是新概念?(下)
105 0
|
Shell Linux 开发工具
Git基础教学1——安装、环境配置与基本设置
点击进入Git官网选择自己电脑的操作系统安装 之后进行傻瓜式安装(如果有需要更换下载路劲的自行更换),一直点下去即可。 安装成功后在根目录下运行git-bash.exe或者运行根目录下bin文件夹中的bash.exe或者鼠标右击选择Git Bash Here就可以开始使用命令。
|
Web App开发 安全 Linux
“区别对待”的一点想法
事情 1、今天晚上和一个大学同学通了电话。聊了一些事情。主要关于他辞职的事情。 他辞职了,原因是他原本在公司做策划,三个月可以转正。还有一个星期就可以转正的时候,他老板和他说转正的话需要完成一项任务。
|
Cloud Native
100页ppt讲清楚云原生(9)
100页ppt讲清楚云原生(9)
227 0
100页ppt讲清楚云原生(9)
|
人工智能 大数据 Devops
10.2-10.3 datetime与时间格式的相互转换
Subclass relationships: 这类直接的对应关系 # object # timedate # tzinfo # time       #基本不使用 # date # datetime    #一般使用 datetime 取时间 import time for i in range(1,10):     print(i)     time.
626 0

热门文章

最新文章