`

一类锁表问题的分析

阅读更多
今天在工作中,老大指出了表设计的问题。这张表的意图很简单,就是简单地记录内部员工的记录,当然还有一个总用户表,内部员工表中有一个字段“关联”总用户表(是手动维护这个内部员工表的,毕竟这个表中的数据量不大,才几百条记录,当时没有使用外键来关联)。

现在我们要做的事就是每次有一个特定的提前退出操作时,就会对内部员工记录中的一个字段进行更新操作。写的sql也很简单,大致如下:

UPDATE XXX SET XX=XX WHERE COLUMN=XX


现在的问题就是这个COLUMN字段,它没有索引,没有索引的话,当然会走全表扫描了,如果有其它的更新操作的话,这张表肯定会被锁表!

这是一类常见的锁表情况:在没有索引的情况下,多个更新操作会导致锁表情况的发生。

再来看一下InnoDB存储引擎下的锁机制。我们都知道Mysql支持行级锁和表级锁。行级锁的粒度会少很多,而表级锁相对简单很多了,但是它的性能不高。所以我们尽量让其走行级锁,这要可以提升整个系统的性能。

如上面所说,如果没有在where查询字段上建立索引的话,一个查询操作和更新操作并发执行,表的数据量很大,那么它就会被锁表。锁的原理在本质上是很简单的,如果读读并存,没有关联,可以一起执行,如果读写或者写写操作并存,那么这个就不允许一起执行了。

所以在这个版本中,我就按照老大的意思,在where后面查询的字段上建立了一个索引,不让它走全表扫描,避免全表扫描引起的锁表情况。

在Java中,有一个锁并发框架,它其实主要做了三件事情:
1. 计数(读写计数,有多少个线程在进行读写操作);
2. 等待队列(如果当前的资源不允许进行操作,就是加锁了,那么该线程必须要等待了);
3. 线程的阻塞和唤醒(使用底层操作系统的功能了)。

当然在Java中的锁,它提供了一系列的并发数据结构和不同锁机制的类,引入这个就是说明Mysql中锁的实现原理和机制。
分享到:
评论

相关推荐

    ORACLE锁深入分析

    在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。? 当Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际...

    mysql共享锁与排他锁用法实例分析

    mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流。 共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,...

    Excel 2007数据透视表完全剖析 3/7

    然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和VBA等内容,并集中解答了一些常见的...

    Excel 2007数据透视表完全剖析 1/7

    然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和VBA等内容,并集中解答了一些常见的...

    Excel 2007数据透视表完全剖析 5/7

    然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和VBA等内容,并集中解答了一些常见的...

    数字电子密码锁课程设计.docx

    155.3调试中遇到的问题及分析与总结156167附录177.1仪器仪表电子元器件明细清单177.2参考文献18摘要电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。...

    Excel 2007数据透视表完全剖析 4/7

    然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和VBA等内容,并集中解答了一些常见的...

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

    · 00.尚硅谷_MySQL高级_源码、课件 · 01.尚硅谷_MySQL高级_课程简介 · 02.尚硅谷_MySQL高级_MySQL简介 · ...尚硅谷_MySQL高级_如何锁定一行 · 62.尚硅谷_MySQL高级_行锁总结 · 63.尚硅谷_MySQL高级_主从复制

    电子秒表的设计报告.doc

    电子秒表电路设计实验报告 学生姓名: 学 号: 专 业:科学教育 年级、班级:04级5A班 实验项目:电子秒表电路设计 实验类型:设计 实验时间:2006年11月28日 实验指导老师: 实验评分: 一. 实验目的 1.进一步提高...

    智能门锁及安全云方案.pptx

    现有云锁架构缺陷分析 方案 433M+外置WIFI网关 433M+外置2G/4G网关 安全 云平台 简单低成本的安全机制管控 云锁数据 简单软件加密 外置网关 易受攻击/破坏 易受破坏 无线通道 短距通信,易被劫获 易被劫获 可靠 ...

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

    61.MySQL高级_如何锁定一行.avi 60.MySQL高级_间隙锁危害.avi 59.MySQL高级_索引失效行锁变表锁.avi 58.MySQL高级_行锁演示答疑补充.avi 57.MySQL高级_行锁案例讲解.avi 56.MySQL高级_行锁理论.avi 55....

    四位电子密码锁设计.doc

    在整个系统设计实现中采用FPGA器件作为控制器,继而了解密码锁系统的总体流 程、各个模块的功能与接口的分配。基于FPGA,使用VHDL语言编写模块程序,再通过Qu artus II集成开发环境下进行设计、综合与仿真。要求用...

    电子密码锁设计报告.docx

    设计任务及要求 利用实验平台上8个LED数码管,led发光二级管,蜂鸣器设计一电子密码锁。 二,实验要求 1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。 2:可以自行设定或删除8位密码,能够掉电保存。 3:用5位数...

    智能蓝牙锁.doc

    智能蓝牙锁 蓝牙技术是一种短距离、低成本的无线连接技术,是一种能够实现语音和数据无线传 输的开放性接口系统。蓝牙设备工作在2.4GHz的工业、科学和医学频段上,而这一频段 不需要申请就可以使用。通过蓝牙技术...

    自然语言处理秘诀:使用Python通过机器学习和深度学习解锁文本数据(2019) (英文)

    通过使用本书中的配方,您将拥有一个解决方案工具箱,可以应用于现实世界中您自己的项目,使您的开发时间更快、更高效。 你将学到什么 •使用python库(如nltk、textblob、spacy、斯坦福corenlp等)应用nlp技术 •...

    《Android系统源代码情景分析》

    1.5 开发第一个Android应用程序 1.6 单独编译和打包Android应用程序模块 1.6.1 导入单独编译模块的mmm命令 1.6.2 单独编译Android应用程序模块 1.6.3 重新打包Android系统镜像文件 第2章 硬件抽象层 ...

    单片机密码锁设计.doc

    AT89C51 提供以下标准功能: 4k 字节 Flash 闪速存储器 128 字节部 RAM,32 个 I/O 口线两个 16 位定时 /计数器,一个 5 向量两级中断结构,一个全双工串行 通信口,片振荡器及时钟电路。同时, AT89C51 可降至 0Hz...

    UNIX 高级教程系统技术内幕

    3.3 轻量级进程设计——要考虑的问题 3.3.1 fork 的语义 3.3.2 其他的系统调用 3.3.3 信号传递和处理 3.3.4 可视性 3.3.5 堆栈增长 3.4 用户级线程库 3.4.1 编程接口 3.4.2 线程库的实现 3.5 调度器调用 3.6 Solaris...

    MySQL语句加锁的实现分析

    摘要: MySQL两条SQL语句锁的分析 看一下下面的SQL语句加什么锁 SLQ1:select * from t1 where id = 10; SQL2:delete from t1 where id = 10; (1)id 是不是主键 (2)当前系统的隔离级别是什么 (3)id列如果...

    Toad 使用快速入门

    例如,当我们点一个数据库的表,所有和此表相关的索引、约束、存储过程、SQL语句以及和其他表的相互引用关系都在同一界面显示出来。为了简化操作,用户可以在浏览窗口操作数据库对象。 SQL 编辑器: SQL 编辑器的...

Global site tag (gtag.js) - Google Analytics