事务和锁
Posted On 2015年11月10日
确切应该说是2种“东西”, 但是确又有着关系。 因为没有实际开发的经验,之前对事务和锁一直没有清晰的认识。 事务简单来看就是 fail or success , 不存在一部份的成功和失败。 但是它到底和锁有什么关系呢。 这才是我一直迷惑的地方。
首先搜索下,重新梳理下 事务的概念。
事务处理,其实在数据库中提到的最多。 一切大型的有数据库读写的并发应用,一定离不开数据库事务。 其实也不但是数据库, 实际的处理运算也肯定存在事务的概念。
事务: 就是 信息处理中 最小的个体单元,不能再分割的 操作。 从定义中就可以看出来它和锁没有直接的所属关系的。
事务的四个标准:
1) 原子性 , 即定义中提及的 不能再分割, 像原子一样,属于最小的个体单元。 (强调事务运行时为最小单元。 )
2)一致性, 一个事务的完成就是一个状态 完整正确地改变。 事务的执行不会违反系统对数据完整的约束。 例如数据库中, 写入的数据必须是遵守 约束条件,触发器且如果失败需要回滚保持数据的一致性。 (强调 事务运行的结果数据和失败时的结果数据 的完整和正确性)
3) 事务隔离, 尽管事务是可能并行运行的,但是也必须是互相隔离的。 也就是事实上, 事务还是一个接一个的运行, 只是表现起来像是 并行运行。 (强调并行运行时的,不会有互相影响)
4) 持久性, 一旦事务commit 提交之后, 即使出现其他失败,状态仍保留,不会收到影响。
锁: 通常有 咨询锁, 强制锁两种类型。 是一种同步机制,在多线程并发访问临界资源时的一种互斥并发控制的策略。
在事务中的 事务隔离中, 锁是用来保证临界资源的安全的机制。 所以事务本身的实现是离不开锁的机制的。
此篇文章已被阅读2026 次