Mysql事物
事物这个东西大家应该写过项目的就用过,但是还是要说的
为什么需要事物
现在很多软件都是多用户,多程序,多线程的,对同一张表可能同时有很多人在用,为保持数据的一致性,所以提出了事物的概念...可重复读(repeatable read)
可串行化(serializable)
查询Mysql事物的默认隔离级别
select @@tx_isolation;
?
...Mysql事物的默认隔离级别是repeatable read
事物并发问题
脏读:事物A读取了事物B更新的数据,然后B回滚操作,那么A就读取到了脏数据
不可重复读:事物A多次读取同一数据,事物B在事物A...,当系统管理员A改完之后发现还有没改的,就像幻觉一样,这就是幻读
不可重复读和幻读容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除,解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表
//设置当前会话的事物隔离级别...,读写数据都会锁住整张表
隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大,对于多数应用程序,可以优先考虑把数据库系统的隔离级别设置为read committed,它能避免脏读,而且具有较好的并发性能