美文网首页
mysql锁机制

mysql锁机制

作者: 一曲三月 | 来源:发表于2021-09-05 22:52 被阅读0次

1,数据库锁理论概述
分类: 读锁、写锁。
行锁,表锁,页锁。
1.1 表锁:无死锁,加锁快
加锁:lock tables 表名 read(write)
释放锁: unlock tables;
查看锁: show open tables
读锁 -》共享锁 1,自己可以读,2,别人可以读 3,不可以更新 4,不可以读其他表
写锁-》独占锁 1,自己可以读,2,别人不可以读,不可以更新 3,可以更新 4,不可以读其他表
myisam 在执行select 之前,会自动给涉及的表加读锁,在执行增删改之前,会自动给涉及的表加写锁。
分析表锁:
通过 table_locks_waited和table_locks_immediate变量分析表锁定
查看 show status like '%table%'
table_locks_immediate:产生表级锁定的次数,表示可以立即获取锁的查询次数,每立即获取锁值加一。
table_locks_waited:出现表级锁定争用而发生等待的次数(不能立即获取锁的次数,每等待一次值加一),此值高则说明存在着严重的表级锁争用情况。
另外,myisam读写锁调度是写优先,这也是myisam不适合做写为主表的引擎的原因。因为写锁后,其他线程不能做任何操作,大量查询会使查询很难得到锁,从而造成永久阻塞。
1.2 行锁
偏向Innodb存储引擎,开销大,加锁慢,会出现死锁。锁定粒度最小,发生所冲突的概率最低,并发度最高。
Innodb与myISAm的最大不同有两点:1,支持事务 2,采用行级锁
语法: 1,通过索引项加锁 2,通过select **** for update加锁 ,锁定某一行后,其他操作会被阻塞,知道锁定行的会话commit。
InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的。
1)InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB才使用行级锁
2)在不通过索引条件查询的时候,InnoDB确实使用的是表锁,而不是行锁
3)有了索引以后,在对索引字段查询时,使用的就是行级锁,如果是使用相同的索引键值,是会出现锁冲突的
4)当表有多个索引的时候,不同的事务可以使用不同的索引锁定不同的行
1.3 间隙锁
当我们用范围条件而不是相等条件检索数据(并请求共享或排他锁时),InnoDB会给符合条件的已有数据记录的索引项加锁;对于键值在条件范围内但并不存在的记录,叫做“间隙(GAP)”,InnoDB也会对这个“间隙”加锁,这种锁机制就是所谓的间隙锁(Next-Key锁)
分析行锁:
查看 show status like 'innodb_row_lock%'
innodb_row_lock_current_waits 当前正在等待锁定的数量
innodb_row_lock_time 从系统启动到现在锁定总时间长度
innodb_row_lock_time_avg 每次等待所花费平均时间
innodb_row_lock_time_max 从系统启动到现在等待最长的一次花费的时间
innodb_row_lock_waits 从系统启动到现在总共等待的次数

相关文章

  • MySQL的锁机制

    MySQL锁简介 MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和...

  • MySQL的锁机制

    mysql的锁机制 1、MySQL锁的基本介绍 MyISAM:MySQL的表级锁有两种模式:表共享读锁(Table...

  • 共享 + 排他锁

    mysql锁机制分为表级锁和行级锁 ,mysql中行级锁中的共享锁与排他锁进行分享交流。 测试语法 begin; ...

  • 13.MySQL锁机制

    MySQL锁 相对于其他的数据库而言,MySQL的锁机制比较简单,最显著的特点就是不同的存储引擎支持不同的锁机制。...

  • MySQL学习

    MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。...

  • MySQL解锁与锁表

    MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。...

  • MySQL死锁及解决方案

    1 MySQL锁类型 1. MySQL常用存储引擎的锁机制 MyISAM和MEMORY采用表级锁(table-le...

  • MySQL表级锁和行级锁

    MySQL学习笔记(五):MySQL表级锁和行级锁 一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最...

  • MySQL锁机制漫谈(二)

    在MySQL锁机制漫谈(一)一文中,我们主要是探究了以下MySQL(主要是InnoDB)的锁的机制,但是我们平常经...

  • MySQL锁

    MySQL锁介绍 按照锁的粒度来说,MySQL主要包含三种类型(级别)的锁定机制: 全局锁:锁的是整个databa...

网友评论

      本文标题:mysql锁机制

      本文链接:https://www.haomeiwen.com/subject/syeswltx.html