mysql 事务

事务由一组sql语句组成
事务的sql语句整体成功,整体失败

A:100 B:0-> A:0 B:100
-- A转账B
update 账户 set money=money-100
where id='A';
update 账户 set money=money+100
where id='B';
-- 转账要么同时成功,要么同时失败(只要有一个失败就)回到转账执行之前的状态

数据操作的最小单元是事务,而不是sql语句

事务的操作

不启动事务是单条的sql语句的成功与失败(某条sql语句失败,前面的操作不恢复)
启动事务后,执行sql语句,中间某条sql语句失败,它前面的操作还可恢复,这种恢复以前的状态叫回滚,回滚到事务之前。
启动事务
begin

start transaction
事务启动后,执行的增删改操作,会暂时记录在一个日志文件中(临时记录)。
提交事务
commit
提交事务后,事务日志中的记录数据操作在数据表中生效,并清空日志文件。
回滚事务
rollback
直接清空日志

commit用法

rollback用法

事务的特性
A——原子性Atomic
数据操作的最小单元是事务,而不是sql语句
C——致性Consistency
一致性,事务完成前后,数据要保持逻辑的一致性

A+B=100转账前
A+B=100转账后

I——隔离性Isolation
一个事务操作时,其他事务要等待。
一个事务修改数据,另一个事务不能修改,这两个事务要进行隔离。
事务并不是完全隔离的(效率低),数据库为了兼顾并发性和数据安全,一定程度上允许事务并发执行,并设置了隔离的级别。
D——Durancy
持久性,事务成功,数据被永久的保存

数据访问冲突的问题

多个事务同时执行,可能引发三种数据访问冲突问题:
1.脏数据
2.不可重复读
3.幻觉读

1.脏数据
一个事务未提交的数据(临时保存在内存文件中,表里还没保存,有可能在未来失效)(或者修改数据,没修改完),被另一个事务查询到
2.不可重复读
数据每次读取的结果一致叫可重复读。
针对数据修改的update操作
查询过的数据(数据被别的事务修改并提交了)再次查询时,与之前的查询结果不一致
3.幻觉读
针对数据的插入和删除操作:
新插入的数据,查询不到
删除的数据,能查询到(看到不该看的东西)

隔离级别
为了避免数据访问冲突问题,避免数据的混乱,数据库会让事务进行隔离(别让事务同时执行,保证数据安全)
为了兼顾数据安全和性能数据库提供了四种隔离级别
级别越高越安全,性能越差
级别越低越不安全,性能越高

mysql设置隔离级别

set tx_isolation='read-uncommitted';

1.未提交可读-脏读,不可重复读,幻觉读

set tx_isolation='read-committed';

2.提交可读-不可重复读,幻觉读

 set tx_isolation='repeatable-read'; --默认级别

3.可重复读-幻觉读(默认级别,最佳选择)

set tx_isolation='serialiable';

4.串行化-排列执行(级别最高)

read-uncommitted

这样导致了脏读


read-committed

这样导致了不可重复读


repeatable-read

这样导致了幻觉读,新插入的数据看不到
repeatable-read

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

推荐阅读更多精彩内容

  • 事务的定义 事务由单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句是相互依赖的。而整个单独单元...
    诸葛坚强阅读 1,082评论 0 3
  • 来源转载自:http://www.cnblogs.com/ymy124/p/3718439.html MySQL的...
    Mrwangs阅读 1,951评论 0 8
  • 1、 数据库事务的概念 在数据库中,所谓事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。 为确保数据库...
    AKyS佐毅阅读 293评论 0 2
  • 人心向善,明天要回家了,我妈昨天打电话过来说要带盒尿布回家,怕又忘记了,从复一遍,
    蚂蚁背象阅读 157评论 0 0
  • 我近期最想实现的一个愿望或目标是:看到儿子中考超常发挥,身心愉悦地跨入重点高中二中。所以我的咖啡冥想内容: 今天早...
    叶景芳阅读 130评论 0 0