数据库
首页 > 数据库> > Mysql 系列 | 事务隔离

Mysql 系列 | 事务隔离

作者:互联网

事务是保证一组数据库操作,要么全部成功,要不全部失败。

最经典的例子就是 A 转账给 B,A 的余额扣除 和 B 的余额增加,这两步需要同时成功或失败。

在 Mysql 中,事务支持是引擎层实现。InnoDB 支持事务,而 Mysql 自带的 MISAM 则不支持。

事务有 A(Atomicity)、C(Consistency)、I(Isolation)、D(Durability) 四个特性,即原子性一致性隔离性持久性

本篇讨论 InnoDB 的事务隔离性。

事务的隔离性

隔离级别

Mysql8 默认隔离级别如下:

mysql> show variables like "transaction_isolation";
+-----------------------+-----------------+
| Variable_name         | Value           |
+-----------------------+-----------------+
| transaction_isolation | REPEATABLE-READ |
+-----------------------+-----------------+
1 row in set (0.00 sec)

隔离越严实,效率就会越低。用一个例子来分析下面四种隔离级别的结果分别是多少。

image
(丁奇原图)

读未提交(read uncommitted)

读提交(read committed)

可重复读(repeatable read)

串行化(serializable )

可重复度隔离的实现

image
(丁奇原图)

事务启动方式

显式启动

关闭自动提交 set autocommit=0


上面的长事务,从早上七点多到现在(下午四点)还在 running,赶快去查查是什么情况!!!

标签:事务,join,隔离,xxx,trx,提交,Mysql
来源: https://www.cnblogs.com/rendd/p/16506079.html