Mysql 系列文章主页

===============

1 概念

在 Java 程序中,当多线程并发访问某个资源的时候,如果有非线程安全的操作,那么需要通过加锁来保护之。同理,在 Mysql 中,如果也有多个线程、多个事务并发访问某些资源(比如写同一行记录)时,也需要锁来保护,以确保数据的正确性。

2 分类

从对数据的操作类型来分:

  • 读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响
  • 写锁(排它锁):当前写操作没有完成前,会阻塞其它写和读操作

从对数据操作的粒度分:

  • 表锁:偏向 MyISam 引擎,开销小,加锁快;无死锁;锁定粒度大,锁冲突概率最高、并发度最低
  • 行锁:偏向 InnoDB 存储引擎,开销大,加锁慢;会出现死锁;锁定粒度小,锁冲突概率最低、并发度最高

3 基础命令

3.1 查看当前系统中,每个表被锁与否:

SHOW OPEN TABLES;

目前所有的 In_use 都是0,说明没有表被锁。

3.2 给 Employee 表加上读锁:

LOCK TABLE employee READ;

3.3 给 Department 表加上写锁:

LOCK TABLE department WRITE;

或者,3.2 和 3.3 的命令写在一起,像这样:

LOCK TABLE employee READ, department WRITE;

3.4 再用 SHOW OPEN TABLES 来看看

SHOW OPEN TABLES;

可以看到,Employee 及 Department 表已经被锁住(In_use=1)。

3.5 解锁:

UNLOCK TABLES;

现在,所有表都没有被加锁。

3.6 查看系统上的表锁定信息

SHOW STATUS LIKE 'table%';

这个【Table_locks_waited】值比较重要,值越大说明等待锁的次数越多、竞争越大。

3.7 查看当前数据库的隔离级别

SHOW VARIABLES LIKE 'tx_isolation';

这是Mysql默认的隔离级别

3.8 InnoDB 引擎查看锁状态

SHOW STATUS LIKE '%innodb_row_lock%';

等待平均时长、等待总时长、等待总次数,这三项比较重要。

Mysql锁机制--概念、分类及基础命令的更多相关文章

  1. 再谈mysql锁机制及原理—锁的诠释

    加锁是实现数据库并发控制的一个非常重要的技术.当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁.加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更 ...

  2. mysql锁机制和事务隔离

    mysql事务 1.InnoDB事务原理 事务(Transaction)是数据库区别于文件系统的重要特性之一,事务会把数据库从一种一致性状态转换为另一种一致性状态. 在数据库提交时,可以确保要么所有修 ...

  3. Mysql锁机制介绍

    Mysql锁机制介绍 一.概况MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking ...

  4. Mysql锁机制--索引失效导致行锁变表锁

    Mysql 系列文章主页 =============== Tips:在阅读本文前,最好先阅读 这篇(Mysql锁机制--行锁)文章~ 在上篇文章中,我们看到InnoDB默认的行锁可以使得操作不同行时不 ...

  5. mysql锁机制(转载)

    锁是计算机协调多个进程或线程并发访问某一资源的机制 .在数据库中,除传统的 计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所 ...

  6. mysql锁机制 读书笔记

    目录 MySQL锁机制 1.什么是锁 2.lock与latch 3.InnoDB存储引擎中的锁 3.1锁的类型 3.2 一致性非锁定读 3.3 一致性锁定读 4 锁的算法 4.1行锁的3中算法 4.2 ...

  7. (三)MySQL锁机制 + 事务

    转: (三)MySQL锁机制 + 事务 表锁(偏读) 偏向MyISAM存储引擎.开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发最低. 查看当前数据库中表的上锁情况,0表示未上锁. sh ...

  8. mysql锁机制详解

    前言 大概几个月之前项目中用到事务,需要保证数据的强一致性,期间也用到了mysql的锁,但当时对mysql的锁机制只是管中窥豹,所以本文打算总结一下mysql的锁机制. 本文主要论述关于mysql锁机 ...

  9. 对mysql锁机制的学习

    1.对于mysql学习,经常翻看一些博客,论坛,好像或多或少有mysq锁机制的学习与总结,所以今天有必要 对mysql锁机制的一些个人的总结,以便以后深入的学习. 2.学习这件事,从来都是“深入浅出” ...

随机推荐

  1. Hey,man,are you ok? -- 关于心跳、故障监测、lease机制

    电话之于短信.微信的一个很大的不同点在于,前者更加及时,有更快速直接的反馈:而后面两个虽然称之为instant message,但经常时发出去了就得等对方回复,等多久是不确定的.打电话能明确知道对方在 ...

  2. Autofac 简单示例

    公司不用任何IOC,ORM框架,只好自己没事学学. 可能有些语言描述的不专业 希望能有点用 namespace Autofac { class Program { //声明一个容器 private s ...

  3. Mysql主从复制架构实战

    [root@Mysql-master ~]# vim /etc/my.cnf log-bin=mysql-bin server-id = 1  #slave端server-id值改成2 mysql&g ...

  4. 搭建一个web服务下载HDFS的文件

    需求描述 为了能方便快速的获取HDFS中的文件,简单的搭建一个web服务提供下载很方便快速,而且在web服务器端不留临时文件,只做stream中转,效率相当高! 使用的框架是SpringMVC+HDF ...

  5. mqtt paho ssl java端代码

    参考链接:http://blog.csdn.net/lingshi210/article/details/52439050 mqtt 的ssl配置可以参阅 http://houjixin.blog.1 ...

  6. docker生态系统

    我的docker学习笔记6-docker生态   1.镜像即应用       代码构建.持续集成和持续交付        DaoCloud.Quay.IO 2.催生容器托管caas服务       基 ...

  7. ssh整合之五struts和spring整合

    1.首先,我们需要先分析一下,我们的spring容器在web环境中,只需要一份就可以了 另外,就是我们的spring容器,要在我们tomcat启动的时候就创建好了(包括其中的spring的对象),怎么 ...

  8. 简单的Nginx自动化安装啊脚本

    #!/bin/bash #description:Nginx installation script automatically #user:baomanji #date:2017-03-25 #ve ...

  9. 类似吸顶功能解决ios不能实时监听onscroll的触发问题

    问题:近期项目需要一个类似西东功能,当页面向上滚动160px后div固定在顶部 解决方法:首先,想到的是window.onscroll方法 .fixed{position:fixed;-webkit- ...

  10. Java基础学习(四)-- 接口、集合框架、Collection、泛型详解

    接口 一.接口的基本概念 关键字为:Interface,在JAVA编程语言中是一个抽象类型,是抽象方法的集合.也是使用.java文件编写.   二.接口声明 命名规范:与类名的命名规范相同,通常情况下 ...