事务和锁

Life is short , play more!
本文来自lihao's Blog,转载请注明。

确切应该说是2种“东西”, 但是确又有着关系。  因为没有实际开发的经验,之前对事务和锁一直没有清晰的认识。 事务简单来看就是 fail  or success , 不存在一部份的成功和失败。 但是它到底和锁有什么关系呢。 这才是我一直迷惑的地方。

首先搜索下,重新梳理下 事务的概念。 

事务处理,其实在数据库中提到的最多。  一切大型的有数据库读写的并发应用,一定离不开数据库事务。 其实也不但是数据库, 实际的处理运算也肯定存在事务的概念。

事务: 就是 信息处理中 最小的个体单元,不能再分割的 操作。  从定义中就可以看出来它和锁没有直接的所属关系的。

事务的四个标准:

1) 原子性 , 即定义中提及的 不能再分割, 像原子一样,属于最小的个体单元。    (强调事务运行时为最小单元。 )

2)一致性,  一个事务的完成就是一个状态 完整正确地改变。  事务的执行不会违反系统对数据完整的约束。   例如数据库中,  写入的数据必须是遵守 约束条件,触发器且如果失败需要回滚保持数据的一致性。   (强调 事务运行的结果数据和失败时的结果数据 的完整和正确性)

3) 事务隔离, 尽管事务是可能并行运行的,但是也必须是互相隔离的。 也就是事实上, 事务还是一个接一个的运行, 只是表现起来像是 并行运行。  (强调并行运行时的,不会有互相影响)

4) 持久性, 一旦事务commit 提交之后, 即使出现其他失败,状态仍保留,不会收到影响。

 

锁: 通常有 咨询锁, 强制锁两种类型。  是一种同步机制,在多线程并发访问临界资源时的一种互斥并发控制的策略。

在事务中的 事务隔离中, 锁是用来保证临界资源的安全的机制。  所以事务本身的实现是离不开锁的机制的。


发表评论

电子邮件地址不会被公开。 必填项已用*标注