数据库事务隔离级别的概念和特性有哪些?
@概念
执行批量操作,这些操作作为一个整体,要么全部成功,要么全部失败
@四大特性acid
原子性(atomicity)
事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生;
一致性(consistency)
事务前后,数据关系一致、业务逻辑一致;
隔离性(isolation)
一个事务所做的修改在最终提交以前,对其他事务是不可见的;
持久性(duration)
一旦事务提交,则更改是永久的;
@并发事务带来的问题
脏读:别人读到未提交的错误数据;
不可重复读readunrepeatable:别人读到的数据前后不一致,因为其间被你提交了修改;
幻读:别人验证自己的修改时产生错觉,以为自己改错了,因为其间被你提交了修改;
@隔离级别
隔离级别由低到高依次为:
read uncommitted
读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据
造成脏读(别人读到未提交的错误数据)
read committed
读提交,顾名思义,就是一个事务要等另一个事务提交后才能读取数据
造成readunrepeatable(别人读到的数据前后不一致,因为其间被你提交了修改)
repeatable read
重复读,就是在开始读取数据(事务开启)时,屏蔽其它事务的修改操作
造成幻读(别人验证自己的修改时产生错觉,以为自己改错了,因为其间被你提交了修改)
serializable
序列化,最高的事务隔离级别,在该级别下,事务串行化顺序执行(事实上是去并发)
不存在任何并发问题,但效率低下
@默认隔离级别
大多数默认的事务隔离级别是read committed,比如sql server , oracle mysql的默认隔离级别是repeatable read
@编辑隔离级别
修改mysqld
在my.ini中设置,在mysqld选项中如下设置 [mysqld] transaction-isolation = read-committed
命令行操作
set tx_isolation='read-committed'; set global tx_isolation='repeatable-read'; select @@tx_isolation; select @@global.tx_isolation;
上一篇: 男性吃什么可以抗衰老 又有哪些不能吃呢?