mysql 锁

数据库锁机制简单来说,就是数据库为了保证数据的一致性,使各种共享资源

在被并发访问时变得有序而设计的一种规则。

mysql的锁机制比较简单,最显著的特点是不同的存储引擎支持不同的锁机制。

我们所知道,innoDB 支持行锁,有时也会升级为表所,myisam 只支持表锁

表锁:开销小,加锁快,不会出现死锁现象,锁的粒度大,发生锁冲突的概率高

并发支持较低

行锁:开销大,加锁慢,会出现死锁,锁的粒度小,发生锁冲突的概率低,并发支

持较高;

innoDB锁的类型

1)读锁

类似多线程中的读写锁的读锁 一个事务获取到读锁之后,别的事务也可以获取该

读锁,但是不能获取到写锁

2)写锁

类似多线程中的读写锁的写锁  一个事务获得写锁之后 其他的事务不能获取读锁和

写锁

3)意向锁

意向锁是表级锁  分为意向共享锁(需要先获取读锁) 和意向排他锁(需要先获取写锁)

它的作用和MDL锁类似,都是防止在事务进行中,执行DDL语句的操作致使数据的不一致

4)MDL锁

事务开启之后会自动获取MDL 锁, 另外一个事务就不能执行DDL 语句操作

即不能修改表的结构, 它用于保证表中元数据的信息

innoDB行锁种类

1)单个行记录的锁

是加载索引项上面的, 当同时操作同一条数据的时候,会出现锁竞争和等待

现象, 主键索引和唯一索引,都是使用的单个行记录锁,同时RC(读已提交)

离级别,只有行记录锁。

2)间隙锁

在RR(可重复读)隔离级别中,为了避免出现幻读,就使用了间隙锁,他是一个

范围锁,假如 查询score<90 的记录,那么这个范围内的所有数据都不能执行数据

的修改操作。  注意:RC(读已提交)隔离级别的情况下 间隙锁不起作用。

3)记录锁和间隙锁的组合叫做 next-key lock

当innoDB扫描索引索引记录时,会先对选中的索引记录加上记录锁,然后再

对索引两边的间隙加上间隙锁。

如score<80 的范围 ,同时也会再80加上锁

死锁

类似多线程死锁现象。


上述例子 都是使用begin开启了事务 而没有使用commit 提交或者rollback回滚事务。

生产环境中如何避免死锁现象的产生

1)如果多个不同的程序会并发 存取多个表,或者涉及到多行记录时,尽量约定以相同的顺序访问表,可以大大降低死锁的现象。

2)业务中尽量使用小事务,避免使用大事务,要及时提交或者回滚事务,可以减少死锁现象的产生频率。

3)在同一个事务中,尽可能做到一次锁定所需要的所有的资源,减少死锁产生的概率。

4)相对于非常容易产生死锁的业务部分,可以尝试升级锁的粒度,使用表锁,来避免死锁现象的产生。

锁的监控

通常情况下,当出现锁的问题时,我们习惯性通过show full processlist 和show engine innodb status 命令来判断事务中锁问题出现的情况。其实还有三张特殊的表。即在 infomation_schema 库下的 INNODB_TRX 、INNODB_LOCKS、INNODB_LOCK_WITS。 这三张表可以更方便的来帮助我们监控当前的事务,并分析可能存在的锁问题。

主要字段的介绍

trx_id :唯一的事务id

trx_state:当前事务的状态, lock wait 和running

trx_wait_started:事务的开始时间

trx_qurery:事务运行的sql语句

trx_operation_state:事务的运行状态

还可以通过查看INNODB_LOCKS 和INNODB_LOCK_WAITS两张表 来查看 持有锁和锁等待的现象。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容