mysql面试--事务
来源:互联网 发布:php javascript 交互 编辑:程序博客网 时间:2024/06/07 23:51
事务的四个特性:ACID
(1)原子性:事务里面的操作,要么全部成功执行,要么全部失败回滚,不可以只执行其中的一部分。
(2)一致性:一个事务的执行不应该破坏数据库的完整性约束。
(3)通常来说,事务之间的行为不应该互相影响。然而实际情况中,事务相互影响的程度受到隔离级别的影响。
(4)持久性。事务提交之后,需要将提交的事务持久化到磁盘。即使系统崩溃,提交的数据也不应该丢失。
事务的隔离级别:
1.READ UNCOMMITTED(未提交读)。在RU的隔离级别下,事务A对数据做的修改,即使没有提交,对于事务B来说也是可见的,这种问题叫脏读。这是隔离程度较低的一种隔离级别,在实际运用中会引起很多问题,因此一般不常用。
2.READ COMMITTED(提交读)。在RC的隔离级别下,不会出现脏读的问题。事务A对数据做的修改,提交之后会对事务B可见,举例,事务B开启时读到数据1,接下来事务A开启,把这个数据改成2,提交,B再次读取这个数据,会读到最新的数据2。在RC的隔离级别下,会出现不可重复读的问题。这个隔离级别是许多数据库的默认隔离级别。
3.REPEATABLEREAD(可重复读)。在RR的隔离级别下,不会出现不可重复读的问题。事务A对数据做的修改,提交之后,对于先于事务A开启的事务是不可见的。举例,事务B开启时读到数据1,接下来事务A开启,把这个数据改成2,提交,B再次读取这个数据,仍然只能读到1。在RR的隔离级别下,会出现幻读的问题。幻读的意思是,当某个事务在读取某个范围内的值的时候,另外一个事务在这个范围内插入了新记录,那么之前的事务再次读取这个范围的值,会读取到新插入的数据。Mysql默认的隔离级别是RR,然而mysql的innoDB引擎间隙锁成功解决了幻读的问题。
4.SERIALIZABLE(可串行化)。可串行化是最高的隔离级别。这种隔离级别强制要求所有事物串行执行,在这种隔离级别下,读取的每行数据都加锁,会导致大量的锁征用问题,性能最差。
- mysql面试--事务
- 【面试】MySQL的事务和索引
- mysql事务是事务
- mysql 事务
- mysql 事务
- mysql事务
- Mysql 事务
- mysql事务
- mysql事务
- mysql 事务
- mysql事务
- mysql 事务
- mysql事务
- MySQL事务
- mysql---事务
- MySQL事务
- Mysql事务
- mysql事务
- 【数据结构和算法】Day 8
- 重构手法-重新组织函数
- IP地址,子网掩码、默认网关,DNS服务器是什么意思?
- eclipse输入问题
- sed 工具
- mysql面试--事务
- freemarker实用的语法
- 2017/8/25第一篇博客-第一次前后台打通并实现了增删查该
- mybatis_note之动态SQL
- 溢出和元素可见处理
- 利用poi生成word(含表格 图片)
- Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(十)打包项目并发布到子目录
- 如何计算网络地址和广播地址
- 【机器学习】基于MNIST数据集的KNN,SVM分类器测试