美文网首页
简析每个隔离级别下共享锁持续时长

简析每个隔离级别下共享锁持续时长

作者: 卢会军_abc9 | 来源:发表于2019-03-14 14:42 被阅读0次

锁:多并发排他访问的时候产生,

所以锁和事务特性中的隔离性关系密切.

四种隔离级别:

读未提交

读已提交

可重复读

可序列化

排他锁:为了保证事务的完整一致, 排他锁都是持续到事务结束的..

共享锁加锁机制

读未提交:

顾名思义,别人没有提交我能读,哪我读取的时候不加共享锁呗,

读脏(胀数据是既没有提交也没有回滚的数据,中间状态数据页是在内存中还没有redo到磁盘的数据,

当checkpoint被触发时会批量写入磁盘,然后在页头标记为干净).

读已提交:

顾名思义,别人提交了我才能读,那么我读取的时候是加共享锁的,

但是共享锁是读取一条释放一条,这个锁不会持续到事务结束.

可重复读:

顾名思义,可以重复读取吗,

既然在一个事务内我可以重复读取,其实意识就是在一个事务内多少此都一致,

那么这个共享锁是持续到事务结束..从start--commit 这段时间内共享锁一直持有,

所以其他人修改不掉,才会多次读取一致。

可序列化:

如一张表主键id 1,2,3 3条数据我想在2-3之间插入一个2.5,

如果现在有人查询select count(1) from tbname where id>=1 and id<=3时,

是不允许的,因为这个隔离级别上的是范围锁这段时间不但数据不能修改, 这一段范围也不能插入新的数据..

所以一个事务内count多少次都是3条数据, 如果这个表没有主键,没有聚集建怎么上范围所, 堆表无逻辑概念 ,

存放的就是物理位置 fileid:pageid:slotnumber ,如果堆表这个隔离级别读取的时候就会加表锁.

以上概述只限SQLSERVER 数据库, mysql,postgresql采取的是乐观并发, 默认读老版本数据。

所以他的读已提交默认读取的是行的老版本、

相关文章

  • 简析每个隔离级别下共享锁持续时长

    锁:多并发排他访问的时候产生, 所以锁和事务特性中的隔离性关系密切. 四种隔离级别:读未提交读已提交可重复读可序列...

  • 数据库事务隔离性的几个总结:

    数据库隔离性的几个总结: read uncommited: 不对读事务设置锁;对写事务设置行级共享锁 read c...

  • RC隔离级别下锁表现

    前提: mysql:8.0.20 非锁引 session1:begin;session1:update user ...

  • Innodb锁

    锁 共享锁与排他锁(Shared and Exclusive Locks) 概念: 行级锁,分为如下两种 共享锁S...

  • Mysql的行级锁 -- 共享锁和排他锁

    转载 mysql锁机制分为表级锁和行级锁,行级锁中的共享锁(select ... lock in share mo...

  • mysql锁的分类

    按锁的粒度划分:表级锁 行级锁 页级锁 按锁的级别划分:共享锁 排他锁 按加锁方式划分:自动锁...

  • Mysql相关问题

    1.Mysql锁 行级锁又分共享锁和排他锁。 共享锁:名词解释:共享锁又叫做读锁,所有的事务只能对其进行读操作不能...

  • 锁类型 共享锁和排他锁行级锁lock mode S:共享锁(读锁)lock mode X:排他锁(写锁) 意向锁I...

  • 8 - 快照 - 秒级快照如何实现?

    关键字 快照、版本回滚、事务隔离、锁 0.引子 在之前的课程中,我们已经知道,在“可重复读”的事务隔离级别下,My...

  • 共享 + 排他锁

    mysql锁机制分为表级锁和行级锁 ,mysql中行级锁中的共享锁与排他锁进行分享交流。 测试语法 begin; ...

网友评论

      本文标题:简析每个隔离级别下共享锁持续时长

      本文链接:https://www.haomeiwen.com/subject/lbgqmqtx.html