2022-6月更文挑战27-数据库事务相关知识

70 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情

数据库事务相关知识

前文

数据库事务是一种非常常用的数据操作方式,本文主要内容则为根据理解对于数据库事务相关知识进行一些总结。文章内容主要为笔记内容,其中难免存在不准确之处。

ACID特性

说起数据库事务,很难逃开数据库事务的四大特性,通常简称为ACID。

  • A:原子性。主要是指事务中的数据库操作都是整体不可分割的。
  • C:一致性。指的是事务不会破坏数据库数据的一致性,写入的数据符合预期。
  • I:隔离性。隔离性是指事务之间不会产生互相的影响,当然也存在不同的事务隔离级别。
  • D:持久性。持久性是指事务执行结果在提交后会被存储到数据库中持久化,数据不会消失。

脏读、幻读、不可重复读

提到事务,必然绕不开事务的隔离级别,而这之前首先要了解脏读、幻读、不可重复读的概念。

  • 脏读:值得是事务读取到其他事务中未提交的数据,当其他事务选择回滚时,已读取到的数据也就成为了脏数据。
  • 幻读:幻读指的是在事务的执行过程中,其他事务新增或删除数据,导致当前事务执行后发现有不符合结果的额外数据,主要面向增删。
  • 不可重复读:指的是在事务执行过程中,多次读取数据的结果不一致,主要是指在事务执行过程中数据被其他事务修改。

事务隔离级别

事务之间有一个很重要的内容就是事务的隔离级别,下面简单看一下事务隔离级别的内容。

  • 读未提交。主要是指读取到其他事务未提交的数据,存在脏读、幻读以及不可重复读问题的可能。
  • 读已提交。指只能读取其他事务已经提交的数据。显然避免了脏读,但是仍然存在幻读及不可重复读的问题。
  • 可重复读。指相同数据反复读取时,保持一致的结果。因此避免了不可重复读和脏读,但依然可能由于其他事务新增产生幻读的问题。
  • 串行化。这是一种完全意义的隔离,相当于锁定的操作。从根本上避免了脏读、幻读、不可重复读的问题。

后记

  • 千古兴亡多少事?悠悠。不尽长江滚滚流。