当前位置: 首页 > news >正文

当前读和快照读有什么区别?

当前读和快照读有什么区别?

快照读(一致性非锁定读)就是单纯的 SELECT 语句,但不包括下面这两类 SELECT 语句:

SELECT ... FOR UPDATE
# 共享锁 可以在 MySQL 5.7 和 MySQL 8.0 中使用
SELECT ... LOCK IN SHARE MODE;
# 共享锁 可以在 MySQL 8.0 中使用
SELECT ... FOR SHARE;

快照即记录的历史版本,每行记录可能存在多个历史版本(多版本技术)。

快照读的情况下,如果读取的记录正在执行 UPDATE/DELETE 操作,读取操作不会因此去等待记录上 X 锁的释放,而是会去读取行的一个快照。

只有在事务隔离级别 RC(读取已提交) 和 RR(可重读)下,InnoDB 才会使用一致性非锁定读:

  • 在 RC 级别下,对于快照数据,一致性非锁定读总是读取被锁定行的最新一份快照数据。

  • 在 RR 级别下,对于快照数据,一致性非锁定读总是读取本事务开始时的行数据版本。

快照读比较适合对于数据一致性要求不是特别高且追求极致性能的业务场景。

当前读 (一致性锁定读)就是给行记录加 X 锁或 S 锁。

当前读的一些常见 SQL 语句类型如下:

# 对读的记录加一个X锁
SELECT...FOR UPDATE
# 对读的记录加一个S锁
SELECT...LOCK IN SHARE MODE
# 对读的记录加一个S锁
SELECT...FOR SHARE
# 对修改的记录加一个X锁
INSERT...
UPDATE...
DELETE...

http://www.mrgr.cn/news/59059.html

相关文章:

  • 912.排序数组(快速排序)
  • 10.22.2024刷华为OD C题型(三)--for循环例子
  • sharpkeys-键盘部分按键不好用,用其它不常用按键代替
  • Python 精品学习资料收藏下载,Python 字符串处理备忘单
  • 「C/C++」C++三大特性之封装、继承、多态(大致了解)
  • 数据库产品中SQL注入防护功能应该包含哪些功能
  • Python自动化会议记录与摘要生成
  • 现在设备普遍切换成TYPE-C适配器后,一拖三数据线接口变革探析
  • 软考高级架构-7.1-软件架构概念-超详细讲解+精简笔记
  • 机器人转人工时,开启实时质检(mod_cti基于FreeSWITCH)
  • Kaggle 数据集dogs-vs-cats的错误
  • 真的有免费的MC/Terraria/...服务器?简幻欢让你实现开服梦!
  • Mysql使用pt工具在大表添加索引
  • JAVA入门知识点小结-day4
  • 【jvm】所有的线程都共享堆吗
  • 使用pytest单元测试框架执行单元测试
  • 计算机网络:网络层 —— IPv4 地址与 MAC 地址 | ARP 协议
  • PSI-BLAST生成的PSSM文件转换为pssm_dict字典
  • leetcode hot100【LeetCode 128. 最长连续序列】java实现
  • 首发CSP-J2题解
  • 【已解决】编译Linux内核报错multiple definition of yylloc
  • 大模型训练、微调数据集
  • linux网络编程6——基于UDP的可靠传输协议KCP/QUIC
  • Minio文件服务器:安装
  • [LeetCode] 77. 组合
  • shodan1,shodan简介和kali下的使用