1.锁

为什么需要锁?
在实际中,比如在淘票票抢电影票,A用户和B用户都想要要2排2座,那么它们必然只有一个人能抢到。在这个过程中,使用锁可以对有效的资源在并发的环境下进行保护,解决隔离和并发的矛盾。

什么是锁?
锁是计算机协调进程和线程在并发情况下访问某一资源的协调机制
在数据库中,数据是提供给多用户的共享资源,锁是用来保证资源的有效性和一致性

2.Mysql锁(MyISAM引擎)

MySql锁机制的特点是在不同的储存引擎下采用了不同的锁

MyISAM引擎下和Memory引擎下用的都是表级锁(table_level lock)


MyISAM表级锁的两种模式

表共享读锁和表独占写锁

如何给表加锁?加锁后会有哪些影响?
表共享锁

在本会话中

在其它会话中

表独占锁

在本会话中


在其它会话中

总结:

3.MySQL锁(InnoDB引擎)

InnoDB引擎下采用的是行级锁(row_level lock)

行锁

共享锁又称,读锁。当一个事务对某几行上读锁时,允许其它事务对这几行进行读操作,但不允许其进行写操作,也不允许其它事务给这几行上排它锁(写锁),但允许上读锁。

排它锁又称,写锁。当一个事务对某几个上写锁时,不允许其它事务写(别的事务写其它行也会成为等待状态),但允许读,更不允许其它事务给这几行上任何锁。

测试在某行上排它锁后,其它会话在各类情况下的操作结果

当事务提交,COMMIT会进行锁的释放。

测试在某行上共享锁后,其它会话在各类情况下的操作结果

引入一道常见面试题:

正确的方法是,首先创建一张表和你预期更新后的表结构相同,然后把旧表的数据复制到新表中,并在数据库设置一个一个触发器,让旧表更新的数据更新在新表中,当全部同步后,执行一个把新表名改旧表,旧表删除的操作。

MySQL的锁(表锁与行锁)相关推荐

  1. mysql 并发 锁表_MySQL中的锁(表锁、行锁) 并发控制锁

    https://github.com/MrLining/mysql/wiki/MySQL%E4%B8%AD%E7%9A%84%E9%94%81%EF%BC%88%E8%A1%A8%E9%94%81%E ...

  2. 最全MySQL锁讲解:页锁、共享锁、行锁、表锁、悲观锁、乐观锁

    我们在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突),如何保证数据并发访问的一致性.有效性,是所有数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素,从 ...

  3. mysql行锁怎么读_MySQL锁(三)行锁:幻读是什么?如何解决幻读?

    概述 前面两篇文章介绍了MySQL的全局锁和表级锁,今天就介绍一下MySQL的行锁. MySQL的行锁是各个引擎内部实现的,不是所有的引擎支持行锁,例如MyISAM就不支持行锁. 不支持行锁就意味着在 ...

  4. mysql临键锁_详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)

    详解 MySql InnoDB 中的三种行锁(记录锁.间隙锁与临键锁) 前言 InnoDB 通过 MVCC 和 NEXT-KEY Locks,解决了在可重复读的事务隔离级别下出现幻读的问题.MVCC  ...

  5. java ibatis 锁表_oracle查看被锁的表和解锁

    https://www.cnblogs.com/XQiu/p/5212787.html --以下几个为相关表 SELECT * FROM v$lock; SELECT * FROM v$sqlarea ...

  6. mysql innodb 排他锁_MySQL 针对 InnoDB 引擎锁的种类:行锁(共享锁和排他锁)和表锁(意向共享锁和意向排他锁)...

    InnoDB 锁快速到底 行锁:共享锁(S).排他锁(X) 表锁:意向共享锁(IS).意向排他锁(IX) 下面主要针对 MySQL 中行级锁中的共享锁(S)与排他锁(X)进行分析 共享锁又称为读锁,简 ...

  7. mysql和oracle的锁_关于数据库行锁与表锁的认识

    MySQL MySQL(InnoDB存储引擎)默认是自动提交事务的,所以这个测试,需要先将MySQL的autocommit设置为0,关闭自动提交,需要自己手动提交事务 -- 关闭自动提交 set au ...

  8. mysql事务基础+基于innodb的行锁+间隙锁+如何锁定行

    [0]README outlines are as follows : 行锁: 事务: 隔离级别: 行锁变表锁: 间隙锁: 如何锁定一行: 行锁总结: [1]行锁+事务+存储引擎基础 1.行锁: 偏向 ...

  9. mysql 不锁表备份_Mysql不锁表备份之Xtrabackup的备份与恢复

    一.Xtrabackup介绍 MySQL冷备.热备.mysqldump都无法实现对数据库进行增量备份.如果数据量较大我们每天进行完整备份不仅耗时且影响性能.而Percona-Xtrabackup就是为 ...

  10. 怎么查看mysql是否锁表_MySQL查看是否锁表

    MySQL查看是否锁表的方法:首先进入命令窗口:然后通过执行命令"show engine innodb status\G;"查看造成死锁的sql语句,并分析索引情况即可. 可直接在 ...

最新文章

  1. 华为配置SSH登陆详细步骤
  2. Handlebars模板库浅析
  3. Reading Club Questions Feedback
  4. uva 725 Division(暴力模拟)
  5. 无向图缩点:tarjan点双与边双缩点(模板)
  6. java中什么表示打印_在java中打印对象时会发生什么
  7. 前端学习(1930)vue之电商管理系统电商系统之美化一层循环的UI结构删除业务逻辑实现
  8. IAR集成开发环境的使用
  9. 1月全球Web服务器市场:Apache份额回升至41.64%
  10. Java实现将任何编码方式的txt文件以UTF-8编码方式转存
  11. 实现导航栏的几种方式
  12. 观远数据完成2.8亿元C轮融资
  13. 2019-04-26周五宁波和杭州都下雨了,晚饭的鱼粉好大份哦,这是我第一次吃鱼粉!Hhhhhhhh下雨了就给吃点面才暖和,辛苦快递小哥哥了呀,其实这家店就在食堂我看见很多次了懒得买,外卖好像更便宜!
  14. 安装Ubuntu虚拟机
  15. rsyslog搭建远程日志服务器
  16. 电视机尺寸与观看距离
  17. 最新软件设计师知识点分析(思维导图)
  18. 主权财富基金刺痛发达国家神经
  19. 什么是二极管钳位的作用及原理?
  20. 自动化脚本之SCRT

热门文章

  1. java操作office套件-了解文档
  2. Win10启用管理员账号
  3. 【基于UDS服务的BootLoader架构和刷写流程】
  4. SnowFlake权限概览
  5. js数据类型(基本数据类型 | 引用数据类型)
  6. hbase分布式数据库--佘响平
  7. STM32的烧录和Hex/bin烧录文件解析、烧录文件是被如何存储到MCU中的?
  8. Win10打开应用程序没有反应怎么办?
  9. NDI Aurora磁定位仪采集数据
  10. 卷积在图像处理中的应用