数据库中事务的四大特性(ACID)及事务的隔离级别
一、事务的四大特性
(1)原子性(Atomicity)
原子性是指事物包含所有操作要么全部成功,要么全部失败回滚。
(2)一致性(Consistency)
一致性是指事务必须是数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事物执行之前和执行之后都必须处于一致性状态
(3)隔离性(Lsolation)
操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作干扰,多个并发事务之间要相互隔离
(4)持久性(Durability)
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的。
二、事物的隔离级别
(1)第一种隔离级别:Read uncommitted(读未提交)
如果一个事务已经开始写数据,则另外一个事务不允许同时进行写操作,但允许其他事务读此行数据。
解决了更新丢失,但还是可能会出现脏读
脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据。
(2)第二种隔离级别:Read committed(读提交)
如果是一个读事务(线程),则允许其他事务读写,如果是写事务将会禁止其他事务访问该行数据,该隔离级别避免了脏读,
解决了脏读 但是可能出现不可重复读。
不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了。
(3)第三种隔离级别:Repeatable read(可重复读取)
可重复读取是指在一个事务内,多次读同一个数据,在这个事务还没结束时,其他事务不能访问该数据(包括了读写),这样就可以在同一个事务内两次读到的数据是一样的。
解决了更新丢失、脏读、不可重复读、但是还会出现幻读
幻读是事务非独立执行时发生的一种现象。
(4)第四种隔离级别:Serializable(序列化)
提供严格的事务隔离,它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行,
解决了更新丢失、脏读、不可重复读、幻读(虚读)


浙公网安备 33010602011771号