首页 > 数据库技术 > 详细

MySQL之事务

时间:2018-07-31 20:57:00      阅读:193      评论:0      收藏:0      [点我收藏+]

数据库事务(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之事务

原文:https://www.cnblogs.com/zhwup/p/9395208.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!