三歪连MVCC和事务隔离级别的关系都不知道...

时间:2020-09-17 23:38:33   收藏:0   阅读:33
https://mp.weixin.qq.com/s/0-YEqTMd0OaIhW99WqavgQ

三歪连MVCC和事务隔离级别的关系都不知道...

收录于话题
#数据库 638 #程序员 1562 #阿里巴巴 554
不经一番寒彻骨,怎得梅花扑鼻香
前言
数据库存在几种事务隔离级别我想不用我说,大家也都知道的吧?
什么?还不知道?还不知道就自己去补课,我默认大家都知道了。算了我是暖男,在贴一下给大家看看,下次可别忘了哈。
技术图片
有四种:

如何设置事务的隔离级别?
我们可以通过下边的语句修改事务的隔离级别:

SET [GLOBAL|SESSION] TRANSACTION ISOLATION LEVEL level;//等级就是上面的几种

怎么启动的?

启动事务一般就是:
1.显式启动事务语句, begin 或 start transaction,配套的提交语句是commit,回滚语句是rollback。
2.set autocommit=0,这个命令会将这个线程的自动提交关掉,意味着如果你只执行一个select语句,这个事务就启动了,而且并不会自动提交。这个事务持续存在直到你主动执行commit 或 rollback 语句,或者断开连接。
我在书中看到都是不要建议大家使用自动的,我看了一下我们的场景,倒是很少主动启动事务的,因为我们单个库的场景不多,更多都是分布式事物。
但是长事务是大家需要注意的,因为一旦set autocommit=0自动开启事务,所有的查询也都会在事务里面了,有慢SQL那数据库也容易被拖垮的。
我最近就遇到了这样的问题,数据库经常接到报警,其中就有长事务导致的问题。

视图

首先得说一下,我后面所有的知识都是基于InnoDB的,因为MyISAM不支持事务。
视图,这是事务隔离实现的根本,数据库里面会创建一个视图,访问的时候以视图的逻辑结果为准。
在MySQL里,有两个“视图”的概念:

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!