2020-07-15

三 . Mysql事务隔离级别

事务执行的语句:

select 不需要事务的

插入,更新,删除 默认情况下一条sql就是一个事务,事务默认是开启自动提交的

sql语句的执行 (SET AUTOCOMMIT=0), 把自动提交给取消

开始事务 begin

执行sql (如果中间错误了,执行rollback)

提交事务 commit

存档(savepoint)

mysql的隔离级别

查看mysql 默认的隔离级别

@@global.transaction_isolation 系统的隔离级别

@@transaction_isolation 当前会话的隔离级别

select @@global.transaction_isolation,@@transaction_isolation;

隔离级别

need-to-insert-img

  • 读未提交(Read uncommitted):在该隔离级别下,所有的事务都会读取到其他事物没有commit的结果,读取未提交的事务也成为脏读。

  • 读已提交(Read committed):该隔离级别解决的脏读的并发问题,因为事务读取的数据都是其它事务已经提交的事务,不会发生回滚了。但是没有解决不可重复读和幻读的问题,因为在一个事务的多次读操作之间,可能存在修改和新增的操作。

  • 可重复读 (Repeatable read):该隔离级别解决了不可重复读的并发问题,保证一个事务的多次读取之间读取到的是同一份数据。

  • 可串行化(Serializable):提供严格的事务隔离级别,要求事务去序列化执行,不能并发执行。

总之,事务的隔离级别越高越能保证事务的完整性和统一性,但并发性能就越差。

三个情况造成死锁:

1.脏读:事务A读取了事务B更新的数据,事务B回滚,事务A之前读到的数据就是脏数据

2.不可重复读:事务A多次读取同一个数据,在这期间,事务B修改了该数据,导致事务A多次读取的数据不一致。

3.幻读:事务A将某张表中的某个字段的所有数据设为空,在这时,事务B新增了一条数据,事务A操作结束后,发现有一条数据的该字段没有被设置为空,好像产生幻觉一样。

总结:不可重复读侧重于修改,幻读侧重于新增和删除。解决不可重复读需要锁住满足条件的行,解决幻读需要锁住整张表。

read uncommitted (读未提交) --> 导致脏读,读取到其他事务没有提交的数据,如果其他万一回滚,这是数据无效。

REPEATABLE-READ(默认的隔离级别,读已提交) ->

解决脏读,导致不可重复读取,在同一事务中前后两次查询的数量可能不一致。

repeatable-read (可重复读) ->

解决不可重复读,导致幻读

  1. 在A中开启事务 2. 在B中开启事务

  2. 查询一下叫'李四'学生 4. 插入‘李四’的学生

  3. 提交事务

  4. 查询‘李四’,李四不存在

7 插入一下李四,有插入不成功(name要唯一)

serializable(串行化)

解决幻读

  1. 一个事务一个的执行,事务都不并发,没有任何问题,但是会到性能下降

隔离界别越高,性能越下降(采用默认的隔离级别就可以了)

修改隔离级别

set session transaction isolation level read uncommitted

set session transaction isolation level read committed

set session transaction isolation level repeatable read

视图

View

应用场景

  1. 数据关联很复杂

  2. 有一些数据不能想某些人看 (让别人通过视图查询数据)

什么是视图

一张虚拟表,有字段等,但是不真正的存储数据,对查询结果的一个引用,在使用视图的时候,我们以查询为主,基本不上不做更新,添加,删除操作。

  1. 查询 张三的人,他的各门课程成绩, 按照降序进行排序

select st.s_name sname, cu.c_name cname, sc.s_score score from student st left join score sc on st.s_id = sc.s_id left join course cu on cu.c_id = sc.c_id where st.s_name = '钱电' order by score desc;

可以使用视图

  1. create view temp as select st.s_id sid,st.s_name sname, cu.c_name cname, sc.s_score score from student st left join score sc on st.s_id = sc.s_id left join course cu on cu.c_id = sc.c_id

  2. select * from temp where sname = '赵雷' order by score desc;

注意: 如果希望更新视图,视图和数据表的关系一一对应的,如果希望做更新和插入,直接在原表上进行

视图不属于这一次会话, 一次创建之后可以一直使用

视图是对真实数据表的引用,当真实数据表发生变化的时候,视图的数据也跟着发生变化。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351