数据库事务、特性以及隔离级别
来源:互联网 发布:pe系统网络组件下载 编辑:程序博客网 时间:2024/05/16 16:04
数据库的事务
事务的基本概念
所谓事务,是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分隔的工作单位。
事务通常以bigin transaction开始,以commit或rollback结束。commit表示提交开启事务后的所有操作,即将事务中的所有对数据库的更新操作写回到物理磁盘中去,事务正常结束。rollback表示回滚,即在事务过程中发生了某些错误或故障,事务不能继续执行,而将事务中所有已完成的操作撤销,回到事务之前的状态。
事务是恢复和并发控制的基本单位。事务的四个特性(ACID)
原子性
一致性
隔离性
持久性
并发操作可能带来的问题
脏读
不可重复读
例如事务T1在读取某一数据,而事务T2立马修改了这个数据并且提交事务给数据库,事务T1再次读取该数据就得到了不同的结果,发送了不可重复读。幻读
mysql的事务级别
Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
Repeatable read (可重复读):可避免脏读、不可重复读的发生。
Read committed (读已提交):可避免脏读的发生。
Read uncommitted (读未提交):最低级别,任何情况都无法保证。
以上四种隔离级别最高的是Serializable级别,最低的是Read uncommitted级别,当然级别越高,执行效率就越低。像Serializable这样的级别,就是以锁表的方式(类似于Java多线程中的锁)使得其他的线程只能在锁外等待,所以平时选用何种隔离级别应该根据实际情况。在MySQL数据库中默认的隔离级别为Repeatable read (可重复读)。
在MySQL数据库中,支持上面四种隔离级别,默认的为Repeatable read (可重复读);而在Oracle数据库中,只支持Serializable (串行化)级别和Read committed (读已提交)这两种级别,其中默认的为Read committed级别。
spring事务隔离级别
PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
0 0
- 数据库事务、特性以及隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- 数据库事务的四大特性以及事务的隔离级别
- MYSQL 加锁以及死锁分析
- call与apply
- 关于mysql数据库的utf8编码问题
- 广州传智播客2014年php就业班四期
- 花生壳ubuntu内网穿透完全指南
- 数据库事务、特性以及隔离级别
- 用java模拟登录正方教务系统,抓取课表和个人成绩等数据
- 使用libusb-win32库, 批量(bulk)传输方式, 编写上位机软件
- 目标20170324
- 文章标题
- Mysql SQL中的where条件,在数据库中提取与应用浅析
- Apache Mina 源码再读 1 Bind过程以及DefaultIoFuture源码
- js高级程序设计(第6章----继承)
- 获取顶部控制器的方法