锁
文章平均质量分 94
学习Mysql 锁 的点点滴滴
戴国进
往后余生,专注人工智能领域!!!
展开
-
MySQL发生死锁有哪些原因,怎么避免?(6个案例)
一、MySQL锁类型和加锁分析 锁类型介绍: MySQL 有三种锁的级别:页级、表级、行级。 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高, 并发度最低。 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低, 并发度也最高。 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般 算法: next KeyLocks 锁,同时锁住记录 (数据),并且锁住记录前面的 Gap Ga原创 2021-04-10 14:28:28 · 1696 阅读 · 0 评论 -
悲观锁 & 乐观锁
悲观锁(Pessimistic Lock),就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁、表锁、读锁、写锁等,都是在做操作之前先上锁。 乐观锁(Optimistic Lock),就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像转载 2020-10-23 10:48:12 · 5148 阅读 · 0 评论 -
Mysql加锁过程详解(8)-理解innodb的锁(record,gap,Next-Key lock)
Record lock 单条索引记录上加锁,record lock锁住的永远是索引,而非记录本身,即使该表上没有任何索引,那么innodb会在后台创建一个隐藏的聚集主键索引,那么锁住的就是这个隐藏的聚集主键索引。所以说当一条sql没有走任何索引时,那么将会在每一条聚集索引后面加X锁,这个类似于表锁,但原理上和表锁应该是完全不同的。 Gap lock 在索引记录之间的间隙中加锁,或者是在某...转载 2020-05-04 10:01:35 · 6651 阅读 · 0 评论 -
Mysql加锁过程详解(7)-初步理解MySQL的gap锁
初步理解MySQL的gap锁 初识MySQL的gap,觉得这个设计比较独特,和其他数据库的做法不太一样,所以整理一个简单的memo(虽然关于gap锁,相关资料已经很多了) 1. 什么是gap A place in an InnoDB index data structure where new values could be inserted. 说白了gap就是索引树中插入新记录的空隙...转载 2020-05-04 10:00:44 · 6438 阅读 · 0 评论 -
Mysql加锁过程详解(6)-数据库隔离级别(2)-通过例子理解事务的4种隔离级别
SQL标准定义了4种隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。 低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 首先,我们使用 test 数据库,新建 tx 表,并且如图所示打开两个窗口来操作同一个数据库: 第1级别:Read Uncommitted(读取未提交内容) (1)所有事务都可以看到其他未提交事务的执行结果...转载 2020-05-04 09:59:35 · 6325 阅读 · 0 评论 -
Mysql加锁过程详解(6)-数据库隔离级别(1)
一、数据库事务隔离级别 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted、Read committed、Repeatable read、Serializable,这四个级别可以逐个解决脏读、不可重复读、幻读这几类问题。 √: 可能出现×: 不会出现 脏读 不可重复读 幻读 Read uncommitted ...转载 2020-05-04 09:58:05 · 6241 阅读 · 0 评论 -
Mysql加锁过程详解(5)-innodb 多版本并发控制原理详解
多版本并发控制技术已经被广泛运用于各大数据库系统中,如Oracle,MS SQL Server 2005+, Postgresql, Firebird, Maria等等,开源数据库MYSQL中流行的INNODB引擎也采用了类似的并发控制技术.本文就将结合实例来解析不同事务隔离等级下INNODB的MVCC实现原理. 1MVCC概述 1.1MVCC简介 MVCC (Multiversion ...转载 2020-05-04 09:56:57 · 6208 阅读 · 0 评论 -
Mysql加锁过程详解(4)-select for update/lock in share mode 对事务并发性影响
select for update/lock in share mode 对事务并发性影响 事务并发性理解 事务并发性,粗略的理解就是单位时间内能够执行的事务数量,常见的单位是 TPS( transactions per second). 那在数据量和业务操作量一定的情况下,常见的提高事务并发性主要考虑的有哪几点呢? 1.提高服务器的处理能力,让事务的处理时间变短。 这样不仅加快了这个事...转载 2020-05-04 09:55:41 · 6252 阅读 · 0 评论 -
Mysql加锁过程详解(3)-关于mysql 幻读理解
Mysql加锁过程详解(2)-关于mysql 幻读理解出现了幻读,那么不是说mysql的重复读解决了幻读的么? 那么,InnoDB指出的可以避免幻读是怎么回事呢? http://dev.mysql.com/doc/refman/5.0/en/innodb-record-level-locks.html By default, InnoDB operates in REPEATABLE RE...转载 2020-05-04 09:45:35 · 5893 阅读 · 0 评论 -
Mysql加锁过程详解(2)-关于mysql 幻读理解
首先,mysql 幻读并非是”一个事务内进行两次相同操作居然得到了不一样的结果”,因为它根本不可能发生在使用了 read view / MVCC 的 RR 隔离级别下,这种幻读的定义更适合给 Oracle,Oracle 的事务隔离只有两级,RC 和 Serializable。然后还有很多人辩解说不可重复读是针对某条记录的,幻读是针对记录集合的,这是在自我安慰么? 这里给出 mysql 幻读的比较...转载 2020-05-04 09:40:57 · 5749 阅读 · 0 评论 -
Mysql加锁过程详解(1)-基本知识
1、背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题。本文,准备就MySQL/InnoDB的加锁问题,展开较为深入的分析与讨论,主要是介绍一种思路,运用此思路,拿到任何一条SQL语句,都能完整的分析出这条语句会加什么锁?会有什么样的使用风险?甚至是分析线...转载 2020-05-04 09:35:29 · 5762 阅读 · 0 评论