00:00
在刚才内容中呢,我们完成了事物的传播行为参数的配置,那我们下面继续来看下一个参数,这个参数是关于事物的隔离级别,然后把这个什么意思给各位解释一下,给大家强调。首先我说明啊,隔离级别呢,是为了解决事物中一个叫隔离性而出现的这么一个概念,而事物隔离性指的是什么呢?就指的是你在并发操作中产生一些问题,咱用这个隔离级别可以做到。那我写一下啊,就是事物里边有一个特性,它称为叫做隔离性,什么叫隔离性呢?就你事物在多事物。注意啊,是多事物操作之间,他们不会产生影响。这个叫做隔离性,但如果说呢,我们现在不考虑隔离性,它会产生一系列问题,就会产生很多的这个问题,这些问题是什么呢?总结起来有这么三个问题。
01:13
给各位说一下啊,就是有三个读的问题。有三个读等问题,哪三个问题?第一个问题它叫做。脏毒,第二个叫不可重复读,第三个叫虚毒,或者说叫幻毒啊,一个意思啊,叫虚毒,或者说也可以叫这个幻毒。这个啊是我们说的,如果说不考虑隔离性会产生三个多的问题,就是你在多事物之间,也就是说在并发操作中会产生三个问题,而事物的隔离性就是为了解决三个问题而出现的这么一个概念,它称为叫隔离性,那这三个毒的问题分别都是什么?我给各位来说一下,就是各位之前如果学过买搜狗或者其他数据库,这问题应该是提到过的,咱现在给各位做一个详细的说明,就是三个问题到底都是什么?
02:10
首先啊,我们先看第一个问题,这问题它就叫做脏读,咱说下这个脏毒到底是什么意思。给各位啊做个说明,我就来一个个描述这几个问题。脏读。那我们来强调啊,桑读什么意思呢?它指的就是你在多个数之间,一个数没问题啊,就多数之间什么问题,一个就是。未提交的事物读取到了,注意是啊,读取到了另一个未提交事物的那个数据,这个过程又叫做单独,那什么意思?给各位我来画个图,咱们这过程给大家来说一下,要各位理解什么叫脏读,因为脏读肯定是一个致命的一个问题,这个问题是一个很严重问题,因为两个事物都没有提交,并且数据他可以读到。
03:08
那各位画个图,我看这位置啊,第一个。当读那什么意思写一下,比如说啊,我现在呢,有这么一条记录啊,有条记录,而在记录中,假如说有这么几个值,比如它有这个ID。名称,包括它里面这个工资等等一些值,比如说ID是这个一,比如说它的名称是这个什么Lucy,假如说这个Lucy,他每月的工资是这个。5000块钱,这样的话,咱们现在一条记录,而这条记录什么叫脏读呢?比如现在我有两个人都想去操作这条记录,我就来画一下,现在我有两个人。这位置啊,两个人都要去操作这条记录。然后两个人,比如说我的第一个人啊,咱就随便起个名字,然后第一个人呢,是这个就是呃,东方不败啊,他想投这个数据,然后里边还有第二个人,比如说这个叫。
04:10
这个岳不群啊,他也想操这条记录。然后这样的话,这个过程中就会产生问题,那什么问题给各位说一下,因为现在就是我们操作咱可要用到事物,那比如说东方不败操作也好,岳不群操作也好,他们首先是不是都需要去开启这个事物,比如说这东方不败开启事务A,然后岳部群去开启这个事务B。啊,事务B他们都要开启事务,然后开启事务之后肯定要做操作,比如说现在啊东方不败他做的操作,他把里面这个就是Lucy的工资从这个5000修改成了这个。就是100,比如他做这个事情,而这过程中,比如现在这岳不群也做的事情,他把Lucy的工资从5000,比如说改成这个就是6万啊,他做这个事情,注意两人是不是都去同时改同一条数据,那这过程中啊,大家注意目前有问题呢,如果说咱们现在在脏堵情况下有什么问题呢?我强调啊,比如现在。
05:22
我把这个啊,比如咱去掉,假如现在以这个为例,比如现在只是岳部群呢,改了这条记录,那岳有群改记录之后,我东方不败他最开始读取的是不是5000条记录,但是当岳母群改完之后,东方不败可以怎么做,他就可以读取到,注意啊,我的描述啊,东方不败可以读取到岳不群修改那个就是6万的这个数据,他把这可以读到,比如东方不败他一读发现数据变成6Y,那它根据6Y做操作,但是这个时候有一个很严重的问题,什么问题呢?给大家强调,大家注意这什么是事物,事物可以怎么样。
06:03
是可回滚,比如现在遇不群,他把事物进行了回滚。那回滚之后就很严重了,岳不群本来读到六外,但是这一里就是东方不败,本来读到六外,但是岳不群回滚之后,那这个东方不败读到的数据是不是还是变成了五钱,那数据是不是就不准确了?所以这个过程叫什么?就叫做脏毒,就是两个事物,大家注意,两个事物目前都没有进行提交,而你一个事物中的数据改变了,另一个事物中可以读到,但是我这事物因为可以回滚,当你回滚之后数据肯定就不对了,所以这个过程叫什么?就叫脏读,一个未提交事物能读到另一个位调事物中变化的数据。但是我这个事物可以回滚,回滚之后肯定就不对了,这个问题就称为叫脏毒。
07:00
各位把这个给他知道啊,是一个很严重的一个问题,脏堵,所以咱们做了一个说明。然后这个说完之后,咱再说下一个读的问题,这个问题叫什么,它叫做不可重复读。那什么叫不可重复读?给大家来说一下啊。我说一下这个特点是什么意思,就什么叫不可重复读,给各位做一个说明。那我下面呢,给各位啊,咱们也是画个图,把这个叫不可重复读给各位来说一下,就说一下它是什么意思,那这里边我先写一下啊,它什么意思,就是现在它就表示一个未提交的事物读取到了另一个注意啊,提交事物中那个修改的数据,这过程叫不可重读,那我下面给各位也是画个图,再来说明一下这个到底是什么含义,咱们还是在这张图上给大家画一下啊。
08:03
这是刚才说的当读,然后咱看下一个叫做不可重复读。那什么意思,我们来说一下啊,它的做法,比如现在咱们还是以这个例子为例啊,就是现在比如说还是这么一个相关的内容啊,还是这样。然后把这个比如给它画到下边,首先往下拉一点啊。咱们看这个过程啊,比如现在还是这么一个场景。啊,就是这个场景啊。给他复制一下好到这里,然后在场景中,比如现在两个人,一个东方不败,一个岳不群,都想要对同一条记录进行操作,而他们现在两个人都开启了事物注意,都进行事务开启,比如说开启事务之后,既然两人呢,都把这条记录给他得到了,就都得到了同一条记录,比如这个东方不败他获取了这个数据,岳不群也获取数据,但比如现在这个东方不败目前就是获取的数据,他这个工资是不是这个5000。
09:11
这肯定没什么变化,5000啊,然后现在岳不群他获取数据的工资肯定也是5000。啊,两人目前得到数据都是5000,比如说目前呢发生变化,岳不群呢,他做一件事情,做什么事情,他把这数据进行了修改,修改了数据,把数据从5000,比如说变成这个修改啊,他做变化,那变化之后,比如现在岳不群他一修改之后,就把事物马上进行了提交,注意啊,他把事物做了提交,各位注意。提交什么意思?是不是就是表中数据真正变化了,但是这个时候有问题了,什么问题呢?就是东方不败目前事物并没有提交,但是东方不败它就能够读取到你的岳不群提交之后的数据,把这个可以读到,所以目前这个问题叫什么?又叫做不可重复读一个未提交事物读到另一个提交事物的数据,而正确效果事物之间应该不会产生影响,只有当你事物提之后才能读到,但是目前多方不败没有体交注意也可以读到,这里边产生一个问题。
10:26
假如现在东方不败呢,他要去统计这个工资,他会发现每次读的数据是不是都不一样了,那这数据肯定就不准确了,所以这个过程就叫不可重复读,一个未提交的事物读到了另一个已经提交事物中的数据,这个啊是咱说的第二问题,叫不可重复读。各位把这知道,但是我强调这么一点啊,咱刚才说的脏赌是一个致命问题,咱肯定不能发生,但是不可重复读,是一种现象,这现象允许产生,只是现象中你要做一些统计操作,数据肯定不准确,但是它本身不能算问题,只能算是一种现象而已,所以这个叫不可重复读。
11:11
各位把这个的知道一个未提交事务,读到了一个已经提交事务中修改的数据。这个各位截过来啊,咱说的这个问题,然后除了这个之外,还有最后一个问题,这个问题叫做虚读,或者说叫幻读啊,一个意思,那什么意思,跟这个差不多,它的解释就是一个未提交的事物读到了另一个已经提交事物的什么添加的数据跟刚才过程差不多,这个我就不画图了,就你再加个数据,然后你未提交事物也能读到这个啊,叫做虚读,或者说换毒,所以这就是我们说的,如果说不考虑隔离性,会产生三个毒的问题。但是咱们事物中有隔离性,那你事物之间应该是不让它产生影响,但如果你不考虑就会造成脏毒,不可重复毒,还有这个虚毒,大家把这知道一下啊,就是这个内容中呢,如果各位想具体了解,可以关注一下我们上微谷鼓励学院的里边的关于买so教程,因为咱们重点讲的是此文里边这个切换设置。
12:20
但是这个过程给各位也做了一个分析,就是关于三个读的问题,这个啊我们就说完了。然后说完之后呢,咱往下来看,就是现在问题已经出现了,那问题怎么解决呢?咱就需要用这个东西,就是用这个事物的隔离性,就能解决里边这个三个毒的问题。那我写一下啊,就是第六个,咱们通过设置事物的隔离性,就能够解决这个三个毒的问题,这个啊是咱们的解决方案,那怎么来设置,或者有哪些隔离性给各位来说一下,咱们先看一下我这里边有张图,这个图。
13:05
事物的隔离级别。通过啊隔离级别来做个操作啊,隔离级别啊。然后咱看有哪些啊,大家看到啊,在隔离级别中呢,我这里边列出了这里边四个隔离级别,然后把它给各位截过来,咱们一个一个来详细说一下啊,这里边哪四个隔离级别,首先我们看第一个调read UN commit的调读未提交就是这个隔离级别,如果你设置的话,你发现三个读问题全存在,它不能解决,然后你设第二个叫read committed叫读已提交,大家看它可以解决什么。就是脏堵可以解决。而第三个叫repeatable read叫可重复读。这个可以解决什么脏毒不可重复读,但是虚毒换毒不能解决,最后一个叫串行化sable,它能把这问题都进行解决,所以咱们现在通过设置隔离级别能解决你的读的问题,这个啊是我们提到的,而这几个隔离级别怎么设置,给各位在我们的这个配置中拿来写一下。
14:16
配置方式应该很简单,那我们来做一下啊,这位置我们第一个加的是传播行为,然后加第二个叫O,里边加上你的这个隔离级别,比如我们写一个叫repeatable read,就是里边级别,包括还有其他级别都可以,这样的话咱就完成了这么一个隔离级别设置。这各位给他知道啊,就是它的一种设置的这种方式。我把这个给各位截过来,设置隔离级别,而隔离级别中我强调啊,比如说我们现在呢,用的是my circleql数据库,在MYQL里边默认用的隔离级别,这个级别叫repeatable read,就是你不设置MYSQL,默认用的就是repeat,叫可重复读。
15:05
所以这样的话,咱就完成了事物里边的第二个参数,隔离级别,各位主要掌握三个读的问题,那都是什么,包括隔离级别,我们需要怎么做,然后你重点记住这个repeat read,因为我们MYSQL默认就是这个级别,叫可重读,包括怎么设置啊,咱刚才也做了配置。这个啊,我们就最终完成了关于事物中的第二个参数的这么一个讲解。
我来说两句