MySQL之事务
Posted zhwai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL之事务相关的知识,希望对你有一定的参考价值。
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。
开启事务:start transaction;
回滚事务(如果事务提交后,不能够回滚):rollback;
提交事务:commit;
事务的4大特性:
1.原子性(automic):同一个事务中多组操作不能够分割,必须是一个整体
2.一致性(consistent):事务操作前与事务操作后总量保持一致
3.隔离性(isolation):多个事务之间互不干扰
在mysql中事务有4种隔离级别:read uncommitted(读取未提交的事务)、read committed(读取已提交的事务)、repeatable read(可重复读)、serializable(可序列化的),(级别依次升高,且级别越高对数据库的性能影响越大)
查看mysql软件中的事务隔离级别:select @@tx_isolation;
修改mysql软件默认的隔离级别: set global transaction isolation level 隔离级别
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
不同的隔离级别会引发不同的问题:
当mysql的事务隔离级别为read uncommitted时,会导致脏读:一个事务可以读取另一个事务未提交的数据。
解决方法:将事务隔离级别改为read committed,SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
当mysql软件的事务隔离级别为read committed的时候,会引发不可重复读:在同一事物中多次读取的结果不一致。
解决方法:将事务隔离级别改为repeatable read,SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
改为repeatable read后,若两个事务同时进行,一个事务改变数据,另一个事务查询的数据结果不影响,不改变,仍为改变之前的数据。
当mysql软件的事务隔离级别为repeatable read时,会导致虚读(幻读):
4.持久性(durable):数据一旦进入到库中、表中,就永久存在
以上是关于MySQL之事务的主要内容,如果未能解决你的问题,请参考以下文章