加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql事务知识点剖析

发布时间:2021-12-22 02:51:51 所属栏目:MySql教程 来源:互联网
导读:这篇文章主要讲解了mysql事务知识点分析,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习mysql事务知识点分析吧! 1. 事务 1.1. 事务的特性 InnoDB存储引擎支持事务,默认自提交模式,如要开启事务,必须以beg
这篇文章主要讲解了“mysql事务知识点分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql事务知识点分析”吧!
 
1.  事务
1.1.  事务的特性
InnoDB存储引擎支持事务,默认自提交模式,如要开启事务,必须以begin命令开始,以commit或者rollback结束。
 
1.2.  事务语句
事务开启语句由begin或start transaction(read write|read only)命令开始,结束用commit或rollback显示结束。
 
隐式提交:DDL操作或再次输入begin和start transaction命令。
 
隐式回滚:退出会话、连接超时、关机等。
 
关闭自提交特性(set autocommit=0)
 
开启自提交特性(set autocommit=1)
 
关闭自动提交好处:不用一个事务一次提交,多个事务一起体骄傲,提高处理能力。
 
关闭自提交坏处:如一事务长期不提交,导致行锁等待,影响数据库TPS值。
 
不建议关闭自提交模式。
 
1.3.  truncate和delete的区别
truncate 是DDL,事务中不能回滚,会清空表的自增属性,回到原始开始值。
 
delete是DML
 
共同点:清空表内数据,
 
1.4.  事务的隔离级别
SQL标准的4钟隔离级别
 
n  读未提交(read uncommitted),RU,一个事务可以读取到其他事务未提交的数据变化,叫脏读,生产环境不建议使用。
 
n  读已提交(read committed),RC,一个事务可以读其他事务已提交的数据变化,叫不可重复读,是Oracle默认事务隔离级别。
 
n  可重复读(repetable read),RR,一个事务中,直到事务结束前,都可以反复读取到事务刚开始时看到的数据,并一直不发生变化,避免了脏读、不可重复读、幻读现象的发生。mysql默认事务隔离级别。
 
n  串行(serializable),在每个读的数据行上都加表级共享锁,在每次写数据时都要加表级排他锁。造成InnoDB的并发能力下降、大量超时和锁竞争的发生,不建议用到生产环境。
 
修改全局或当前会话的事务隔离级别
 
set global|session transaction isolation level
 
1.5.  脏读、不可重复读、幻读、可重复读
1.5.1.  脏读
RU,一个事务读取别的事务未提交的数据。
 
1.5.2.  不可重复读与幻读
不可重复读:一个事务读取到其他事务针对旧数据的修改记录,常见(update,delte)。
 
幻读:一个事务读取到其他事务新增数据,常见(insert),允许出现在已提交事务的隔离级别中。
 
1.5.3.  可重复读
可重复读是mysql默认事务隔离级别,消除脏读、不可重复读、幻读等现象,很好保证事务的一致性。
 
如在本事务想读取别的新增数据,可如下:
 
查询:select * from t for update;
 
本事务提交一次:commit;
 
感谢各位的阅读,以上就是“mysql事务知识点分析”的内容了,经过本文的学习后,相信大家对mysql事务知识点分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读