你了解Spring事物控制特性吗

一.事务特性

原子性:强调事务的不可分割

一致性:强调的是事务的执行的前后,数据的完整性要保持一致

隔离性:一个事务的执行不应该受到其他事务的干扰

持久性:事务一旦结束(提交/回滚)数据就持久保持到了数据库

二.如果不考虑隔离性,会引发一些安全性问题

读问题

脏读:一个事务读到另一个事务还没有提交的数据

不可重复读:一个事务读到了另一个事务已经提交的update数据,导致在当前的事务中多次查询数据不一致

虚读/幻读:一个事务读到另一个事务已经insert数据,导致当前事务中多次查询结果不一致

写问题

引发两类丢失更新

三.解决引发的读问题

设置事务的隔离级别

read uncommitted :未提交读。脏读,不可重复读,虚读都可能发生

read committed :已提交读。避免脏读,不可重复读和虚度有可能发生

repeatable read :可重复读。避免脏读和不可重复读,虚读可能发生

serializable :串行化的。避免脏读,不可重复读,虚读的发生

select @@tx_isolation; 查看隔离级别

set session transaction isolation level 级别; 设置隔离级别

四.演示读问题

演示脏读

分别开启两个dos窗口 A.B

先查看两个窗口的隔离级别 select @@tx_isolation;

设置A窗口的隔离级别为未提交读 set session transaction isolation level read uncommitted;

分别在两个窗口开启事务 start transaction;

分别开启两个dos窗口 A.B

update account set money = money - 1000 where name = ‘张森’;

update account set money = money + 1000 where name = ‘凤姐’;

在A窗口查询数据 select * from account; – A事务读到了B事务还没有提交的数据;

演示避免脏读,演示不可重复读发送

分别开两个窗口,A.B

设置A窗口的隔离级别:read committed set session transaction isolation level read committed;

分别在两个窗口开启事务 start transaction;

在B窗口完成转账

update account set money = money - 1000 where name = ‘张森’;

update account set money = money + 1000 where name = ‘凤姐’;

在A窗口进行查询 select * from account; – 避免脏读

在B窗口提交事务 commit;

在A窗口中再次查询 select * from account; – 转账成功.(不可重复读:一个事务读到另一个事务中已经提交的update的数据,导致多次查询结果不一致.)

避免脏读和不可重复读,演示虚读

分别开启两个窗口,A.B

设置A窗口的隔离级别:repeatable read set session transaction isolation level repeatable read;

分别在两个窗口中开启事务 start transaction;

在B窗口完成转账的操作

update account set money = money - 1000 where name = ‘张森’;

update account set money = money + 1000 where name = ‘凤姐’;

在A窗口查询 select * from account; – 转账没有成功:避免脏读.

在B窗口提交事务 commit;

在A窗口再次查询 select * from account; – 转账没有成功:避免不可重复读.

避免虚读

分别开启两个窗口,A.B

设置A窗口的隔离级别:repeatable read set session transaction isolation level repeatable read;

分别在两个窗口中开启事务 start transaction;

在B窗口完成插入操作 insert into account values (null,‘王老师’,10000);

在A中进行查询操作 select * from account; – 没有查询到任何结果

在B窗口提交事务 commit; – A窗口马上就会显示数据

喜欢这篇文章的可以给笔者点个赞同,关注一下,每天都会分享Java相关文章!还有不定时的福利赠送,包括整理的学习资料,面试题,源码等~~

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

推荐阅读更多精彩内容

  • 一、(了解)定义 全称(Transaction Control Language)翻译成中文 事务控制语言,事务是...
    唯老阅读 643评论 0 2
  • 一、什么是事务 逻辑上的一组操作, ,要不全部失败,要不全部成功。 MySql的事务管理 在事务管理中执行sql,...
    明天你好向前奔跑阅读 803评论 0 4
  • 问题:事务是什么,有什么用? 事务就是一个事情,组成这个事情可能有多个单元,要求这些单元,要么全都成功,要么全都不...
    yeller阅读 745评论 0 0
  • 事务,一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元。这些单元要...
    圣贤与无赖阅读 536评论 0 0
  • 1.Ontology Evaluation Through Text Classificatio 提出了一种基于本...
    dsemlina阅读 213评论 0 0