事务操作分两步:1在内存更新数据,2把操作行为记录到事务日志(实现增量数据备份和还原)
事务特性:原子性,一致性,隔离性,持久化
事务问题都是,两个或者多个事务并发操作导致的问题,没有做隔离(加锁)。
脏读:T1事务,读取到T2事务未提交的事务。
不可重复读:T1事务 查询过程中 ,被T2事务修改了数据,导致了同一个事务查的数据不之一。
幻读:T1事务查询数据不存在 select id(1),T2事务插入了数据导致了存在insert id(1),
隔离:事务与事务之间不能相互干扰
隔离级别:串行(Serializable ),repeatable(可重复读),read committed,read uncommitted
串行(Serializable ):可以解决以上三种问题(锁表)
repeatable :解决可以重复读,脏读取(锁行,无法解决幻读,幻读 的记录不存在)
read committed:读已经提交,避免脏读
mysql 默认 repeatable