美文网首页
数据库事务

数据库事务

作者: 木木呦 | 来源:发表于2019-10-22 23:49 被阅读0次

为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步

同步和异步的区别和联系

一句话总结:同步就是一件事一件事的做,没做完不能做其他事。异步就是,可以做多个互不影响的事。

举例:

吃饭和说话就是同步,因为只有一张嘴。

吃饭的时候听歌,看电视,就是异步,互不影响。

并发测试工具:JMeter


数据库事务的隔离级别

脏读: 事务A读取了 被 事务B已修改但未提交的数据。假如B回退,则事务A读取的是无效的数据。

不可重复读 :在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的。

幻读:发生在当两个完全相同的查询执行时,第二次查询所返回的结果集跟第一个查询不相同。例如:第一次查询有5条数据,执行第二次查询前,插入了一条数据,第二次查询时就有6条数据。

为了解决上述问题数据库提供以下四种隔离级别:

读未提交(Read Uncommitted) ps:可以读到未提交的内容, 一般不会去用的。

在这种隔离级别下,查询是不会加锁的,也由于查询的不加锁,所以这种隔离级别的一致性是最差的,可能会产生“脏读”、“不可重复读”、“幻读”。

读提交(Read Committed)ps:只能读到已经提交了的内容, 各种系统中最常用的一种隔离级别。

可避免“脏读”,并不能避免“不可重复读”和“幻读”。

如需要加锁,需要显式的加锁,普通查询不会加锁。select * from Table where id = 1 for update

可重复读(Repeated Read)ps:专门针对“不可重复读”这种情况而制定的隔离级别。

当事务启动时,就不允许进行“修改操作(Update)”了,而“不可重复读”恰恰是因为两次读取之间进行了数据的修改,因此,“可重复读”能够有效的避免“不可重复读”,但却避免不了“幻读”,因为幻读是由于“插入或者删除操作(Insert or Delete)”而产生的。

串行化(Serializable)ps: 数据库最高的隔离级别,这种级别下,事务“串行化顺序执行”,也就是一个一个排队执行。

这是数据库的最高隔离级别,可以有效避免脏读/幻读/不可重复读,但是效率奇差,性能开销大。


相关文章

  • Django之数据库事务编程

    在了解 Django 数据库事务编程前有必要先了解下数据库事务。 数据库事务(transaction) 数据库事务...

  • 数据库笔记

    数据库 数据库⭐MySQL 默认存储引擎InnoDB(事务性存储引擎)一、事务 数据库事务? 数据库事务有什么作用...

  • 数据库事务简介(一)--- 所谓事务

    事务的概念 数据库事务简介(一)--- 所谓事务数据库事务简介(二)--- 故障恢复(未完成)数据库事务简介(三)...

  • Spring学习之事务管理基础

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

  • 事务及事务隔离级别

    事务及事务隔离级别 什么是事务 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务...

  • 搞懂Redis(四)-Redis事务

    事务本质:一组命令的集合 数据库事务与Redis事务 数据库事务数据库事务通过ACID(原子性.一致性.隔离性.持...

  • SpringBoot 数据库事务

    SpringBoot 数据库事务 事务: 数据库事务是 访问并可能更新 数据库中各种数据项的一个程序执行单元 事务...

  • SPRING的事务详解

    一、什么是事务 事务的概念 事务是访问数据库的一个操作序列,数据库应用系统通过事务集来完成对数据库的存取。事务的正...

  • 4.MySQL的事务与锁(1)

    本章要点 1.数据库事务2.MVCC 1 数据库事务 1.1 事务特性 事务具有的特性:ACID(Atomicit...

  • spring事务

    1、什么是事务事务和数据库操作有关,commit事务提交,rollback事务回滚事务作用:保证一组和数据库有关的...

网友评论

      本文标题:数据库事务

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