博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle队列锁: Enqueue HW
阅读量:6606 次
发布时间:2019-06-24

本文共 1049 字,大约阅读时间需要 3 分钟。

HW真的是个著名的enqueue lock,著名度仅次于TM、TX吧。对于有高并发INSERT的OLTP数据库的DBA而言,HW enqueue真实家常便饭的等待事件。但是对于该等待事件的详细说明却少之又少。 这里我们总结一下这个HW enqueue lock。   这里我们仅讨论high water mark高水位队列锁的相关信息以及其常见使用和争用场景。   虽然造成HW enqueue contention争用的根本原因多种多样,但本质上HW enqueue总是只在数据段segment的High Water Mark高水位线需要移动时才被持有,最常见的情形莫过于一顿并发猛烈地INSERT操作。 HW enqueue根本存在目的是为了串行化对segment高水位线的移动以及回收lob segment中的空间。 已删除的LOB CHUNK在LOB INDEX中得到维护,以达到一致性读的目的;当LOB SEGMENT中的free space即将耗尽时则会则会从LOB INDEX中回收已提交的空闲空间。在持有HW enqueue的情况下Oracle操作从LOB INDEX移动free space到LOB本身SEGMENT的操作。   对于HW enq往往能采取以下的措施 1. 在segment扩展时,_bump_highwater_mark_count隐藏参数指出了单次高水位上涨的块数,但是该隐藏参数将影响整个DB。 2. 通过ATLER TABLE allocate extent (instance X)为指定实例、指定表预分配extent是另一种备选的解决HW enqueue的方案,而且该方案较为安全 3. 也建议检查表上的freelist 、fresslist group设置,若设置得过高,则可能由于格式化所有移动到freelist中的数据块而导致segment hw持有很长一段时间 4. 若在lob space回收期间发生该HW enq问题,则考虑检查LOB的pctversion配置。基于实际使用情况你可以设置pctversion为0或更小之避免空间回收,默认值为10%   不管是LMT本地管理还是DMT字典管理表空间总是要求在扩展数据段segment时持有HW enqueue。虽然在LMT上这种持有周期更短,但这仍是一个串行化的扩展过程。   

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

转载地址:http://qpbso.baihongyu.com/

你可能感兴趣的文章
HTTP协议包头分析
查看>>
HNUSTOJ-1600 BCD时钟
查看>>
xtrapivotcontrol 控件用法及相关属性
查看>>
[c++] How many bytes do pointers take up?
查看>>
使用Git和Github来管理自己的代码和笔记
查看>>
Shell脚本 常用命令总结 二
查看>>
Centos(Yum源更改)
查看>>
冰球游戏大概的模块
查看>>
PHP中htmlentities和htmlspecialchars的区别
查看>>
Best Part
查看>>
ClassPathXMLApplicationContext上下文加载过程
查看>>
JS模拟select下拉菜单
查看>>
线性方程组迭代求解——Jacobi迭代算法(Python实现)
查看>>
vmware workstation14永久激活密钥分享
查看>>
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
查看>>
iOS 多线程 之 GCD(大中枢派发)(一)
查看>>
mysql用户与权限管理笔记
查看>>
Myeclipse中打开接口实现类的快捷键
查看>>
<20190516> 一次比较糟糕的售后维修体验(某硕主板)
查看>>
iOS网络篇2-http协议通信规则
查看>>