InnoDB支持事务,MyISAM不支持事务
事务的特征(ACID)
- 原子性
- 一致性
- 隔离性
- 持久性
oracle的隔离级别是“读提交”
不同事务隔离级别:
- 读未提交:别人改数据的事务尚未提交,我在我的事务中也能读到。
- 读已提交:别人改数据的事务已经提交,我在我的事务中才能读到。
- 可重复读:别人改数据的事务已经提交,我在我的事务中也不去读。
- 串行:我的事务尚未提交,别人就别想改数据。
查看当前的隔离级别
show variables like 'transaction_isolation'
事务隔离的实现:每条记录在更新的时候都会同时记录一条回滚操作。同一条记录在系统中可以存在多个版本,这就是数据库的多版本并发控制(MVCC)
回滚日志什么时候删除?
系统会判断当没有事务需要用到这些回滚日志的时候,回滚日志会被删除。
事务启动方式:
一、显式启动事务语句,begin或者start transaction,提交commit,回滚rollback;
二、set autocommit=0,该命令会把这个线程的自动提交关掉。这样只要执行一个select语句,事务就启动,并不会自动提交,直到主动执行commit或rollback或断开连接。