设为首页 加入收藏

TOP

事务的ACID特性及ANSI隔离级别
2018-08-31 18:27:29 】 浏览:147
Tags:事务 ACID 特性 ANSI 隔离 级别

事务的ACID特性

ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。

原子性

将事务是为不可分割的最小单元,整个事务中的操作要不全部提交成功,要么失败全部回滚。不可能只执行其中的一部分操作。

一致性

数据库总是从一个一致性的状态转换成另一个一致性的状态。

隔离性

一个事务所做的修改在最终提交之前,对其它事务时不可见的。

持久性

一旦事务提交,则所做的修改会永远保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。

事务的四种隔离级别

未提交读

事务中的修改即使没有提交对其它事务也是可见的。

提交读(大多数数据库系统默认隔离级别)

一个事务从开始到提交之前所作的任何事务对其他事务都是不可见的。

可重复读(MySQL默认隔离级别)

同一事物中多次读取同样的记录的结果是一样的。

可串行化

最高隔离级别,强制事务串行。

四个可能引发的问题

脏读

事务可以读取未提交的数据。

不可重复读

两次执行同样的查询,可能会得到不一样的结果。

幻读

当某个事务再次读取该范围的记录时,另一个事务又在该范围插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻行。

加锁读

由于在每一行的数据上都加锁,会导致大量的超时和锁争用问题。

各隔离级别和导致的问题

隔离级别

脏读

不可重复读

幻读

加锁读

未提交读

提交读

可重复读

可串行化


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Keepalived+expect方式实现Redis.. 下一篇SQL中在查询结果中新增一列自定义..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目