2013年1月13日

摘要: sql server锁的机制锁有两种分类方法。(1) 从数据库系统的角度来看锁分为以下三种类型:独占锁(Exclusive Lock)独 占锁锁定的资源只允许进行锁定操作的程序使用,其它任何对它的操作均不会被接受。执行数据更新命令,即INSERT、 UPDATE 或DELETE 命令时,SQL Server 会自动使用独占锁。但当对象上有其它锁存在时,无法对其加独占锁。独占锁一直到事务结束才能被释放。共享锁(Shared Lock)共享锁锁定的资源可以被其它用户读取,但其它用户不能修改它。在SELECT 命令执行时,SQL Server 通常会对对象进行共享锁锁定。通常加共享锁的数据页被读取完 阅读全文

posted @ 2013-01-13 20:37 bokeyuan123465 阅读(332) 评论(0) 推荐(0) 编辑

摘要: 做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设id=1的这本书库存为1,但是有2个人同时来借这本书,此处的逻辑为SELECT restnum FROM book WHERE id =1 ; --如果restnum大于0,执行update UPDATE book SET restnum=restnum-1 WHERE id=1; 问题就来了,当2个人同时来借的时候,有可能第一个人执行select语句的时候,第二个人插了进来,在第一个人没来得及更新book表的时候,第二个人查到数据了,其实是脏数据,因为第一个人会把restnum值... 阅读全文

posted @ 2013-01-13 20:09 bokeyuan123465 阅读(358) 评论(0) 推荐(0) 编辑


Copyright © 2024 bokeyuan123465
Powered by .NET 8.0 on Kubernetes