持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情
数据库事务相关知识
前文
数据库事务是一种非常常用的数据操作方式,本文主要内容则为根据理解对于数据库事务相关知识进行一些总结。文章内容主要为笔记内容,其中难免存在不准确之处。
ACID特性
说起数据库事务,很难逃开数据库事务的四大特性,通常简称为ACID。
- A:原子性。主要是指事务中的数据库操作都是整体不可分割的。
- C:一致性。指的是事务不会破坏数据库数据的一致性,写入的数据符合预期。
- I:隔离性。隔离性是指事务之间不会产生互相的影响,当然也存在不同的事务隔离级别。
- D:持久性。持久性是指事务执行结果在提交后会被存储到数据库中持久化,数据不会消失。
脏读、幻读、不可重复读
提到事务,必然绕不开事务的隔离级别,而这之前首先要了解脏读、幻读、不可重复读的概念。
- 脏读:值得是事务读取到其他事务中未提交的数据,当其他事务选择回滚时,已读取到的数据也就成为了脏数据。
- 幻读:幻读指的是在事务的执行过程中,其他事务新增或删除数据,导致当前事务执行后发现有不符合结果的额外数据,主要面向增删。
- 不可重复读:指的是在事务执行过程中,多次读取数据的结果不一致,主要是指在事务执行过程中数据被其他事务修改。
事务隔离级别
事务之间有一个很重要的内容就是事务的隔离级别,下面简单看一下事务隔离级别的内容。
- 读未提交。主要是指读取到其他事务未提交的数据,存在脏读、幻读以及不可重复读问题的可能。
- 读已提交。指只能读取其他事务已经提交的数据。显然避免了脏读,但是仍然存在幻读及不可重复读的问题。
- 可重复读。指相同数据反复读取时,保持一致的结果。因此避免了不可重复读和脏读,但依然可能由于其他事务新增产生幻读的问题。
- 串行化。这是一种完全意义的隔离,相当于锁定的操作。从根本上避免了脏读、幻读、不可重复读的问题。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。