mysql事务隔离级别

1.什么是mysql事务?

mysql事务可以说是一系列相关联sql的操作集合。比如说你删除一个id,还要把与这个id的邮箱,评论等,那么这些数据库操作就构成一个事务。

2.事务的特性

原子性:一个事务里面的数据库操作要么都执行,要么都不执行。

一致性:操作前和操作后都必须满足业务的规则,比如说转账前和转账后钱的总数保持一致。

隔离性:数据库允许事务的并发,隔离性可以防止事务的并发导致数据错乱。

持久性:事务的执行都是永久性的。

3.并发产生的问题

在说事务隔离级别之前,得说一下并发产生的级别,因为隔离性就是为了解决并发问题。

更新丢失:就是两个事务都要对某一些数据进行更新,那么后面的更新就会覆盖前面的更新。

脏读:一个事务读取到了另一个事务还没有提交的数据。

不可重复读:一个事务读取某条数据两次,但是这期间另一个事务修改了这个数据,导致两次读取的数据不一样。

幻读:一个事务读取到了其他事务新增的数据(insert)。

4.隔离级别

未提交读:也就是脏读现象,可以读取其他事务还没有提交的事务,这是最低级别,生产不环境请勿使用。

已提交读:在一个事务中,可以读取其他事务已经提交的数据变化,但是这种还是会有不可重复读的现象。

可重复读:mysql默认隔离级别。在一个事务中,直到事务结束前,都可以反复读取到事务刚开始看到的数据,并一致不会变化,但它还是没有解决幻读的现象。

可串行化:最高级别,它强制事务串行执行,会在读取的每一行数据上都加锁,可能会导致大量的超时和锁争现象。

5.注意

每一种隔离级别的工作机制都不相同,越高越复杂。凡是涉及到表结构的语句,都不受事务控制。
查看数据库当前的隔离级别:

SHOW VARIABLES LIKE "%tx_isolation%";

你可能感兴趣的:(运维linux,mysql)