MySQL事务及隔离级别

一、MySQL事务

事务是指一系列原子性SQL查询语句,如果数据库引擎能够成功的对数据库应用所有的查询SQL,它就会执行所有查询。如果其中一个SQL执行不了,那么所有的查询SQL都不会执行。即:要么同时成功,要么同时失败。

二、事务的四种特性

1.原子性

顾名思义,一个事务必须被看做是不可拆分,事务里的操作要么同时成功,要么同时失败。

2.一致性

数据库总是从一种一致性状态转移为另一种一致性状态。

3.隔离性

在事务未被提交之前,所有的操作对于其它事务来说都是不可见的。

4.持久性

一旦一个事务被提交,那么这个事务所做的数据改变是永久的。

三、四种隔离级别

1. READ UNCOMMITTED(未提交读)

一个事务未被提交,其它事务也可以读取到改事务所做的操作。
该隔离级别会产生脏读。即其它事务读取到某个事务未被提交的数据,该数据被称为脏数据。

2. READ COMMITTED(提交读)

只有一个事务提交了,其它事务才可以读取到该事务所做的操作。是大多数数据库默认的隔离级别,MySQL不是。
该隔离级别可以解决脏读的问题,但是存在不可重复读的问题。即在同一个事务中,两次读取同一行数据,可能读取到的数据的结果不一致。

3. REPEATABLE READ(可重复读)

同一个事务的多个实例在并发读取数据时,会看到同样内容的数据行。MySQL默认的隔离级别。
该隔离级别解决的不可重复读的问题,但是存在幻读的问题。即在同一个事务中,多次读取同一个范围的数据,读取到的数据条数不一致。

4. SERIALIZABLE(可串行化)

它通过强制事务排序,使它们不可能相互冲突,从而解决幻读的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值