mysql事物

在mysql中,只有Innodb支持事物,MyISAM则不支持事物。

mysql事物四要素:原子性、一致性、隔离性、持久化。
原子性:指一个事物中多个操作,要么全部成功,要么全部失败。不会出现一半成功一半失败的情况。在外边看起来是一个操作执行。
一致性:指事物开始和事物结束保持所有数据状态是一致的。
隔离性:指多个事物执行,各个事物的操作是相互隔离的,即其他事物要么能看到该事物开始时的状态,要么看到结束的状态,不会查看到中间状态。
持久化:指一个事物结束后,数据会存储到硬盘,一直存在,不会丢失。

mysql事物隔离级别:读未提交、读已提交、可重复读、串行化。
读未提交:一个事物执行过程中可以读到其他事物未提交的数据,该级别会造成脏读、幻读、不可重复读。
读已提交:一个事物执行过程中可以读取其他事物已提交的数据,不能读到未提交的数据。该级别会造成幻读、不可重复读。
可重复读:一个事物执行过程中多次读取的数据是一致的,并不会因为其他事物对数据做更新操作而改变读取的值。该级别可能会造成幻读。
串行化:该级别是安全性最高的级别。但性能最差,该级别会将所有事物顺序执行。必须一个事物结束后,才能执行另一个事物。

脏读:读取到一个事物未提交的数据,称为脏读。因为可能会回滚,所以会成为脏数据。
幻读:事物在读取数据之后,另一个事物新增了数据,此时再去读取了包含新增的数据,称为幻读。
不可重复读:指事物执行过程中因为其他事物对数据造成修改或者删除而导致该事物前后读取数据不一致的情况。

在mysql中,我们可以通过 select @@tx_isolation查询当前事物隔离级别
也可以通过select @@global.tx_isolation 查询全局事物隔离级别。

mysql> select @@tx_isolation;
+-----------------+
| @@tx_isolation  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set, 1 warning (0.00 sec)

mysql> select @@global.tx_isolation;
+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| REPEATABLE-READ       |
+-----------------------+
1 row in set, 1 warning (0.00 sec)

如果想要修改的话,可以通过命令行

set [session|global] transaction isolation level [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]

也可以通过修改my.cnf来改变事物隔离级别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值