MySql数据库的事务与锁

什么是事务?

事务就是transaction

我们可以用四个方面(ACID)去描述他!
A: atomicity 原子性 (一系列操作要么都完成,要么就都不完成)
C: consistency 一致性 (处理相同的字段,获取同一个数值)
I: isolation 隔离性 (从应用层的角度是隔离,底层的处理是通过锁机制)
D: durability 持久性 (防止数据丢失,数据如何存储相关)

InnoDB 的锁

InnoDB是支持到行锁,但是也必须了解在进行行锁之前,会对表进行加锁的

Shared and Exclusive Locks (共享锁和独享锁)

他们都是粒度,都是在行级别的锁。
共享锁:主要是在读取一行数据的时候,会使用,当其他用户读此行的时候,他们都会获取这个共享锁。
读享锁: 可以理解为排他锁,主要在行数据更新或者删除的时候,会使用的锁。

如果当前行数据被exclusive lock 了,那么必须等待其释放,才能获取共享锁。

Intention Locks (目标锁)

粒度为表级别,分为两种类型:IS(intention shared lock) IX(intention exclusive lock)
目标锁是在行数据操作之前会进行获取。

Record Locks (记录锁)

主要用来对index序列进行加锁,防止对当前数据的插入,更新和删除

Gap Locks (间隙锁)

间隙锁可以理解为是为一段索引区间建立的锁。

Next-Key Locks

结合记录锁和间隙锁,对索引操作的锁。

Insert Intention Locks (插入目标锁)

AUTO-INC Locks (自增锁)

这个自增锁是表级别的锁,主要用于对某个字段进行自增(auto increment)所使用的锁.

Predicate Locks for Spatial Indexes

如何保证数据的一致性consistency呢?

  1. 使用锁 2. InnoDB multiversion concurrency control (MVCC)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为了充分发挥MySQL的性能并顺利地使用,就必须理解其设计。MySQL的灵活性体现在很多方面。例如,你可以通过配置...
    李文文丶阅读 1,233评论 0 4
  • 索引有哪些,用性别做联合索引有没有效果 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数...
    juexin阅读 657评论 0 0
  • 很多人喜欢这篇文章,特此同步过来 由浅入深谈论spring事务 前言 这篇其实也要归纳到《常识》系列中,但这重点又...
    码农戏码阅读 4,785评论 2 59
  • 索性迈过这道坎儿心里埋藏着秋索性用完所有的悲词填不满秋日里的愁 用一生追逐遇冷的风拾捡坠落的红果迈过涓涓秋水携一杯...
    君凉阅读 539评论 48 69
  • 爱鼎是一个13岁的男孩,,在他5岁的时候,父母相继去世了。他是靠吃百家饭、穿百家衣长大的,所以他跟村里的每个人都关...
    玉如蓝阅读 503评论 2 4