ACID
1.原子性:多个操作保持一致,要么都执行,要么都不执行(操作一致)
2.一致性:在事务的开始和完成时,数据都必须保持一致(数据一致)
3.隔离性:事务的隔离,不受外部操作影响,独立环境执行
4.持久性:事务完成之后,宕机了会数据的修改也是永久性的
并发事务处理带来的问题:
更新丢失或脏写
脏读:读到了未提交的更新数据
不可重读
幻读
乐观锁基于version实现,悲观锁:会有线程等待的情况
读锁会阻塞写锁,但是不会阻塞读。二写锁则会把读和写都阻塞
set tx_isolation="***"
数据库层面操作值做加减法 例如:update table set money=money - #{param},预防脏读
可重复读:幻读