数据库

事务

原子性(Atomicity)

原子性:记录之前的版本,允许回滚

一致性(Consistency)

一致性:事务开始和结束之间的中间状态不会被其他事务看到

持久性(Durability)

一个事务一旦提交,他对数据库的修改应该永久保存在数据库中

隔离性(Isolation)

问题:如果两个并发事务(A事务和B事务)修改数据库表同一行数据,那会出现什么情况。
可能最后结果是以A事务覆盖B事务结果,或者反过来。
这时候数据库需要有个机制进行控制,避免这种情况出现,那就是隔离级别,数据库提供了多种隔离级别。

隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离
即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这不变成T1,T2串行了嘛
我认为这个只是局部的串行,也就是只有在相互影响的事务之间,因为设置隔离级别后,会对影响的行或者表进行加锁,不会对整个数据库的表或者行加锁。所以不会影响其它事务的并行执行。

事务隔离级别

前面说的事务的四大特性,都只是理论上的。实际上的控制是由事务隔离级别来做的。
事务的隔离级别需要解决的问题

  • 脏读
    某个事务读取到了另一个事务未提交的数据。
    但是要区分一种情况,
    当前事务提交的数据自己会读到,这不算脏读
  • 不可重复读
    事务在执行过程中,前后两次读取到的数据不一致。这中间肯定发生了其它事务提交或者修改了数据,按理说这也没错,毕竟其它事务修改了数据并提交了,你读到也是正常的。但是从程序控制来说,两次读到不同数据,会对程序逻辑产生无可估计的影响以及错误。
    描述:事务T1在读取某一数据,而事务T2立马修改了这个数据并且提交事务给数据库,但此时事务T1还没执行完,事务T1再次读取该数据就得到了不同的结果,发送了不可重复读。
  • 虚读,幻读
    事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作,这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有一行没有修改,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。

幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。

隔离级别

【1】mysql事务隔离级别
https://www.cnblogs.com/dooor/p/5303904.html
【2】java事务及隔离级别http://blog.csdn.net/wang379275614/article/details/24818397

  • Serializable (串行化):可避免脏读、不可重复读、幻读的发生
  • Repeatable read (可重复读):可避免脏读、不可重复读的发生
  • Read committed (读已提交):可避免脏读的发生
  • Read uncommitted (读未提交):最低级别,任何情况都无法保证

隔离级别的设置

隔离级别设置是会话级别的,数据库会有个默认或者全局的会话级别设置。

-- MYSQL
SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL 
[
READ UNCOMMITTED
|READ COMMITTED
|REPEATABLE READ
|SERIALIZABLE
]

事务隔离级别与数据库锁的关系

事务隔离级别是通过加锁的机制实现的。
隔离级别的基础是锁和版本号。

java多数据源

JTA
XA连接不支持JDBC的自动提交特性, 也就是说应用程序不必在XA连接上调用java.sql.Connection.commit()或java.sql.Connection.rollback()。相反,应用程序应该使用UserTransaction.begin()、UserTransaction.commit()和UserTransaction.rollback()
两阶段提交

资料

【1】java和mysql事务
https://www.cnblogs.com/fjdingsd/p/5273008.html

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

推荐阅读更多精彩内容