当前位置:网站首页>mysql-全局锁和表锁
mysql-全局锁和表锁
2022-07-05 23:38:00 【阿杜】
MYSQL里面的锁可以分为:全局锁,表级锁,行级锁
1 全局锁
对整个数据库实例加锁
MYSQL提供全局读锁的方法:Flush tables with read lock(FTWRL)
这个命令可以使整个库处于只读状态,使用该命令后后,数据更新语句、数据定义语句和更新类事务的提交语句等操作都会被阻塞
1.1 使用场景
全局逻辑备份
风险:
- 如果主库备份,在备份期间不能更新,业务摆停
- 如果从库备份,备份期间不能执行主库同步的binlog,导致主从延迟
官方自带的逻辑备份工具mysqlddump,当mysqldump 使用参数–single-transaction的时候,会启动一个事务,确保拿到一致性视图。由于MVCC的支持,这个过程中的数据时可以正常更新的
一致性读是好,但前提是引擎要支持这个隔离级别
如果要全库只读,为什么不使用set global readonly=true的方式???
1 在有些系统中,readonly的值会被用做其它逻辑,比如判断主备库。所以修改global变量的方式影响太大
2 在异常处理机制上有差异,如果执行FTWRL命令之后由于客户端发生异常断开,那么MYSQL会自动释放这个全局锁,整个库可以回到正常更新的状态。而将整个库设置为readonly之后,如果客户端发生异常,则数据库会一直保持readonly状态,这样会导致整个库长时间处于不可写状态,风险较高
2 表级锁
MYSQL里面的表级锁有两种,一种是表锁,一种是元数据锁(meta data lock, MDL)
2.1 表锁
表锁的语法: lock tables…read/write
可以使用unlock tables 主动释放锁,也可以在客户端断开的时候自动释放。lock tables语法除了会限制别的线程的读写外,也限定了本线程接下来的操作对象
对于InnoDB这种支持行锁的引擎,一般 不使用lock tables命令来控制并发,毕竟锁住整个表的影响还是很大。
2.2 MDL
不需要显式使用,在访问一个表的时候会自动加上
作用:保证读写的正确性
1 在对一个表做增删改查操作的时候,加MDL读锁
2 对表结构变更操作的时候,加MDL写锁
3 读锁之间不互斥
4 读写锁之间,写锁之间是互斥的,用来保证变更表架构操作的安全性
5 MDL会直到事务提交才会释放,在做表结构变更的时候,一定要小心不要导致锁住线上查询和更新
边栏推荐
猜你喜欢
Switching power supply buck circuit CCM and DCM working mode
How to rotate the synchronized / refreshed icon (EL icon refresh)
Fiddler Everywhere 3.2.1 Crack
Huawei simulator ENSP - hcip - MPLS experiment
Rsync remote synchronization
Comparison of parameters between TVs tube and zener diode
How to design API return code (error code)?
PV静态创建和动态创建
Brushless drive design -- on MOS drive circuit
What if the C disk is not enough? Let's see how I can clean up 25g of temp disk space after I haven't redone the system for 4 years?
随机推荐
Open source CRM customer relationship system management system source code, free sharing
How to insert data into MySQL database- How can I insert data into a MySQL database?
【LeetCode】5. Valid palindrome
Redis high availability - master-slave replication, sentinel mode, cluster
When to use useImperativeHandle, useLayoutEffect, and useDebugValue
Latex multiple linebreaks
Huawei simulator ENSP - hcip - MPLS experiment
开源crm客户关系统管理系统源码,免费分享
(4) UART application design and simulation verification 2 - RX module design (stateless machine)
Spire Office 7.5.4 for NET
How to enable relationship view in phpMyAdmin - how to enable relationship view in phpMyAdmin
TVS管和ESD管的技術指標和選型指南-嘉立創推薦
4点告诉你实时聊天与聊天机器人组合的优势
QCombox(重写)+QCompleter(自动补全,自动加载qcombox的下拉选项,设置背景颜色)
C# 文件与文件夹操作
GFS分布式文件系統
Attacking technology Er - Automation
Rasa 3. X learning series -rasa 3.2.1 new release
用列錶初始化你的vector&&initializer_list簡介
Rethinking about MySQL query optimization