数据库-封锁(locking)

事物的概念,方便理解‘锁的存在’。

    事务是用户定义的一个数据库操作序列,这些操作要么全做,要么不做,是一个不可分割的工作单位。

事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。
例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
事务和程序是两个概念。一般的讲,一个程序中包含多个事务。
事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
SQL中,定义事物的语句一般有三条:

 BEGIN TRANSACTION; //事务开始标识
 COMMIT; //提交事务的所有操作(将事务所有对数据库的更新写回到磁盘上的物理数据库中去)
 ROLLBACK;//回滚,撤销所有已完成的操作,回到事务开始的状态。

事物的ACID特性:
  
  事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。
  原子性(atomicity[ˌætəm’ɪsɪti])。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
  一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
  隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

事务是恢复和并发控制的基本单位。
为了保证事务的隔离性和一致性,数据库管理系统需要对并发操作进行正确的调度。这些就是并发控制机制的责任。
并发控制机制就是要用正确的方式调度并发操作,使一个用户事物的执行不受其他事物的干扰,从而避免造成数据不一致性型。
并发控制的主要技术有封锁(locking)、时间戳(timestamp)、乐观控制法(optimistic scheduler)和多版本并发控制(muti-version concurrency control,MVCC)等。

封锁是实现并发控制的一个非常重要的技术。

封锁就是事务T在对某个数据对象例如表、记录进行操作之前,先向系统发出请求,对其加锁。加锁后,事务T就对该数据对象有了一定的控制,在事物T释放它的锁之前,其他事务不能更新此数据对象 。
基本的封锁类型有两种:排它锁(exclusive locks,简称X锁)和共享锁(shared locks,简称S锁)。
排它锁又称写锁。共享锁又称读锁。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值