数据库锁表原因分析

本文分析了数据库中出现锁表的原因,主要集中在并发访问资源的死锁问题,以及特定情况下容易发生死锁的场景,如存储过程的顺序访问、表的索引选择、记录密度等。提出了应对死锁的策略,包括规范存储过程的访问顺序、使用群集索引、调整数据密度以及降低锁级别等方法。
摘要由CSDN通过智能技术生成

账户在清、结算流水插入中出现锁表

 

在联机事务处理(OLTP)的数据库应用系统中,多用户、多任务的并发性是系统最重要的技术指标之一。为了提高并发性,目前大部分RDBMS都采用加锁技术。然而由于现实环境的复杂性,使用加锁技术又不可避免地产生了死锁问题。因此如何合理有效地使用加锁技术,最小化死锁是开发联机事务处理系统的关键。          
死锁产生的原因          
在联机事务处理系统中,造成死机主要有两方面原因。一方面,由于多用户、多任务的并发性和事务的完整性要求,当多个事务处理对多个资源同时访问时,若双方已锁定一部分资源但也都需要对方已锁定的资源时,无法在有限的时间内完全获得所需的资源,就会处于无限的等待状态,从而造成其对资源需求的死锁。
    另一方面,数据库本身加锁机制的实现方法不同,各数据库系统也会产生其特殊的死锁情况。如在Sybase       SQL Server 11中,最小锁为2K一页的加锁方法,而非行级锁。如果某张表的记录数少且记录的长度较短(即记录密度高,如应用系统中的系统配置表或系统参数表就属于此类表),被访问的频率高,就容易在该页上产生死锁。
        
容易发生死锁的几种情况如下:          
1>不同的存储过程、触发器、动态SQL语句段按照不同的顺序同时访问多张表;              
2>在交换期间添加记录频繁的表,但在该表上使用了非群集索引(non-clustered);              
3>表中的记录少,且单条记录较短,被访问的频率较高;     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值