本篇文章主要介绍数据库事务的四大特性ACID,以及数据库的隔离级别。
事务指的是满足 ACID 特性的一系列操作。在数据库中,可以通过 Commit提交一个事务,也可以使用 Rollback 进行回滚。
在了解完数据库的四大特性之后,我们来讨论一下数据库的隔离级别的问题。在此之前,我们考虑在没有数据库隔离性的情况下,多用户并发操作可能会发生的问题。
在并发环境下,一个事务如果受到另一个事务的影响,那么事务操作就无法满足一致性条件。
产生并发不一致性问题主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。并发控制可以通过封锁来实现,但是封锁操作都要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。
现在我们来看下事务的四种隔离级别。
四种隔离级别的对比
隔离级别 | 脏读 | 不可重复读 | 幻影读 |
---|---|---|---|
未提交读 | YES | YES | YES |
提交读 | NO | YES | YES |
可重复读 | NO | NO | YES |
可串行化 | NO | NO | NO |
以上四种隔离级别最高的是SERIALIXABLE(可串行化)级别,最低的是READUNCOMMITTED(未提交读)级别,当然级别越高,执行效率就越低。像SERIALIXABLE(可串行化)这样的级别, 就是以锁表的方式使得其他的线程只能在锁外等待,所以平时选用何种隔离级别应该根据实际情况。
在MySQL数据库中,支持上面四种隔离级别,默认的为REPEATABLE READ(可重复读);而在Oracle数据库中,只支持SERIALIXABLE(串行化)级别和READCOMMITTED(读已提交)这两种级别 ,其中默认的为READ COMMITTED级别。
如对本文有疑问, 点击进行留言回复!!
在Ubuntu/Linux环境下使用MySQL开放/修改3306端口和开放访问权限
ORM框架Peewee(高级连接)peewee连接池、主从、重连、ssh连接
记一次Mysql主从复制延迟,Waiting for dependent transaction to commit
网友评论