美文网首页
2022-08-07 数据库与锁

2022-08-07 数据库与锁

作者: zhangwenqiang | 来源:发表于2022-08-07 21:46 被阅读0次

多事务处理数据时遇到的问题和原因

1.脏读(读到了不存在数据)原因:读未提交
2.不可重复读(两次读一条数据,值不一样)原因:读已提交
3.幻读(两次读数据集,数据的条数不一样)原因:表未锁,没有行间锁(间隙锁)

数据库的隔离级别

1.读未提交
2.读已提交
3.可重复读(加锁,读到的东西不可以被修改)
4.序列化

mvcc隔离级别的实现原理

0.数据行的隐藏字段:
数据行id 修改后数据行内容 当前的事务id 回滚id
回滚id 对应的是 undo表中修改前的数据 ,如下
数据行id 本次修改前数据行内容 之前的事务id 之前回滚id
1.读已提交:每条记录有一个事务id,表的每个事务的事务id是递增的,表会保存最大的已提交的事务id,和当前最大的事务id。如果一条事务读一条数据,判断这条数据的事务id是否小于 ”表保存的最大的已提交的事务id“,小于则表示这条数据已提交,否则根据这条数据的rollbackId在undo表中找到旧的数据,直到找到已提交的数据。
2.二级索引只是对主键索引的指针,没有保存真正的数据,需要先找到对应的主键,再寻找数据。

共享锁(share)S
排它锁(exclusive)X
意向共享锁(intent share)IS
意向排它锁(intent exclusive)IX
间隙锁

相关文章

  • 2022-08-07 数据库与锁

    多事务处理数据时遇到的问题和原因 1.脏读(读到了不存在数据)原因:读未提交2.不可重复读(两次读一条数据,值不一...

  • MySQL05

    数据库高级对象,锁,权限管理 视图 索引 触发器 存储过程 悲观锁与乐观锁 行级锁、表级锁、页锁 数据库权限管理 ...

  • 数据库如何加锁?锁是用来干嘛的?

    数据库中的共享锁与排它锁 共享锁(S锁),又称为读锁,如果数据对象加上共享锁之后,则该数据库对象可以被其他事务查看...

  • 《话说秋季的第1个节气---立秋》冬冬 撰文与书法2022-08

    《话说秋季的第1个节气---立秋》 冬冬 撰文与书法 2022-08-07 ...

  • 悲观锁与乐观锁

    乐观锁与悲观锁 概念 悲观锁(数据库锁) 悲观锁(Pessimistic Lock),顾名思义,很悲观,每次在拿数...

  • 6.数据库

    Android数据库ORM框架用法、源码和性能比较分析 synchronized与lock 对象锁、互斥锁、共享锁...

  • 锁的概述

    乐观锁与悲观锁 悲观锁 乐观锁和悲观锁的概念出自数据库,但在java并发包中也引入和类似的概念(乐观锁/悲观锁是一...

  • mysql进阶-行级锁、表级锁、乐观锁、悲观锁

    从应用的角度来看数据库锁可分为悲观锁、乐观锁从数据库(InnoDB)的角度看,数据库锁可以分为行级锁和表级锁 1....

  • 知识点整理

    redis redis为什么高效,及应用场景 锁 死锁产生条件,及避免死锁 悲观锁与乐观锁 数据库 事务 事务特性...

  • 两端锁协议

    1、数据库锁 数据库锁粒度划分:行锁、页锁、表锁。共享锁:读锁、S锁。事务T可以对A进行读取,其他事务只能读取而不...

网友评论

      本文标题:2022-08-07 数据库与锁

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