关于数据库事务的隔离级别

根本上讲,隔离级别的选择,其实是对“一致性”的破坏程度。读本文前,请务必充分理解“一致性”和“隔离性”。
皑:ai音,二声。

老师:今天我们来讲讲数据库事务的隔离级别。……(一堆废话)
学生:……(也说了一堆废话,作为回应)
老师:……(也回应一堆废话,然后又说了一堆废话),只要存在并行操作,那“一致性”一定会受到破坏,思考一下。原因很简单,一山不容二虎,我们一群人同时操作同一个数据库,不乱才怪……(被打断)
机敏同学:那如果是并行的“查”呢?也有句话叫,“除非一公一母啊”。
学生:……
老师:这个问题好,如果是并行的查,那当我那句话是废话好了。
学生:……
老师:(着急脸)你这是赤果果的较真行为啊。同学们,什么事儿都不要太较真儿啊,就像,,,,,我是一个人,我是人吗?好像是,这没错,但是你细细想想,我真的是人吗,我看到有的同学今天没来上课,他们会怎么想?这个老师真不是人,不上课还要被点名。皑,你不觉得他说的很有道理吗?注意哈,他说我不是人,不是没有理由的,是因为我点了他的名,我使他不开心,也就是我对他做了一件不人性化的事,那我在这件事上失去了人性,那我还是人吗?有的同学可能会为我辩护:是他逃课在先啊。但是你仔细想想,他逃不逃课,跟我是不是人,没有什么必然的联系。我点名能使时光倒流,然后他来上课吗?显然不能,所以,其实我是在一件不可挽回的事发生之后,做了另一件事,而这件事,不人性。
较真同学:但是……(被打断)
老师:闭嘴。
单纯同学:但是机敏同学说的没错啊。
老师:没错,其实机敏同学说得很对,但是我说的,也不错。正所谓,较真出真知。今天的课就建立在较真与不较真的观点上进行。当然,首先你得不较真,……(被打断)
较真同学:但是……(被打断)
老师:闭嘴。对于“并行会破坏一致性”这个观点,大家都不要较真。较真的地方在于“并行会破坏一致性”。
学生:……
老师:(不屑脸)哼,一群s b。总之呢,别较真。只要有并行,一致性肯定遭到破坏,所以,为了保证绝对的一致性,我们只能让所有事务串行进行,也就是说,只能有一个事务处于运行态,其他后来的事务全部堵塞。这就是数据库事务的最高的隔离级别“串行执行”。 好了,下面我们来较较真。
学生:……
老师:(继续不屑脸)正如机敏同学所说,要是全是“查”,就不用隔离了啊。现实生活中,这种事情可能发生吗?(敲桌子,严肃脸)
单纯同学和一些学生:不……可……能……
老师:(阴险脸)当然可能啊。
单纯同学:(委屈脸)
老师:别较真哈,好了好了,这种情况真的可能发生哈,比如历史资料,皑,别哭啊,,,,皑,咳咳,咳咳,不会改动吧。……(被打断)
较真同学:有时候历史资料记载的不对,后人会有修改啊,比如日本的靖……(被打断)
老师:闭嘴。所以呢,不能全部的事务都串行进行,而且全串行进行的话,皑,别哭了,别哭了,咳咳,效率得多低啊。像那些只有“查”的操作,我们就给他一个最低的隔离级别,也就是“不隔离”级别
学生:……
老师:好了,总共四个级别,我们已经讲了两个,“串行执行”也就是完全隔离;“不隔离”也就是,,,,不隔离(作者语:其实我目前不知道是不是完全不隔离,还请高人赐教)。当然还有两个级别。我们下节课再讲。(突然严肃)别哭了!(淡定脸)下课。

(因为上课的时候有很多废话,被我省略了,所以看起来一节课很短,但事实上很漫长)
(第二节课)
(很多学校每大节都有两小节嘛)
老师:好了,上课,,,,,(小声)好了别哭了别哭了,你看眼线都花了,,,,,,好了,我们上课。(惊堂木)上回说到,潘金……皑,em……隔离级别的最高级别“串行”和最低级别“不隔离”,今天我们来说说,其他的,两个级别(惊堂木)。
学生:yu……yi……
老师:谢谢,谢谢。来就来了,怎么没人送花呢。
学生:……
老师:来,继续我们的较真。(os:终于tm不哭了)上回说到,绝对的一致性必须要“串行”,而当所有业务里,都只有“查”没别的操作的时候,就不用隔离了,他们中间有没有什么其他的级别呢?
学生:(os:废话)
老师:当然有啦,哈哈,比如我们把最高级别的“串行”,放宽一点政策。我们让它这样,当有别的事务未完成时,其他的“只有查询操作”的事务可以进来并行执行,皑,增删改是不允许的。这样,效率明显就高了点吧,但是会有什么问题呢?想一下。
学生:……
老师:好了,我们把这种级别叫做“查询可串行”。名字有点长哈,不要紧,反正我已经记住了。下面我们来说说可能造成的后果哈。比如我在银行柜台取钱,先查查有多少钱,打开一个事务,皑,一看,只剩3个亿了,……
学生:yi……yu……
老师:那我很伤心啊,我当时就决定要跟校长说,我没钱了,涨工资!那我得有证据啊,让柜台里的小妹妹给我打印个凭证,让校长看看。然后小妹妹就给我打印了啊,皑,说时迟那时快,就在她刚打还没打的时候,,,,,,,我大哥,就是那谁,你们都认识,我马哥。他那边也开了一个事务,给我打了10个亿,提交。然后呢,小妹妹打印凭证的时候,一查,眼都没看一下,就给我打印了。我一看就火了,怎么账户里有15亿了呢,我用脚也能想到这事儿是老马干的啊,这老马,怎么这么烦人,就是不让我涨工资啊,贼tm烦。
学生:……
老师:皑,这就是“查询可串行”级别,也就是说,增删改还是要串行,但是查询这种破坏力不大的行为,是可以并行走的。大家可以把他记成是“串行”的宽松政策。
学生:……
老师:那最后还有一个级别,是对“不隔离”的强化,叫“读取的都是提交的”,皑,名字更长,不过我也已经记住了,,,,,,,,,,好累啊,不想讲了,自己理解去吧。下课!

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值