首页
归档
朋友
关于我
留言
Search
1
虚拟机无法ping不通百度,并无法访问浏览器
4,847 阅读
2
mysql使用or条件使索引失效
4,061 阅读
3
mysql如何在一对多查询时选取时间最近的一条记录
3,475 阅读
4
根据MySQL获取当天,昨天,本周,本月,上周,上月,本月的起始时间
2,927 阅读
5
熟悉mysql的共享锁、排它锁、悲观锁、乐观锁以及使用场景
1,766 阅读
PHP
面向对象
设计模式
知识汇总
常用函数
PHP框架知识
数据库
MySQL
服务器
Docker
虚拟机
Nginx
缓存相关
Redis
前端
中间件
RabbitMQ
网络编程
HTTP相关
Swoole
Workerman
工具软件
Git
Typecho
杂乱无章
面试指南
PHP相关
MySQL面试汇总
中间件相关
开发技巧 | 优化
登录
Search
标签搜索
php
mysql
代码片段
linux
Thinkphp
Redis
nginx
mysql优化
docker
面试指南
面向对象
git
Laravel框架
http协议
RabbitMQ
Redis性能优化
设计模式
linux命令
编译安装
PhpSpreadsheet
黎明强
累计撰写
70
篇文章
累计收到
59
条评论
首页
栏目
PHP
面向对象
设计模式
知识汇总
常用函数
PHP框架知识
数据库
MySQL
服务器
Docker
虚拟机
Nginx
缓存相关
Redis
前端
中间件
RabbitMQ
网络编程
HTTP相关
Swoole
Workerman
工具软件
Git
Typecho
杂乱无章
面试指南
PHP相关
MySQL面试汇总
中间件相关
开发技巧 | 优化
页面
归档
朋友
关于我
留言
搜索到
1
篇与
InnoDB
的结果
2021-07-08
InnoDB的几种事务隔离级别
前文首先理解事务的ACID的隔离性 并发带来的问题,脏读 、不可重复读 、幻读 的问题。脏读: 一个事务读取了另一个事务未提交的数据,导致数据不一致。【事务2未提交】不可重复读: 一个事务前后两次读取的同一数据不一致 【事务2已提交】幻读: 一个事务两次查询的结果集记录数不一致,返回的记录行数有差异不可重复读跟脏读的区别不可重读就是第二个事务提交了对数据的修改,脏读是在第二个事务未提交回滚了对数据的修改。虽然在不可重复读前后数据不一样,由于事务2最终提交了修改,在事务1第二次读到数据,实际上是有效的。而不像脏读 事务2最终是回滚对数据修改,导致事务1第二次读取数据是无效的数据。所以说不可重复读是还可以接受的。InnoDB的几种事务隔离级别支持4中隔离级别,一个事务对另一个事务并发进行修改时,可以相互影响的程度。隔离级别脏读不可重复读幻读隔离性并发性串行化(SERIALIZABLE)NNN最高最低可重复读(PEREATABLE READ)NNY/N 读以提交(READ COMMITTED)NYY 读未提交(READ UNCOMMITTED)YYY最低最高4.1 串行化(顺序读)对事务强制的排序,使各个事务顺序执行,这样就避免了各个之间的相互冲突,从而解决脏读、不可重复读、幻读的问题。由于所有的事务是顺序执行,虽然在这隔离性最高,反而并发性是最差的 , 所以的事务都是顺序执行并不存在并发。4.2 可重复读可以 保证在同一个事务中,多次读取同一数据时返回的结果是相同的,可以避免脏读、不可重复读的问题,但是不能避免幻读的问题。如果在Innodb中利用了Next-key引用下一个键索机制,锁定一个范围,并且锁定记录本身,避免幻读的现象。在这个级别不断可以做到顺序读隔离性,同时事务的并发性做到很好的保证。(INNODB默认使用级别)4.3 读以提交保证事务只能看到已经被提交的事务的关联数据的修改,只能避免脏读 ,无法避免不可重复读、幻读的产生。隔离性比较差,但是并发性很高,由于查到都是其他事务修改后的数据,有很多人喜欢这种隔离级别,在并发要求性比较高的场景中。sqlserver、PostGreSQL 默认使用的一种隔离级别4.4 读未提交如名字一样, 一个事务可以读到另一个事务未提交的数据,因此无法避免脏读、不可重复读、幻读的产生。隔离性最差,同时是并发性最高的的隔离级别。小结对事务来说,在不同的隔离级别下所执行的结果也不一样,隔离级别越高,数据的完整性一致性越好,同时并发性也越差。session:当前会话,也就是当前连接立即生效。global:全局,不包含当前连接,之后新获取的连接都会生效。修改(当前会话)事务隔离级别set session TRANSACTION ISOLATION LEVEL [SERIALIZABLE | PEREATABLE READ | READ COMMITTED | READ UNCOMMITTED ] #修改隔离级别查看事务里级别show variables like "%iso%" #查看事务隔离级别
2021年07月08日
507 阅读
0 评论
0 点赞