悲观锁:需要程序员自己管理数据对象的锁处理,当某个用户获取数据并给数据加上锁,直到操作完成并最终提交更改到数据库,锁才会释放,在整个过程中,其他用户想要获取该数据就需要等待,直到该数据上的锁被释放,才可以获取该数据。悲观锁虽然可以处理并发保证数据的完整性,但是会损耗性能,形成“排长队”的情况。
下面使用控制台简单演示使用悲观锁实现抢票并发控制:
1、创建一个[tickets]表(主键,目的地,余额)
CREATE TABLE [dbo].[tickets](
[ID] [int] primary key NOT NULL,
[Destination] [nvarchar](50) NOT NULL,
[Balance] [int] NOT NULL,
)
2、添加一条数据(
余票为2)