美文网首页
数据库事务相关

数据库事务相关

作者: 内沐 | 来源:发表于2020-04-29 13:43 被阅读0次

事务隔离级别(tx_isolation)
mysql 有四级事务隔离级别 每个级别都有字符或数字编号

级别 symbol 描述
读未提交 READ-UNCOMMITTED 0 存在脏读、不可重复读、幻读的问题
读已提交 READ-COMMITTED 1 解决脏读的问题,存在不可重复读、幻读的问题
可重复读 REPEATABLE-READ 2 mysql 默认级别,解决脏读、不可重复读的问题,存在幻读的问题。使用 MMVC机制 实现可重复读
序列化 SERIALIZABLE 3 解决脏读、不可重复读、幻读,可保证事务安全,但完全串行执行,性能最低

我们可以通过以下命令 查看/设置 全局/会话 的事务隔离级别

 SELECT @@global.tx_isolation, @@tx_isolation;
@@global.tx_isolation @@tx_isolation
REPEATABLE-READ REPEATABLE-READ

丢失修改:指两个事务T1和T2从数据库中读入同一数据并修改,T2的提交结果破坏了T1提交的结果,导致T1的修改被丢失

不可重复读:不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。

不可重复读包括三种情况:

事务T1读取某一数据后,事务T2对其做了修改,

当T1再次读该数据时,得到与前一次不同的值。

事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神密地消失了。

事务T1按一定条件从数据库中读取了某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。

后两种情况也称为幻影现象(Phantom Row)。

脏读:读“脏”数据:事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时事务1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据称为“脏”数据。

e.g:丢失修改

image

幻读:

幻读,并不是说两次读取获取的结果集不同,幻读侧重的方面是某一次的 select 操作得到的结果所表征的数据状态无法支撑后续的业务操作。更为具体一些:select 某记录是否存在,不存在,准备插入此记录,但执行 insert 时发现此记录已存在,无法插入,此时就发生了幻读。

不可重复读侧重表达 读-读,幻读则是说 读-写

MVCC (Multiversion concurrency control) 多版本并发控制

参考文章:https://segmentfault.com/a/1190000016566788

相关文章

  • Spring学习之事务管理基础

    Spring学习之事务管理基础 数据库事务相关概念 事务的定义 事务,一般指的是数据库事务,是指数据库操作的时候,...

  • 聊聊数据库事务

    本文主要基于Mysql数据库的InnoDB存储引擎介绍事务相关知识。 1.先来说说数据库引入事务的目的。 事务...

  • 深入浅出Spring事务的实现原理

    事务的基本原理 数据库事务 通常的观念认为,事务仅与数据库相关,它是数据库管理系统执行过程中的一个逻辑单位,由一个...

  • 数据库事务相关

    18.7.23一、概念:作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。一个逻辑工作单元要...

  • 数据库事务相关

    事务隔离级别(tx_isolation)mysql 有四级事务隔离级别 每个级别都有字符或数字编号 级别symbo...

  • 数据库事务相关

    学习来源:https://blog.csdn.net/qq_33290787/article/details/51...

  • delete,update,select for update如

    具体其他事务相关可以看数据库事务的隔离级别及常见事务异常 - 简书 (jianshu.com)[https://w...

  • spring声明式事务

    1.数据库ACID、事务隔离级别 2.spring事务相关的API 3.spring声明式事务 4.spring事...

  • 【Sql Server】SQL SERVER 收缩日志

    正文 事务日志记录着在相关数据库上的操作,同时还存储数据库恢复(recovery)的相关信息。 收缩日志的原因有很...

  • java中数据库事务嵌套与mysql事务隔离级别

    原文链接: java中数据库事务嵌套与mysql事务隔离级别 今天在java代码中遇到一个数据库相关的bug,在分...

网友评论

      本文标题:数据库事务相关

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