`
kobe学java
  • 浏览: 250313 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

MySQL锁表概述

 
阅读更多

1、对于MySQL来说,有三种锁的级别:页级、表级、行级 
   页级的典型代表引擎为BDB。 
   表级的典型代表引擎为 MyISAM,MEMORY以及很久以前的ISAM。 
   行级的典型代表引擎为INNODB。 

2、我们实际应用中用的最多的就是行锁 
   行级锁的优点如下: 
   1)、当很多连接分别进行不同的查询时减小LOCK状态。 
   2)、如果出现异常,可以减少数据的丢失。因为一次可以只回滚一行或者几行少量的数据。 
   行级锁的缺点如下: 
   1)、比页级锁和表级锁要占用更多的内存。 
   2)、进行查询时比页级锁和表级锁需要的I/O要多,所以我们经常把行级锁用在写操作而不是读操作。 
3)、容易出现死锁。 

3、 MySQL用写队列和读队列来实现对数据库的写和读操作 
    对于写锁定如下: 
    1)、如果表没有加锁,那么对其加写锁定。 
    2)、否则,那么把请求放入写锁队列中。 
    对于读锁定如下: 
    1)、如果表没有加写锁,那么加一个读锁。 
    2)、否则,那么把请求放到读锁队列中。 
当然我们可以分别用low_priority 以及high_priority在写和读操作上来改变这些行为。 
4、下面我来一个简单的例子解释上面的说法 
我们来运行一个时间很长的查询 
1)、客户端1: 
mysql> select count(*) from content group by content; 

… 
客户端2: 
mysql> update content set content = ‘I love you’ where id = 444; 
Query OK, 1 row affected (30.68 sec) 
Rows matched: 1  Changed: 1  Warnings: 0 

用了半分钟。 
2)、我们现在终止客户端1。 
此时客户端2: 
mysql> update content set content = ‘I hate you’ where id = 444; 
Query OK, 1 row affected (0.02 sec) 
Rows matched: 1  Changed: 1  Warnings: 0 

仅仅用了20毫秒。 

这个例子很好的说明了读写队列的运行。 
对于1中的客户端1,此时表没有加锁,当然也没有加写锁了,那么此时客户端1对表加了一个读锁。 
对于1中的客户端2,此时因为表有一个读锁,所以把UPDATE请求放到写锁定队列中。 
当读锁释放的时候,也就是SHOW PROCESSLIST中STATUS 为COPY TO TMP TABLE的时候,UPDATE操作开始执行。 

5、可以在REPLICATION中对MASTER 和SLAVE运用不同的锁定使系统达到最佳的性能 
当然这个前提是SQL语句都是最优的。

分享到:
评论

相关推荐

    MYSQL 解锁与锁表介绍

    MySQL锁概述   相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁...

    2021年MySQL高级教程视频.rar

    12.MySQL高级锁锁的概述及分类.avi 13.MySQL高级锁MySQL对锁的支持.avi 14.MySQL高级锁MyISAM表锁读锁.avi 15.MySQL高级锁MyISAM表锁写锁.avi 16.MySQL高级锁MyISAM表锁小结.avi 17.MySQL高级锁MyISAM表锁查看锁争用...

    Mysql高级:锁

    主要二个主题:锁机制和全局机制 锁机制:概述,三锁:表锁和行锁,页锁

    MYSQL

    11 MySQL 基准套件 12 MySQL 实用程序 12.1 各种 MySQL 程序概述 12.2 管理一个 MySQL 服务器 12.3 从 MySQL 数据库和表中倒出(dump)结构和数据 12.4 从文本文件导入数据 12.5 MySQL ...

    MySQL中文参考手册.chm

    11 MySQL 基准套件 12 MySQL 实用程序 12.1 各种 MySQL 程序概述 12.2 管理一个 MySQL 服务器 12.3 从 MySQL 数据库和表中倒出(dump)结构和数据 12.4 从文本文件导入数据 12.5 ...

    MySQL技术内幕 InnoDB存储引擎.pdf

    最近在学习MySQL技术内幕 InnoDB存储引擎 第2版,整理了一些文档分享出来,同时也方便以后查看。若有不当之处,烦请批评指正。 1. MySQL体系结构和存储引擎 2. InnoDB存储引擎 2.1 InnoDB体系结构 2.2 ...

    mysql高级视频教程百度云(2019).txt

    53.MySQL高级_数据库锁理论概述.avi 52.MySQL高级_全局查询日志.avi 51.MySQL高级_用Show Profile进行sql分析.avi 50.MySQL高级_批量插入数据脚本.avi 49.MySQL高级_慢查询日志.avi 48.MySQL高级_为排序...

    MySQL中文参考手册

    + 7.1.5 数据库,表,索引,列和别名的命名 # 7.1.5.1 名字的大小写敏感性 o 7.2 用户变量 o 7.3 列类型 + 7.3.1 列类型的存储要求 + 7.3.5 数字类型 + 7.3.6 日期和时间类型 # 7.3.6.1 问题和日期类型 # ...

    尚硅谷Java视频教程_MySQL高级视频

    尚硅谷_MySQL高级_数据库锁理论概述 · 54.尚硅谷_MySQL高级_读锁案例讲解 · 55.尚硅谷_MySQL高级_读锁案例讲解2 · 56.尚硅谷_MySQL高级_行锁理论 · 57.尚硅谷_MySQL高级_行锁案例讲解 · 58.尚硅谷_MySQL...

    MySQL优化班视频.zip

    第9课、MySQL锁-0216.avi 第10课、MySQL锁2-0221.mp4 第11课、InnoDB-0223.avi 第12课、InnoDB2-0228.avi 第13课、InnoDB3-0302.avi 第14课、InnoDB4-0307.mp4 第15课、MySQL监控-0314.avi 第16课、MySQL监控2-0316....

    MySQL性能调优与架构设计(中文版)

     3.1 MySQL存储引擎概述   3.2 MyISAM存储引擎简介   3.3 InnoDB存储引擎简介   第4章 MySQL安全管理  4.0 引言  4.1 数据库系统安全相关因素  4.2 MySQL权限系统介绍  4.3 MySQL访问授权策略  ...

    2023MySQL高频面试题

    以下将对MySQL面试题作一个简要的概述。 首先,MySQL面试题主要可以分为两大类:基础问题和高级问题。基础问题通常涉及到MySQL的基本概念、体系结构、SQL语句、索引、事务等方面。例如,什么是InnoDB和MyISAM存储...

    mysql的 myisam引擎锁问题

     相对其他数据库而言,mysql的锁机制比较简单,其显著的特点是不同的存储引擎支持不同的锁机制。比如:myisam和memory存储引擎采用的是表级锁,bdb采用的是页面锁,但也支持表级锁,innodb存储引擎即支持行级锁也...

    MySql整理(基础进阶运维).docx

    索引分类,语法,使用规则,设计原则,SQL优化,插入数据,主键优化,orderby优化,groupby优化,limit优化,count优化,update优化(避免行锁升级为表锁),视图/存储过程/触发器,视图,存储过程,锁(重点),概述,全局锁,表级锁,...

    MySQL5.1性能调优与架构设计.mobi

    3.1 MySQL存储引擎概述 3.2 MyISAM存储引擎简介 3.3 InnoDB存储引擎简介 3.4 NDB Cluster存储引擎简介 3.5 其他存储引擎介绍 3.6 小结 第4章 MySQL安全管理 4.0 引言 4.1 数据库系统安全相关因素 4.2 ...

    Teradata基础知识(绝对中文)

    7.1 锁(LOCK) 70 7.2 优先权(PRIORITY) 72 7.3 交易完整性(TRANSACTION INTEGRITY) 73 7.4 临时流水(TRANSIENT JOURNAL) 74 7.5 永久流水(PERMANENT JOURNAL) 74 7.6 FALLBACK保护 75 第八章 客户端访问TERADATA...

    数据库程序设计(共22章-PPT格式),内容很不错

    第1章 SQL Server 概述 第2章 创建和管理数据库 第3章 创建数据类型和表 第4章 实现数据完整性 第5章 Transact-SQL介绍 第6章 使用 Transact-SQL查询工具 第7章 检索数据 第8章 数据分组与汇总 第9章 多表联接 第10...

    golang面试题集合.zip

    高并发下的锁与map读写问题 定时与 panic 恢复 为 sync.WaitGroup 中Wait函数支持 WaitTimeout 功能. 七道语法找错题目 golang 并发题目测试 记一道字节跳动的算法面试题 多协程查询切片问题 对已经关闭的的chan进行...

Global site tag (gtag.js) - Google Analytics