事务的4个特性及事务的隔离级别
来源:互联网 发布:dw软件怎么使用 编辑:程序博客网 时间:2024/06/11 06:13
事务的4个特性:
在MySQL中,InnoDB和BDB类型表可以支持事务。通过InnoDB和BDB类型表,MySQL事务能够完全满足事务安全的ACID测试,但是并不是所有表类型都支持事务,如MyISAM类型表就不能支持事务,只能通过伪事务对表实现事务处理。
ACID指出每个事务型RDBMS必须遵守的4个属性,即原子性,一致性,隔离性和持久性。
原子性:事务是一个原子操作单元,其对数据的修改要么全都执行,要么全都不执行。假设一个事务由多种任务组成,其中的语句必须同时操作成功,才可以认为事务是成功的,否则将回滚到初始状态。
一致性:事务是一个原子操作单元,其对数据的修改要么全都执行,要么全都不执行。假设一个事务由多种任务组成,其中的语句必须同时操作成功,才可以认为事务是成功的,否则将回滚到初始状态。
隔离性:指每个事务在自己的空间发生,和其他发生在系统中的事务隔离,而且事务的结果只在他完全被执行时才能看到。即使这样的一个系统中同时发生多个事务,隔离性也可以保证特定的事务在完成之前,其结果是不被公布的。
持久性:事务完成之后,他对于数据的修改是永久性的,即使出现系统故障也能够保持。通过使用日志,系统能够恢复在重启前后进行的最后一次成功更新,可以反应系统崩溃时处于执行过程的事务的变化。
事务的隔离级别:
数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。
脏读不可重复读幻读 Read uncommitted√√√ Read committed×√√ Repeatable read××√ Serializable×××
x表示不会出现这个问题 √表示可能会出现这个问题
Serializable(序列化):顾名思义,以序列化的形式对事务进行处理,改隔离级的特点是只有当事务提交后,用户才能从数据库中查看数据的变化。该隔离级运行会影响MySQL的性能,因为需要占用大量资源,以保证大量事务在任意时间不被用户看到。
Repeatable read(可重读):对于应用程序的安全性做出部分妥协,以提高其性能。事务在该隔离级上不会被看成一个序列,不过当前在执行事务的过程中,用户仍然看不到事务的过程。知道事务被提交为止,用户才能看到事务的变化结果。
Read committed(提交后读):提交后读隔离级的安全性比重复读安全性要低。在这一级的事务,用户可以看到其他事务添加的新纪录。在事务处理时,如果存在其他用户同时对事务的相应表进行修改,那么在同一事务中不同时间内,应用select语句可能返回不同的结果集。
Read uncommitted(未提交读):该隔离级提供事务之间最小程度间隔,该隔离级容易产生虚幻读操作,其他用户可以在该隔离级上看到未提交的事务。
未提交读
session A:
session B:
session A:
session B:
提交后读:
session A:
session B:
session A:
session B:
可重读
session A:
session B:
session A:
session B:
序列化
session A:
session B:
session A:
session B:
- 事务的4个特性及事务的隔离级别
- 事务的特性及隔离级别
- 数据库事务的四大特性(ACID)及事务隔离级别
- 事务及事务的隔离级别
- JDBC事务及事务的隔离级别
- 事务的几种传播特性及隔离级别
- 数据库事务的四大特性及隔离级别
- 数据库事务的四大特性及隔离级别
- 数据库事务的四大特性与隔离级别及测试
- 事务的ACID特性及四种隔离级别
- 事务的传播特性与隔离级别
- 事务的特性和隔离级别详解
- 事务的四大特性和隔离级别
- mysql事务的特性以及隔离级别
- 事务的四大特性和隔离级别
- 事务的特性以及隔离级别
- 事务&事务的隔离级别
- spring 的事务传播特性与事务的隔离级别
- jenkins部署安卓自动打包报错
- C++赋值语句讲解
- windows 下安装monogodb与设置自动备份批处理文件
- IDEA搭建SpringBoot+Maven+Mybatis+MySQL-Web项目流程
- 函数栈以及数据内存段
- 事务的4个特性及事务的隔离级别
- 常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- 为工业而设计-浅析Predix UI的移动场景应用
- 基于Kerberos的NIFI集群安全登陆模式
- 神经网络基础概念
- Java中OutOfMemoryError(内存溢出)的三种情况及解决办法
- Flume 以twitter为source,kafka为channel,hdfs为sink,再用spark streaming 读kafka topic
- 51nod 1277 字符串中的最大值【KMP算法】【next树】
- 发现MSDN文档错误