数据库事务的隔离级别
来源:互联网 发布:冒充淘宝客服退款诈骗 编辑:程序博客网 时间:2024/06/05 19:30
事务的隔离级别分为以下四种:
对事务的基本操作/*查看事务的隔离级别*/SELECT @@tx_isolation;/*查看事务是否自动提交*/SELECT @@autocommit;/*设置隔离级别为读已提交*/SET tx_isolation='READ-UNCOMMITTED';/*设置隔离级别为读已提交*/SET tx_isolation='READ-COMMITTED';/*设置隔离级别为可重复读*/SET tx_isolation='REPEATABLE-READ';/*设置隔离级别为可串行化*/SET tx_isolation='Serializable';/*设置事务不自动提交*/SET autocommit=off;
读未提交:
开启一个事务T1之后,进行相关的操作,还没有提交的前,开启另一个事务T2,在READ-UNCOMMITTED这种事务隔离级别下,T2是能够感知事务TI所进行的操作的,即使事务T1并没有提交。
可能出现的问题:出现脏数据。如事务T1把某条数据更新了,还没有进行提交,这时候事务T2查询到刚才更新的数据,事务T1遇到了一个异常进行回滚,还原到之前的数据,而此时事务T2之前读取到的数据相当于就是无效的数据,我们称之为‘脏数据’。
读已提交
为了防止在脏数据的产生,可以事务的隔离级别提升到READ-COMMITED级别。即只有在一个事务提交之后,另一个事务才能够感知。
可能出现的问题:不可重复读。即在事务T1有两次查询,第一次查询的时候,比如查询id=1的username为张三,此时事务T2将id=1的username改为了李四,而事务TI再进行第二次查询的时候,会发现同一个事务中的两次查询竟然不一样,这时候我们称之为‘不可重复读’.
可重复读
为了解决读已提交中的出现的问题,可以将事务的隔离界别提升到REPEATABLE-READ。即在一个事务T1进行操作的时候,不允许另一个事务T2对T1操作的数据项进行更新操作。
可能出现的问题: 幻读,虽然事务T1在进行相应操作的时候,事务T2不能对事务T1操作的数据项进行跟新,但是可以惊醒Insert或者delete操作。比如事务T1查询id>1的开始有1条数据的话,提示事务T2插入的一条数据,其Id大于1,则事务在进行查询的时候,则数据的记录数则不相同了,对此,我们称之为‘幻读’。
可串行化
事务的最高级别,事务应该一条一条的进行操作,相应的其操作的吞吐量也会大大降低。
mysql中,事务的隔离级别默认的为REPEATABLE-READ。
- 数据库事务的隔离级别
- 数据库的事务隔离级别
- 数据库事务的隔离级别
- 数据库的事务隔离级别
- 数据库事务的隔离级别
- 数据库事务的隔离级别
- 数据库的事务隔离级别
- 数据库的事务隔离级别
- 数据库事务的隔离级别
- 数据库事务的隔离级别
- 数据库事务的隔离级别
- 数据库事务的隔离级别
- 数据库事务的隔离级别
- 数据库事务的隔离级别
- 数据库事务的隔离级别
- 数据库的事务隔离级别
- 数据库的事务隔离级别
- 数据库的事务隔离级别
- 安卓中的进程
- spring boot学习7之mybatis+mysql读写分离(一写多读)+事务
- nginx 简单的配置(nginx.conf)
- 查看MySQL数据库的命令
- Linux进程前后台管理(&,fg, bg)
- 数据库事务的隔离级别
- 冒泡排序_升序
- 探讨医疗人工智能之眼科AI的真实应用场景(肽积木CEO柏文洁)
- 阿里云Centos7以上版本搭建Apache+PHP+Mysql+PhpMyAdmin环境
- [c++ primer笔记][c++11] auto与decltype
- Navicat如何生成已经存在数据表的sql语句
- linux分区方案
- Android视频直播的实现(包括服务器搭建)
- 网站内页优化也是SEO的重点