8.1 enq:HW-contention
为防止多个进程同时修改HWM而提供的锁称为HW锁,想要移动HWM的进程必须获得HW锁。若在获取HW锁过程中发生争用,
则等待enq:HW-contention事件。
HW锁争用大部分是因为大量执行Insert所引起的,偶尔也会因大量执行Update在回滚段中发生HW锁争用现象。若是Upate,表中段的扩展的大小虽然不多,
但在创建回滚数据的过程中,需要回滚段的急速扩张。HW锁争用是在段的急速空间扩展时普遍出现的等待现象,有时也会引发严重的性能下降。
HW锁的ID1值是表空间的编号,ID2值是段头块的DBA。因此利用v$lock视图或v$session_wait视图,可以确认发生HW锁争用的表空间和段。
与之前讨论的内容相同,段空间管理方法大体上分为FLM和ASSM(segemnet管理方法)
使用FLM时,特别是HW锁争用称为问题的情况较多,这是因为在使用FLM时,决定HWM移动的FREELIST属性的缺省值设置为1.
接下来测试一下,同时大量执行Inert操作引发的enq:HW-contention 等待的情况,测试方案如下:
1)创建使用FLM的表孔空间HWM_TEST_TBS
2)表空间HWM_TEST_TBS里创建表HWM_TEST,为了增加Insert的负荷,表HWM_TEST的每个块都将存储一个行
3)确认6个会话上同时执行Insert时发生的HW锁争用
【测试32】FLM和HW锁争用:
---创建使用FLM的表空间:
create tablespace hwm_test_tbs
datafile '/u03/oradata/hwm01.dbf' size
enq:HW-contention
最新推荐文章于 2025-01-07 17:13:11 发布