(2).避免事务中的用户交互。注:减少持有资源的时间,较少锁竞争
(3).保持事务简短并处于一个批处理中。注:同,减少持有资源的时间
(4).使用较低的隔离级别。注:使用较低的隔离级别(例如已提交读)比使用较高的隔离级别
(例如可序列化)持有共享锁的时间更短,减少锁竞争
(5).使用基于行版本控制的隔离级别:--. 中支持快照事务隔离和指定 89+%7*8+
隔离级别的事务使用行版本控制,可以将读与写操作之间发生的死锁几率降至最低:
897:%917%*79*77事务可以指定 917事务隔离级别;
8 89+%7*8+%9177指定 89+%7*8+隔离级别的事务将使
用行版本控制而不是锁定。默认情况下没有开启此选项,没有加 &' 提示,
88 语句会对请求的资源加 锁共享锁;而开启了此选项后,88 不会对请求的资
源加 锁。
注意:设置 89+%7*8+%917选项时,数据库中只允许存在执行 98
+99<98命令的连接。在 98 +99<98完成之前,数据库中决不能有其他打开的连
接。数据库不必一定要处于单用户模式中。
(6).使用绑定连接。注:绑定会话有利于在同一台服务器上的多个会话之间协调操作。绑定会
话允许一个或多个会话共享相同的事务和锁(但每个回话保留其自己的事务隔离级别),并可以
使用同一数据,而不会有锁冲突。可以从同一个应用程序内的多个会话中创建绑定会话,也可
以从包含不同会话的多个应用程序中创建绑定会话。在一个会话中开启事务(4后,
调用 %4(',';来取得 ',然后传入另一个会话并执行
858%(,' 来进行绑定最后的示例中演示了绑定连接。
4. 死锁处理方法:
"根据 中提供的 0,查看那个 处于 状态,然后用 kill spid 来干掉即破坏死
锁的第四个必要条件3循环等待;当然这只是一种临时解决方案,我们总不能在遇到死锁就在
用户的生产环境上排查死锁、=,我们应该考虑如何去避免死锁。