Mysql基础知识点《五》

根据加锁范围,mysql中的锁的大致可以分为全局锁,表锁,行锁。

全局锁

全局锁就是对整个数据库实例加锁。通过flush table with read lock命令,将堆数据库加读锁。数据库编程只读状态,常用来作为数据库备份的时候使用。但是,在事务引擎中,并不是通过加全局锁来备份的,我们都知道在innodb引擎的RR隔离级别下,在导数据之前会开启一个事务,由于MVCC的支持,数据库还是可以进行更新操作的。那为什还需要用全局锁来备份呢?原因是只有事务引擎才支持。

通过官方提供的逻辑备份工具mysqldump,使用参数-single-transaction。

表锁
  1. 表锁通过命令lock tables ... T read/write可以提供表的读/写锁。
  2. 元数据锁(meta data lock):MDL不需要显示的使用,在访问一个表的时候会自己加上。
如何安全的给小表加字段?

由于有MDL,加入我们给小表加字段,加入之前已经有访问表的操作了,此时加字段操作将会堵塞,直到之前的访问结束,同时由于加字段操作堵塞了,之后的操作也会堵塞。导致系统不可读写。

  1. 方法一:加入有一个访问表的长事务,那么不加字段,或者结束长事务。
  2. 方法二:给加字段一个等待时间,在等待时间能没有完成结束。
行锁

并不是所有的引擎都支持行锁,MyISAM不支持行锁,innodb则支持。mysql中的两阶段锁。当我们开启事务的时候,当我们对一行数据进行修改的时候,在另一事务中,我们还可不可以再修改这一行数据呢?答案是不可以,因为事务1会触发行锁,事务2的修改操作将会堵塞直到事务1提交,行锁才释放。所以在innodb引擎中行锁并不是使用完就释放的,得事务提交之后才释放。

死锁和死锁检测

当出现资源的循环依赖的时候,就容易造成死锁。
解决方法:

  1. 设置超时时间,通过设置innodb_lock_wait_timeout,默认50s。
  2. 开启死锁检测,通过设置参数innodb_deadlock_detect=on。
    弊端:
    设置超时时间并不是一个好办法,因为在实际中很难设置出合适的时间。死锁检测也并不是一个很好的办法,假如对于一个热点数据更新操作,每次都需要判断是否死锁,这将是一个很耗费cpu的事情,会造成我们的数据库cpu达到了100%但是每秒处理的事务却很少。
怎么解决热点数据更新导致的性能问题?

对于热点数据,最好的处理方法就是分流,或者消息队列。分流指的是将处理分到多行中处理,降低某一行的并发量,消息队列的处理方式就是将操作保存到小实习队列中排队处理。

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

推荐阅读更多精彩内容

  • 索引 数据库中的查询操作非常普遍,索引就是提升查找速度的一种手段 索引的类型 从数据结构角度分 1.B+索引:传统...
    一凡呀阅读 2,886评论 0 8
  • 一、概述 数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种...
    不变甄心阅读 2,733评论 0 3
  • 文章导读: 累兮,累兮,要死兮...... 本文解决问题: 1、表级锁定(读锁、写锁) 2、行级锁定(共享锁、排他...
    创造new_world阅读 637评论 0 1
  • 不知道是不是能够保存草稿
    雨做的云123阅读 210评论 0 0
  • 电影《二十二》并没有怎么宣传,至少没有那些大片《三生三世》、《战狼2》等等来的广为人知,更多的是在一种平淡...
    一苇说阅读 221评论 0 1