今天在工作中,老大指出了表设计的问题。这张表的意图很简单,就是简单地记录内部员工的记录,当然还有一个总用户表,内部员工表中有一个字段“关联”总用户表(是手动维护这个内部员工表的,毕竟这个表中的数据量不大,才几百条记录,当时没有使用外键来关联)。
现在我们要做的事就是每次有一个特定的提前退出操作时,就会对内部员工记录中的一个字段进行更新操作。写的sql也很简单,大致如下:
UPDATE XXX SET XX=XX WHERE COLUMN=XX
现在的问题就是这个COLUMN字段,它没有索引,没有索引的话,当然会走全表扫描了,如果有其它的更新操作的话,这张表肯定会被锁表!
这是一类常见的锁表情况:在没有索引的情况下,多个更新操作会导致锁表情况的发生。
再来看一下InnoDB存储引擎下的锁机制。我们都知道Mysql支持行级锁和表级锁。行级锁的粒度会少很多,而表级锁相对简单很多了,但是它的性能不高。所以我们尽量让其走行级锁,这要可以提升整个系统的性能。
如上面所说,如果没有在where查询字段上建立索引的话,一个查询操作和更新操作并发执行,表的数据量很大,那么它就会被锁表。锁的原理在本质上是很简单的,如果读读并存,没有关联,可以一起执行,如果读写或者写写操作并存,那么这个就不允许一起执行了。
所以在这个版本中,我就按照老大的意思,在where后面查询的字段上建立了一个索引,不让它走全表扫描,避免全表扫描引起的锁表情况。
在Java中,有一个锁并发框架,它其实主要做了三件事情:
1. 计数(读写计数,有多少个线程在进行读写操作);
2. 等待队列(如果当前的资源不允许进行操作,就是加锁了,那么该线程必须要等待了);
3. 线程的阻塞和唤醒(使用底层操作系统的功能了)。
当然在Java中的锁,它提供了一系列的并发数据结构和不同锁机制的类,引入这个就是说明Mysql中锁的实现原理和机制。
分享到:
相关推荐
在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。? 当Oracle执行DML语句时,系统自动在所要操作的表上申请TM类型的锁。当TM锁获得后,系统再自动申请TX类型的锁,并将实际...
mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流。 共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,...
然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和VBA等内容,并集中解答了一些常见的...
然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和VBA等内容,并集中解答了一些常见的...
然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和VBA等内容,并集中解答了一些常见的...
155.3调试中遇到的问题及分析与总结156167附录177.1仪器仪表电子元器件明细清单177.2参考文献18摘要电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁任务的电子产品。...
然后逐步介绍创建数据透视表、自定义透视表、查看视图数据、在透视表内进行计算、使用数据透视图等可视化工具、分析数据源、共享数据表、使用和分析OLAP数据、在透视表中使用宏和VBA等内容,并集中解答了一些常见的...
· 00.尚硅谷_MySQL高级_源码、课件 · 01.尚硅谷_MySQL高级_课程简介 · 02.尚硅谷_MySQL高级_MySQL简介 · ...尚硅谷_MySQL高级_如何锁定一行 · 62.尚硅谷_MySQL高级_行锁总结 · 63.尚硅谷_MySQL高级_主从复制
电子秒表电路设计实验报告 学生姓名: 学 号: 专 业:科学教育 年级、班级:04级5A班 实验项目:电子秒表电路设计 实验类型:设计 实验时间:2006年11月28日 实验指导老师: 实验评分: 一. 实验目的 1.进一步提高...
现有云锁架构缺陷分析 方案 433M+外置WIFI网关 433M+外置2G/4G网关 安全 云平台 简单低成本的安全机制管控 云锁数据 简单软件加密 外置网关 易受攻击/破坏 易受破坏 无线通道 短距通信,易被劫获 易被劫获 可靠 ...
61.MySQL高级_如何锁定一行.avi 60.MySQL高级_间隙锁危害.avi 59.MySQL高级_索引失效行锁变表锁.avi 58.MySQL高级_行锁演示答疑补充.avi 57.MySQL高级_行锁案例讲解.avi 56.MySQL高级_行锁理论.avi 55....
在整个系统设计实现中采用FPGA器件作为控制器,继而了解密码锁系统的总体流 程、各个模块的功能与接口的分配。基于FPGA,使用VHDL语言编写模块程序,再通过Qu artus II集成开发环境下进行设计、综合与仿真。要求用...
设计任务及要求 利用实验平台上8个LED数码管,led发光二级管,蜂鸣器设计一电子密码锁。 二,实验要求 1:用4×4矩阵键盘组成0-9数字键及确认键和删除键。 2:可以自行设定或删除8位密码,能够掉电保存。 3:用5位数...
智能蓝牙锁 蓝牙技术是一种短距离、低成本的无线连接技术,是一种能够实现语音和数据无线传 输的开放性接口系统。蓝牙设备工作在2.4GHz的工业、科学和医学频段上,而这一频段 不需要申请就可以使用。通过蓝牙技术...
通过使用本书中的配方,您将拥有一个解决方案工具箱,可以应用于现实世界中您自己的项目,使您的开发时间更快、更高效。 你将学到什么 •使用python库(如nltk、textblob、spacy、斯坦福corenlp等)应用nlp技术 •...
1.5 开发第一个Android应用程序 1.6 单独编译和打包Android应用程序模块 1.6.1 导入单独编译模块的mmm命令 1.6.2 单独编译Android应用程序模块 1.6.3 重新打包Android系统镜像文件 第2章 硬件抽象层 ...
AT89C51 提供以下标准功能: 4k 字节 Flash 闪速存储器 128 字节部 RAM,32 个 I/O 口线两个 16 位定时 /计数器,一个 5 向量两级中断结构,一个全双工串行 通信口,片振荡器及时钟电路。同时, AT89C51 可降至 0Hz...
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两条SQL语句锁的分析 看一下下面的SQL语句加什么锁 SLQ1:select * from t1 where id = 10; SQL2:delete from t1 where id = 10; (1)id 是不是主键 (2)当前系统的隔离级别是什么 (3)id列如果...
例如,当我们点一个数据库的表,所有和此表相关的索引、约束、存储过程、SQL语句以及和其他表的相互引用关系都在同一界面显示出来。为了简化操作,用户可以在浏览窗口操作数据库对象。 SQL 编辑器: SQL 编辑器的...