事务
注:回滚事务将会把所有的操作都还原,导致操作同时失败
事务的操作:
事务的操作可以有两种,第一种是关闭掉mysql的自动事务提交(即每个语句执行后直接写进数据库),然后再手动提交。
第二种则是偏向于编程化即直接手动决定事务开始和结束的地方
事务的四大特性(ACID):
事务的并发问题:
脏读:事务A对一条数据进行了更新,但是A的事务并没有提交,此时事务B直接对该数据进行了查询,就是所谓的读到了另外一个事务还没有提交的数据。(两次读数据不一样,B未提交)(事务B的操作影响到了A)
不可重复读:事务B先读取了一条数据,然后事务A对这条数据又进行了更新,此时事务B又对该数据进行了查询得到两次查询的结果不相同,这就叫不可重复读。(两次读数据不一样,B提交了)
幻读:事务B先查询了一条数据发现其并不存在,然后事务A又刚好插入了这条数据,事务B没有查询到数据然后进行新增但是此时提示该数据已经存在
并发问题的解决方案:隔离级别
注:随着事务级别的越高,性能会越差