本文主要是介绍TX- index contention的解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
TX- index contention
1、问题描述
数据库插入和更新速度变慢。抓取awr报告或者数据库锁语句查询:select t2.username,t2.sid,t2.serial#,t2.logon_time,eventfrom v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time
发现大量end: TX- index contention,索引块等待时间
2、问题分析
当事务修改索引中的数据时,而相关索引块没有足够的空间的时候,就会发生索引块的分割,在分割的过程中前台进程需要等待分割完毕才能继续操作。 如果这个时候其他会话也要修改这个索引块的数据,那么将会出现索引块的竞争。 (end: TX- index contention).一般索引块的分割持有资源和释放非常短,并不会对数据库造成严重的影响。但是对表操作并发量很大的情况下可能导致严重的竞争3、问题处理
1、加大索引的block size,数据库默认是8K,可配置成16K,配置步骤如下,sql执行:(1)alter system set db_16k_cache_size=1M scope=both;
(2)show parameter db_16k_cache_size
(3)create tablespace indexspace datafile 'oracle/oradata/TS_INDEX_01.dbf' size 2G autoextend on next 500m maxsize unlimited blocksize 16k;
2、修正index pctfree为0,大大减少index contention。
这篇关于TX- index contention的解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!