开发者社区> 优惠券发放> 正文

Mysql的锁机制之表锁

简介: Mysql的锁机制之表锁 锁是计算机协调多个进程或线程并发访问某一资源的机制.       在数据库中,除传统的计算资源(如CPU,RAM,I/O等)的争用外,数据也是一种供许多用户共享的资源,如何保证数据并发访问的一致性,有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素.
+关注继续查看

Mysql的锁机制之表锁

锁是计算机协调多个进程或线程并发访问某一资源的机制.

      在数据库中,除传统的计算资源(如CPU,RAM,I/O等)的争用外,数据也是一种供许多用户共享的资源,如何保证数据并发访问的一致性,有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素.从这个角度来说,锁对数据库而言现得尤其重要,也更加复杂.

   按照对数据库的操作分为读锁和写锁

   读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响.

   写锁(排他锁):当前写操作没有完成前,它会阻断其他写锁和读锁.

   按对数据操作的粒度分为表锁和行锁。

    表锁:开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概率高,并发度最低
    行锁:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高
    页锁:开销和加锁速度介于表锁和行锁之间;会出现死锁;锁定粒度介于表锁和行锁之间,并发度一般

 


  lock table 表名字 read(write),表名字2 read(write);
查看表上加过的锁.
 show open tables;

       MyISAM表锁

读锁

     MyISAM存储引擎只支持表锁,新建book表,存储引擎为MyISAM.

写锁

为book表添加写锁;

  MyISAM在执行查询语句之前,会自动给涉及的所有表加读锁,在执行增删改操作前,会自动给涉及的表加写锁. 

   MySQL的表级锁有两种模式:

        表共享读锁(Table Read Lock)

        表独占写锁(Table Write Lock)

锁类型 可否兼容 读锁 读锁
读锁
写锁

结论:对MyISAM表进行操作,会有以下情况

    1.对MyISAM表的读操作(加读锁),不会阻塞其他进程对同意表的读请求,但会阻塞对同一表的写请求.只有当读锁释放后,

才会执行其他进程的写操作.

     2,对MyISAM表的写操作(加写锁),会阻塞其他进程对同一表的读和写操作,只有当写锁释放后,才会执行其他进程的读写操作.

         读锁会阻塞写,但是不会阻塞读。而写锁则会把读和写都阻塞.

看看哪些表被锁了

SHOW OPEN TABLES;

分析表锁定 


SHOW STATUS LIKE 'table%';
SHOW GLOBAL STATUS LIKE 'table_locks%';

Table_locks_immediate 和Table_locks_waited状态变量记录MySQL内部表级锁定的情况,

Table_locks_immediate 产生表级锁定的次数,表示可以立即获取锁的查询次数,每次立即获得则加1

Table_locks_waited  出现表级锁定争用而发生等待的次数(不能立即获取锁的次数,没等待一次锁则加1),此值高则说明存在着较严重的表级锁定争用情况.

    MyISAM的读写锁调度是写优先,这也是MyISAM不适合做写为主表的引擎.因为写锁后,其他线程不能做任何操作,大量的更新会使查询很难得到锁,从而造成永远阻塞.

如果 Table_locks_immediate / Table_locks_waited > 5000,最好采用InnoDB引擎,因为InnoDB是行锁而MyISAM是表锁,对于高并发写入的应用InnoDB效果会好些.

原文地址 https://blog.csdn.net/yjaspire/article/details/81133149

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySQL---数据库从入门走向大神系列(六)-事务处理与事务隔离(锁机制)
MySQL 事务处理 简单介绍事务处理: MySQL 事务主要用于处理操作量大,复杂度高的数据。 比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行。
1226 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
20345 0
Mysql的锁机制之表锁
Mysql的锁机制之表锁 锁是计算机协调多个进程或线程并发访问某一资源的机制.       在数据库中,除传统的计算资源(如CPU,RAM,I/O等)的争用外,数据也是一种供许多用户共享的资源,如何保证数据并发访问的一致性,有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素.
1476 0
MySQL 深潜 - MDL 锁的实现与获取机制
本文将介绍在 MDL 系统中常用的数据结构及含义,然后从实现角度讨论 MDL 的获取机制与死锁检测,最后分享在实践中如何监控 MDL 状态。
236 0
巧用MySQL InnoDB引擎锁机制解决死锁问题(转)
该文会通过一个实际例子中的死锁问题的解决过程,进一步解释innodb的行锁机制   最近,在项目开发过程中,碰到了数据库死锁问题,在解决问题的过程中,笔者对MySQL InnoDB引擎锁机制的理解逐步加深。
1038 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
29732 0
【MySQL】InnoDB锁机制之二
一 前言    之前的文章《InnoDB锁机制之一》介绍了InnoDB锁中的三种锁:record lock, gap lock,next-key lock ,本文继续介绍另外两种锁 Insert Intention Locks和AUTO-INC Locks二 常见的锁类型2.
1070 0
【MySQL】InnoDB锁机制之一
一  背景     MySQL锁机制是一个极其复杂的实现,为数据库并发访问和数据一致提供保障。这里仅仅针对MySQL访问数据的三种锁做介绍,加深自己对锁方面的掌握。二 常见的锁机制 我们知道对于InnoDB存储引擎而言,MySQL 的行锁机制是通过在索引上加锁来锁定要目标数据行的。
1141 0
+关注
优惠券发放
阿里云优惠码阿里云推荐券bieryun.com
456
文章
25
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载