事务的4大特性
ACID
(各吃一元)
1.隔离性,持久性,一致性,原子性
数据库多个事务同时执行的时候可能出现
1.脏读
2.不可重复读
3.幻读
事务隔离越严实,效率越低
SQL标准事务的隔离标准级别包括:
1.读未提交:一个事务还没提交时,它做的变更就会被别的事务看到
2.读提交:一个事务只有在提交之后,它所做的变更才会被看到
3.可重复读:一个事务在读取其他事务时,即使有其他事务对数据进行变更,对本事务看到的数据依然是之前的
4.串行化:针对同一行数据,"写"会加锁,"读"也会加锁,如果有多个锁竞争统一资源,则按照时间顺序先到先得,后续事务必须等待前一个事务完成才能进行
隔离的实现
在MySQL中,每条更新的记录都会记录一条回滚操作.记录上的最新值,可以通过回滚操作返回之前的状态
不同时刻启动的事务会有不同的read-view,同一条记录可以有多个版本,可以通过数据库的多版本并发控制(MVCC),依据隔离级别,回滚到指定版本
事务最好set autocommit=1 显示提交
网友评论