00:00
昨天咱们GDBC呢,最后呢,遗留这个知识点就是关于什么行机锁是吧,那行机锁这个呢,我来给大家呃演示一下啊,这个行机锁是个什么东西啊。他其实和JDBC是没有什么关系的啊,它是一个搜狗语句,对,它是一个搜语句啊,什么意思呢,我大概描述一下啊来。稍等啊,我这个有点慢,这会儿来。什么意思啊?大家注意听注意听啊,比如说现在呢,我写一个select语句啊,说select什么呢。Drop salary from什么呢?P,位置条件是工作岗位等于什么呢?Manager。对,我这条语句啊,他会查询出谁呢?工作岗位是manager的这些员工的薪资是吧?哎,这个大家还行吧,能看懂吗?没问题是吧?好,那么这个语句如果在后面加一个for update,各位,我想说这个就是行激素。
01:18
嗯。什么意思呢?就s select语句最后加一个for之后敲一下回车,在这个语句的执行过程当中。这个工作岗位等于manager的这些记录被锁住了,别的事物没有办法对这三条记录进行修改。就这么简单,来,我再说一下啊,这个select语句啊。如果在后面加一个for update,就表示说我们工作岗位等于manager的这些员工的数据,各位啊,其实并不是说这几条是说谁是说谁,是说EP这张表当中的什么工作岗位等于manager manager manager这一行记录谁都不能动,明白这一行记录谁都不能动,这一行记录谁都不能动,这叫什么锁,叫行级锁,你需要在select后面加一个什么for update。
02:29
对,你只要加上FA,只要在当前这个事物怎么着还没有结束的时候听清楚啊,我又说新词了,叫什么是在当前什么事物没有结束的时候,这三条记录,其实对的就是这一条记录,这条记录以及这条记录被锁定,其他的事物无法对这三条记录进行修改操作,如果您以后在开发的过程当中。你在查某张表数据的时候。
03:00
你为了保证数据的真实性,你有可能会把这些记录,你所需要的这些记录干什么给他锁住。别人,别的县城或者是别的县城开启的别的事物都没有办法对这些记录进行修改的话,你就可以在SL后面加一个什么for update,管用啊,这叫什么锁?航机锁又被称为悲观锁。悲观所。诶对乐观所我说一下啊,乐观所呢,后期你们会接触的啊,就是你只有知道什么是乐观锁之后,你才知道哦,这个确实很悲观啊对,那你现在你你还感觉不出来啊,你你这会儿感觉不出来什么乐观悲观的啊。对,其实我也可以给大家简单说一说啊,思想可以说一下乐观所是啥情况呢?乐观所就是多线程并发都可以对这条记录进行修改,都可以对这条记录进行修改,只不过呢,在这条记录上啊,它有一个什么,有一个版本号在后边有个版本号,比如说是1.0,这一行记录的版本号是1.0啊,其中有一个线程过来执行之后呢,发现的版本号是几啊1.0,另外一个线程过来之后呢,看到它的版本号也是几啊1.0,其中有一个线程它先怎么着了?先把这条记录改了,改完之后呢,那个线程把这个版本号变成多少啊,2.0,明白吧,版本号变成2.0之后呢,另外一个线程是不是也对这个数据进行修改啊,修改之后他一提交,在提交之前他一看版本号变成了多少2.0呀,不行啊是吧,他们有不行,为啥呀,之前有人把这个数据改了,为啥?因为他最初的时候读到的版本号是几啊1.0,他回头一看,他正要提交的时候,一看版本号几啊2.0,他就认为别的县城把这个数据怎么着改了,于是乎第二个县城就回滚这个。
04:44
刚才的操作,谢谢。听懂什么意思了吗?没有说一下。
05:04
你你就这么想啊,这地方有一个什么意内有一个岗位,还有什么呀,薪资这个悲观所呢,他的悲观的点在什么地方,就是说我我事物怎么着悲观所的特点啊,事物怎么着必须怎么着排队执行。数据锁住了。不允许什么并。明白乐观所呢,乐观所是支持什么并发对吧,事务也不需要怎么着排队,只不过需要一个什么版本号。也就在数据库当中啊,它这个位置可能会有一个版本号,听懂了吧,这个版本号比如说最初的时候,这个版本号是1.1,那这个时候呢,比如说事物一过来了啊,事物一读取到版本号多少1.1明白,同时事物我问大家事物二也在这里读取到什么版本号是几1.1?
06:11
对吧,同时呢,其中怎么着事物一修改了,先修改了吧,先修改了啊修改之后看了版本号是1.1,于是。怎么着,于是提交啊,提交修改的数据啊,将版本号修改为1.2,明白其中事物。二。对吧,后修改的啊,后修改的,修改之后准备怎么着,提交的时候发现版本号是几是1.2。和他最初的,和他最初读的版本号怎么着不一致的,他事物二最初读的版本是几啊,1.1懂吧,但现在由于事物一呢,把这个版本号变成1.2,那事物二这边修改完之后呢,回头一看,他准备提交的时候,他一看版本号变成1.2,于是乎呢,他觉得这个地方不行,他得需要做一件事叫啥呀,回滚。
07:24
这个操作放弃。什么时候操作才会提交,第一次修改前的版本号是1.1,修改之后他看版本号还是1.1,这说明什么?没人动过,没人动过我就提交,所以这种情况我说一下啊,它的并发性会好一些,他不像这个这个悲观锁,悲观所的特点什么特点。压根就得排队,根本不允许并发,我操作的时候你只能卡死,等我这边,我这边发生故障之后,你也得等着,我这边网络延迟发生之后,您还得等着,这就是悲观锁。
08:07
被管所。悲观锁和乐观所,其中悲观锁我说了就叫什么,刚才说的叫什么行,即所添加行情锁非常简单,在哪加,在select语句后面添加什么就行了,For什么update就可以了,诶各位,那咱们演示一下吧。咱们演示一下吧,怎么掩饰呢?我们应该写几个程序演示才能演示出来呢?你先思考一下啊,我们先把这个图片保存一下啊来。悲观所和乐观所机制啊,悲观所这叫什么行及所for update啊,好了,这个我就关掉了啊,这个关了。
09:01
那大概的悲观所乐观所的一个机制呢,咱们就说到这啊。
我来说两句