美文网首页
MySQL基础07-事务

MySQL基础07-事务

作者: 四月不见 | 来源:发表于2019-03-14 20:51 被阅读0次

一、简介

MySQL提供了两种事务型的存储引擎:InnoDB和NDB Cluster。另外还有一些第三方存储引擎也支持事务,比较知名的包括XtraDB和PBXT。

事务的4大特性ACID。ACID表示原子性、一致性、隔离性和持久性。一个很好的事务处理系统,必须具备这些标准特性。

二、事务的ACID特性

1、原子性(Atomicity)
一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚。

2、一致性(consistency)
数据库总是从一个一致性的状态转换到另一个一致性的状态。(其实原子性和隔离性间接的保证了一致性)

3、隔离性(isolation)
通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。后面我们讨论隔离级别(Isolation level)的时候,会发现为什么我们要说“通常来说”是不可见的。

4、持久性(durability)
一旦事务提交,则其所做的修改就会永久保存到数据库中。

三、隔离级别

而我们最常说的隔离性其实有对应的隔离级别,MySQL规定的隔离级别有4种,分别是:

1、READ UNCOMMITTED(读未提交)
在此级别里,事务的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,也就是会产生脏读(Dirty Read),在实际应用中一般很少使用。

2、READ COMMITTED(读已提交)
大多数数据库系统的默认隔离级别都是它(但是MySQL不是),它能够避免脏读问题。这个级别有时候也叫做不可重复读(nonrepeatable read),因为再次执行相同的查询,可能会得到不一样的结果。

3、REPEATABLE READ(可重复读)
该隔离级别是MySQL默认的隔离级别,该级别保证了在同一个事务中多次读取同样记录的结果是一致。但是理论上,可重复读隔离级别还是无法解决另外一个幻读(Phantom Read)的问题。(注:这里说的无法解决是MySQL定义层面,对于InnoDB引擎则完美的解决了幻读的问题,如果你正在使用InnoDB引擎,可忽略)

4、SERIALIZABLE(可串行化)
该隔离级别是级别最高的,它通过锁来强制事务串行执行,避免了前面说的所有问题。在高并发下,可能导致大量的超时和锁争用问题。实际应用中也很少用到这个隔离级别,因为RR级别解决了所有问题。

注:执行select @@global.tx_isolation,可以确定数据库的隔离级别。

MySQL可以通过执行SET TRANSACTION ISOLATION LEVEL命令来设置隔离级别。新的隔离级别会在下一个事务开始的时候生效。可以在配置文件中设置整个数据库的隔离级别,也可以只改变当前会话的隔离级别:mysql > SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

参考

1、《高性能MySQL》 [美]Baron Scbwartz, Peter Zaitsev, Vadim Tkacbenko 著
2、 蹲厕所的熊谈谈MySQL-InnoDB存储引擎事务的ACID特性
备用地址:https://view.inews.qq.com/a/20180427G1I97X00

相关文章

  • MySQL基础07-事务

    一、简介 MySQL提供了两种事务型的存储引擎:InnoDB和NDB Cluster。另外还有一些第三方存储引擎也...

  • MySQL基础——事务

    上篇文章学习了MySQL基础——多表查询,这篇文章学习MySQL基础——事务。 事务 事务是一组操作的集合,它是一...

  • 谈谈Transaction——MySQL事务处理分析

    MySQL 事务基础概念/Definition of Transaction 事务(Transaction)是访问...

  • MySQL优化之事务基础,实战优化的基础知识

    MySQL的逻辑架构 MySQL主键自增机制 MySQL关键词 什么是事务 MySQL 创建事务的基础语法 一组事...

  • 10-事务

    事务基础 什么是事务MySQL 中的事务主要用于处理操作量大,复杂度高的数据。MySQL 中只有使用了 Innod...

  • MYSQL(一)---基础架构(查询)

    1.MYSQL(一)---基础架构(查询)2.MYSQL(二)---日志系统(更新)3.MYSQL(三)---事务...

  • MYSQL(二)---日志系统(更新)

    1.MYSQL(一)---基础架构(查询)2.MYSQL(二)---日志系统(更新)3.MYSQL(三)---事务...

  • MYSQL(三)---事务隔离

    1.MYSQL(一)---基础架构(查询)2.MYSQL(二)---日志系统(更新)3.MYSQL(三)---事务...

  • Mysql基础——事务

    内容 事务事务基本知识事务特性如何实现的?快照读和当前读 分布式事务XA规范mysql基于XA实现的分布式事务my...

  • mysql事务基础

    事务 多条sql语句做为一个整体来进行操作的功能,被称为数据库事务特点:事务内所有sql语句的执行要么都成功,要么...

网友评论

      本文标题:MySQL基础07-事务

      本文链接:https://www.haomeiwen.com/subject/vzfdpqtx.html