IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL锁机制 -> 正文阅读

[大数据]MySQL锁机制

锁机制介绍
1)锁的介绍

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。

2)锁的分类

? ? ? ?根据对数据操作的类型,可以分为读锁和写锁,读锁(共享锁)就是针对同一份数据,多个读操作可以同时进行而不会互相干扰;写锁(排它锁)是其他写操作没有完成之前,会阻断其他写锁和读锁。

? ? ? ?根据加锁范围的粒度,可以分为全局锁、表锁和行锁。

3)读操作加写锁的场景

? ? ? ?所有当前读操作加写锁,例如:select … for update、update、delete

全局锁
1)全局锁的作用

? ? ? ?对整个数据库实例进行加锁。通过加全局读锁实现,命令是Flush tables with read lock(FTWRL)。

2)全局锁的阻塞

当加全局锁时,以下操作会被阻塞:DDL、DML和更新类事务等语句。

3)全局锁的数据备份应用

【典型应用】

? ? ? ?典型应用是做全库数据的逻辑备份。

【FTWRL的局限性】

执行FTWRL后数据库处于只读状态,以确保其他线程不会对数据库做更新。如果是在主库上做备份,那么在备份期间都不能执行更新操作,业务基本上就要停摆;如果是在从库上备份,那么备份期间不能执行主库同步过来的binlog,会导致主从延时。

【官方备份工具】

? ? ? ?MySQL官方备份数据工具是mysqldump,如果存储引擎支持可重复读隔离级别则采用single-transaction方法进行备份,否则采用Flush tables with read lock方法,而由于FTWRL的局限性,所以尽量不使用MyISAM引擎,而使用Innodb引擎。

? ? ? ?Single-transaction方法是指在备份数据时会启动事务来确保拿到一致性视图,而由于MVCC的存在,在备份过程中是数据库是可以正常更新的。

4)全局锁和readonly参数在全局只读上的应用

? ? ? ?相同点:Readonly设置为true时与全局锁都可以实现只读功能;

? ? ? ?不同点:1.ReadOnly的特点:Readonly还会用来做一些其他逻辑,例如判断主从库;2.全局锁的特点:全局锁不仅能实现只读操作,还能阻止DDL和DML操作;3.在异常处理机制上:当发生异常导致客户端断开连接再次重连时,全局锁会自动被自动释放,而readonly的状态不会发生改变。

表级锁
1)表级锁的分类

? ? ? ?表级锁有两种,一种是表锁,还有一种是元数据锁

2)表级锁的读锁和写锁特点

? ? ? ?读锁之间不互斥,多个线程可同时对一张表执行增删改查操作。

? ? ? ?写锁之间、读锁和写锁之间是互斥的,用来保证表结构操作的安全性。

???????表锁
1)表锁的介绍

? ? ? ?偏向MyISAM存储引擎,开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率高,并发度低。更加注重于读数据的功能。

2)加锁和解锁操作

? ? ? ?加锁:lock table 表名 read/write

? ? ? ?解锁:unlock table 表名

? ? ? ?一般不需要显示的使用加锁和解锁语句实现表锁,在执行查询功能时会自动加读锁,在执行写入功能时一般会自动加写锁,执行完成后会主动释放,一般显示加锁通常是在模拟事务过程。

3)查看表是否加锁的方式

? ? ? ?采用show open tables语句,从中找到要查看表的In_use属性,如果为0表示没有加锁,反之就是加锁了(读锁或写锁)。

4)表锁的特点

? ? ? ?【读锁的特点】如果有多个对象对一张加读锁的表进行操作,可以进行读操作,但是不可以进行写操作,而且执行写操作会报错。

? ? ? ?【写锁的特点】如果有多个对象对一张加写锁的表进行操作,加写锁的对象可以执行读操作和写操作,但是该对象在解锁之前不能再访问其他表;在加写锁期间,其他对象无法访问加写锁的表,当加写锁的表被解锁后,其他对象对写锁的表的操作会立即执行。

? ? ? ?【总结】读锁时,加锁对象自己可读但不可写该表,可以读写其他表;其他对象对加锁表可读不可写。加写锁时,加锁对象自己可读可写,加锁对象不能读写其他表;其他对象不能读写。
?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-02 13:28:01  更:2022-05-02 13:28:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:18:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码