WEB开发网
开发学院数据库Sybase 由浅至深讲述 Sybase 数据库死锁问题 阅读

由浅至深讲述 Sybase 数据库死锁问题

 2007-10-09 21:24:24 来源:WEB开发网   
核心提示:死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,由浅至深讲述 Sybase 数据库死锁问题,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源,引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,带有blk后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程,只有这一进程完成,时间太长,而往

死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源。引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对数据库作操作时忘了提交。本文介绍一种处理解决这种死锁的方法。

Sybase封锁原理

数据共享与数据一致性是一对不可调和的矛盾,为了达到数据共享与数据一致,必须进行并发控制。并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase sql server(WINDOWS平台上强大的数据库平台)并发控制的方法是加锁机制(LOCKING)。

锁的类型/可申请的锁

已有的锁 S U X

S ∨ ∨ ×

U ∨ × ×

X × × ×

Sybase sql server(WINDOWS平台上强大的数据库平台)有三种封锁类型:排它锁(exclusive lock,简称X锁);共享锁(share lock,简称S锁);更新锁(update lock,简称U锁)。这三种锁的相容矩阵表如下:

×:表示不兼容。∨:表示兼容。Sybase sql server(WINDOWS平台上强大的数据库平台)是自动决定加锁类型的。一般来说,读(SELECT)操作使用S锁,写(UPDATE,INSERT和delete)操作使用X锁。U锁是建立在页级上的,它在一个更新操作开始时获得,当要修改这些页时,U锁会升级为X锁。

锁的力度

sql server(WINDOWS平台上强大的数据库平台)有两级锁:页锁和表锁。通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁定,而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性,sql server(WINDOWS平台上强大的数据库平台)试图尽可能地使用页锁。

当sql server(WINDOWS平台上强大的数据库平台)决定一个语句将访问整个表或表的大多数页时,它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束,如果update或delete语句没有可用的索引,它就执行表扫描或请求一个表锁定。如果update或delete语句使用了索引,它就通过请求页锁来开始,如果影响到大多数行,它就要请求表锁。一旦一个语句积累的页锁超过锁提升阈值,sql server(WINDOWS平台上强大的数据库平台)就设法给该对象分配一个表锁。如果成功了,页锁就不再必要了,因此被释放。表锁也在页层提供避免锁冲突的方法。对于有些命令sql server(WINDOWS平台上强大的数据库平台)自动使用表锁。

锁的状态

sql server(WINDOWS平台上强大的数据库平台)加锁有三种状态:

1)意向锁(intend)—是一种表级锁,它表示在一个数据页上获得一个S或X锁的意向。意向锁可以防止其他事务在该数据页的表上获得排它锁。

2)阻塞(blocking,简记blk)—它表明目前加锁进程的状态,带有blk后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程,只有这一进程完成,其他进程才可以进行。

1 2 3  下一页

Tags:讲述 Sybase 数据库

编辑录入:coldstar [复制链接] [打 印]
赞助商链接