美文网首页数据库
INNODB事务和锁

INNODB事务和锁

作者: 随风_d6a2 | 来源:发表于2021-01-16 17:00 被阅读0次

事务及其ACID属性

事务是由一组SQL语句组成的逻辑处理单元。

事务具有以下4个特性,简称为事务ACID属性。

原子性(Atomicity)

事务是一个原子操作单元,其对数据的修改,要么全部成功,要么全部失败。

一致性(Consistent)

在事务开始和完成时,数据都必须保持一致状态。

隔离性(Isolation)

数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的 “独立” 环境下运行。

持久性(Durable)

事务完成之后,对于数据的修改是永久的。

并发事务处理带来的问题

脏读(Dirty Reads)

当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。

例子:事务三中售出一张票,修改了数据库16变15,可是事务还没提交,事务一读了修改了的数据(15),但是事务三被中断撤销了,比如存钱修改数据库后,在返回数据给客户时出现异常,那么事务三就是不成功的,数据会变回16。可是事务一读了一个不正确的数据。

不可重复读(NonRepeatable Reads)

一个事务在读取某些数据后的某个时间,再次读取以前读过的数据,却发现和以前读出的数据不一致。

例子:事务一读取后,事务三对16张票修改,可是事务一中,有再次读这张票的SQL语句,那么事务一得到的跟第一次不同的值(16张票就可能变成15张了)。

幻读(Phantom Reads)

一个事务按照相同的查询条件重新读取以前查询过的数据,却发现其他事务插入了满足其查询条件的新数据。

例子:事务一按一定条件读取16,但是后面还有一些步骤需要再次读取此数据校验,所以没提交事务,可这个时候事务三(16变15)执行成功,卖出了票。那当事务一再次读的时候,就读到了15。这样读到的数据就不是最新的了。

事务隔离级别

为了解决上述提到的事务并发问题,数据库提供一定的事务隔离机制来解决这个问题。

数据库的事务隔离越严格,并发副作用越小,但付出的代价也就越大,因为事务隔离实质上就是使用事务在一定程度上“串行化” 进行,这显然与“并发” 是矛盾的。

数据库的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏写、脏读、不可重复读、幻读这几类问题。

Read committed,解决脏读;

解决方式:读已提交的数据行;

Repeatable read,解决不可重复读;

在事务读取时,加行锁;

Serializable,解决幻读;

在事务读取时,加表锁;

相关文章

  • Innodb和MyIsam的区别

    Innodb和MyIsam的区别 (1)对事务的⽀持不同MyIsam不⽀持事务,⽽InnoDB⽀持事务。(2)锁的...

  • 如何解决秒杀场景下的超卖问题

    1、利用排他锁解决超卖问题 MySQL InnoDB存储引擎支持事务和行锁。如果不手动开启事务的话,InnoDB会...

  • MySQL MyISAM和Innodb存储引擎的区别

    (1)InnoDB支持事务,MyISAM不支持事务。 (2)InnoDB支持行锁也支持表锁,MyISAM支持表锁。...

  • INNODB事务和锁

    事务及其ACID属性 事务是由一组SQL语句组成的逻辑处理单元。 事务具有以下4个特性,简称为事务ACID属性。 ...

  • 常见面试题

    MyISAM和InnoDB的区别 MyISAM不支持事务,而InnoDB支持事务的。 MyISAM锁的粒度是表级,...

  • InnoDb与MyISAM引擎的区别

    事务处理 MyISAM不支持事务,而InnoDB是支持事务的。 MyISAM只支持表级锁,而InnoDB支持行级锁...

  • 淘宝MySQL文档整理

    MySQL · 引擎特性 · InnoDB 事务锁系统简介 MySQL · 引擎特性 · Innodb 锁子系统浅...

  • Innodb中的事务隔离级别和锁的关系

    Innodb中的事务隔离级别和锁的关系 转发(https://tech.meituan.com/innodb_lo...

  • MySQL知识集

    数据库引擎 Innodb和MyISAM的区别 Innodb 支持行锁 支持表锁 支持事务 支持外键 数据存储时索引...

  • MySQL相关(一)——— 事务和锁

    事务的隔离级别和锁机制 【1】InnoDB 事务隔离级别和锁 【2】脏读、不可重复读、幻读 mysql 相关 常用...

网友评论

    本文标题:INNODB事务和锁

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