Mysql事务
事务是基于存储层,而不是Server层,例如Innodb支持事务而MyISAM不支持
事务的四大特性(ACID):
原子性
一致性
隔离性
持久性
原子性
一个事务包含多个操作,这些操作要么全部执行,要么全都不执行
一致性
一致性是指事务使得系统从一个一致的状态转换到另一个一致状态
隔离性
当多个事务同时执行的时候,就需要考虑到隔离级别概念
- 读未提交:一个事务还没提交时,它做的变更就能被别的事务看到
- 读提交:一个事务提交之后,它做的变更才会被其他事务看到
- 可重复读:简单来说,该事务在没提交之前,其他事务对该事务数据做了修改时,并不会影响该事务数据。(INNODB默认的级别)
- 串行化:对于同一行记录,“写”会加“写锁”,“读”会加“读锁”。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行
持久性
事务提交后,对系统的影响是永久的
如何查询当前引擎使用的是什么事务级别呢?
show variables like 'transaction_isolation';
如需深入研究,传送门->阅读原文