sunashe
这个作者很懒,什么都没留下…
展开
-
InnoDB-行锁分类
原创 2019-09-03 22:50:57 · 446 阅读 · 0 评论 -
InnoDB行锁机制(gap锁是如何阻塞插入操作的)
文章目录InnoDB行锁机制(gap锁是如何阻塞插入操作的)一、假设场景二、加锁过程分析InnoDB行锁机制(gap锁是如何阻塞插入操作的)InnoDB 在执行insert操作时,并不会显示加锁,如果是主键插入,只会设置对应记录上的trx id隐藏列,称为隐式加锁。一、假设场景比如说如下表结构mysql> show create table t7\G***************...原创 2018-12-30 15:32:32 · 1337 阅读 · 3 评论 -
InnoDB死锁分析-案例4-行锁升级next key lock
文章目录一、死锁日志二、表结构三、死锁分析四、解决办法一、死锁日志LATEST DETECTED DEADLOCK------------------------2018-12-21 13:34:32 0x7fc92c3be700*** (1) TRANSACTION:TRANSACTION 1862, ACTIVE 6 sec starting index readmysql ta...原创 2018-12-23 09:49:41 · 481 阅读 · 0 评论 -
Innodb行锁等待是如何被唤醒的
文章目录行锁等待是如何被唤醒的先来构建一个行锁等待场景代码解析通过pstack抓取线程2的堆栈阅读相关代码进入等待状态事务提交,锁释放逻辑等待时使用的是pthread_cond_wait,超时是如何触发的呢?行锁等待是如何被唤醒的先来构建一个行锁等待场景这非常容易比如说 CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCRE...原创 2018-10-12 19:09:57 · 716 阅读 · 0 评论 -
Innodb加锁机制(隐式锁)
隐式锁简介详解隐式锁隐式锁加锁流程判断是否存在隐式锁隐式锁转换隐式锁转换在5.7中的优化相关博客地址隐式锁简介Innodb采用乐观插入的方式,所以在做insert操作时不会进行显示加锁,也就是不会生成lock_t锁结构,这样可以极大的减少锁开销,提升整体的性能。如果没有显示的行锁,该如何保证事务插入的正确性呢?比如说如下两个事务,插入相同的...原创 2018-09-13 09:56:36 · 2939 阅读 · 0 评论 -
通过修改源码,让Innodb打印更多的加锁信息
在做Innodb加锁机制的分析时,需要查看各种信息,以确认当前语句的加锁情况,通常来讲,是通过show engine innodb status来进行查看,但是很多情况下,show engine innodb status显示的信息不够清晰,举个例子//表结构mysql> show create table ashe\G*************************** 1....原创 2018-09-10 14:46:49 · 389 阅读 · 0 评论 -
Innodb锁系统介绍Introduction to Transaction Locks in InnoDB Storage Engine
此文章是从Oracle官方博客上转载的,写的非常准确,正在翻译,先看看原文吧,链接已经失效。 FROM:https://blogs.oracle.com/mysqlinnodb/entry/introduction_to_transaction_locks_inIntroductionTransaction locks are an important feature of any tr...转载 2018-09-07 17:00:29 · 295 阅读 · 0 评论 -
Innodb加锁机制(Insert Intention Locks)
本文中心思想来源于官方文档 Insert Intention Locks意为插入意向锁,插入意向锁是Innodb gap锁的一种类型,这种锁表示要以这样一种方式插入:如果多个事务插入到相同的索引间隙中,如果它们不在间隙中的相同位置插入,则无需等待其他事务。比如说有索引记录4和7,有两个事务想要分别插入5,6,在获取插入行上的独占锁之前,每个锁都使用插入意图锁锁定4和7之间的间隙,但是不要互相阻塞...原创 2018-09-03 15:31:16 · 3090 阅读 · 1 评论 -
图解Innodb行锁机制(select for update)
简介本文对RR事务隔离级别下的select语句进行加锁处理分析。表结构如下:mysql> show create table lock_test\G*************************** 1. row *************************** Table: lock_testCreate Table: CREATE TABLE ...原创 2018-08-31 14:29:36 · 4689 阅读 · 1 评论 -
MySQL自旋锁-spin lock
自旋锁标签(空格分隔): innodb简介Innodb中大量使用自旋锁来避免锁等待时的上下文切换,影响性能的问题。自旋锁分为加锁和解锁两个过程,其中加锁分为尝试加锁与自旋的过程。数据结构解析其上层调用方式一般为如下: mutex_enter(&trx->undo_mutex);mutex_enter宏定义如下#define m...原创 2018-07-30 20:15:28 · 3806 阅读 · 0 评论 -
Innodb死锁分析-案例3-插入意向锁与gap锁引起的死锁
文章目录Innodb死锁分析-案例3一、死锁日志二、表结构三、死锁分析Innodb死锁分析-案例3一、死锁日志------------------------LATEST DETECTED DEADLOCK------------------------2018-10-30 13:48:10 0x7eec74fc1700*** (1) TRANSACTION:TRANSACTION...原创 2018-10-30 15:16:31 · 1581 阅读 · 6 评论