数据库锁机制
来源:互联网 发布:淘宝小商品 编辑:程序博客网 时间:2024/06/06 16:46
事务(Transaction)
数据库的事务是数据库并发控制的基本单位,一组操作的集合、序列。要么都执行,要么都不执行,是一个不可分割的整体。比如银行的转账,钱从一个账户转移到另一个账户,账户A扣钱账户B加钱,要么都执行,要么都不执行。不可能A扣了钱B没有加钱,也不可能A没扣钱B却加了钱。
数据库的事务应当具有以下四种特性:
Atomic(原子性)
事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。
Consistency(一致性)
只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。
Isolation(隔离性)
事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。
同时,并行事务的修改必须与其他并行事务的修改相互独立。
事务的隔离性一般由事务的锁来进行控制。
Durability(持久性)
事务结束后,事务处理的结果必须能够得到固化。
数据库的事务和程序的线程有相似的地方:
1.线程之间共享同一片资源,而事务共享的则是数据库内的数据。
2.多线程的意义在于并发执行,提高效率;事务并发执行也能提高程序与数据库交互的效率。
因此如何使用事务与事务相互之间的隔离级别,直接影响了数据库的并发性和数据的准确性。我们在设计事务和选择隔离级别时这些是应该要考虑的。
选择完隔离级别与设计完事务之后,在使用过程中常常会遇到以下几种情况:
1.更新丢失(Lost update):两个事务同时更新,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了。
2.脏读(Dirty Reads):一个事务开始读取了某行数据,但是另外一个事务已经更新了此数据但没有能够及时提交。这是相当危险的,因为很可能所有的操作都被回滚。
3.不可重复读取(Non-repeatable Reads):一个事务两次读取,但在第二次读取前另一事务已经更新了。
4.虚读(Phantom Reads):一个事务两次读取,第二次读取到了另一事务插入的数据。
5.两次更新问题(Second lost updates problem):两个事务都读取了数据,并同时更新,第一个事务更新失败
- Oracle 数据库锁机制
- Oracle 数据库锁机制
- 数据库锁机制
- 数据库锁机制
- 数据库锁机制
- 数据库锁机制
- 数据库中的锁机制
- 数据库锁机制
- 数据库锁机制
- 【转载】数据库锁机制
- 数据库锁机制
- 数据库锁机制
- MySQL数据库锁机制
- 数据库锁机制
- 数据库的锁机制
- 数据库锁机制
- 6、数据库锁机制
- Mysql数据库锁机制
- 将 Win32 程序移植到 Linux
- NAT穿透的详解及分析(NAT类型举例解释及穿透技术)
- 8个排序算法
- Andriod Layouts
- ios生命周期 uiviewController的生命周期(3)
- 数据库锁机制
- HTTP协议(一)HTTP报文
- 在Myeclipse里使用Junit贴图教程与使用JUnit在struts+spring+hibernate框架环境下进行单元测试
- hadoop-----命令小结
- JS字符串操作(添加删除,以逗号分隔)
- 什么是GitHub?
- steerpyremid分解重构
- C++ sprintf
- java实现单链表反转,2种方式