当前位置:网站首页>MySQL 45 lecture learning notes (VI) global lock
MySQL 45 lecture learning notes (VI) global lock
2022-07-04 06:37:00 【Tom Kong】
One . Global lock : Lock the entire database instance
Mysql It provides a way to add global read lock The order is
Flush tables with read lock(FTWRL) When you need to make the whole library Read only status , You can use this command , Statements from other threads will Blocked
data to update sentence ( Data Additions and deletions ),
data Definition sentence ( Include Build table , Modify table structure etc. )
Update transaction Submit sentence
Typical use scenario of global lock -- Make a full library logical backup
That is the The whole database, every table select Come out and save it as text During the backup process The entire library is read-only , But let The whole library is read-only, which is dangerous
- Main database backup , Update cannot be performed during backup , Business basically stopped
- Backup from the library , During the backup, the slave database cannot synchronize with the master database binlog, It can lead to Master-slave delay
- No locks Words , The library that the backup system backs up is not a logical point in time , This view is logically inconsistent .
The official logic backup tool is mysqldump
When mysqldump, Using parameter -single-transaction When , A transaction will be started before importing data , To ensure a consistent view
because MVCC This data can be updated normally .
Table lock MySql There are two types of lock at the inner table level :
- One is watch lock ,
- One is metadata lock (meta data lock,MDL)
The syntax of table lock is lock tables ...read/write. And FTWRL similar . It can be used unlock tables Active release lock . It can also be released automatically when the client is disconnected .
We need to pay attention to lock tables grammar In addition to restricting the reading and writing of other threads Also limited The next operation object of this thread .
- For example , If in a thread A perform lock tables t1 t2 write This statement , Other threads write t1, Reading and writing t2 All of the statements will be blocked
- meanwhile , Threads A In execution unlock tables Previously, you could only read t1, Reading and writing t2 The operation of . Linking t1 Not allowed , Naturally, you can't access other tables .
When there is no finer grained lock , Table locking is the most common way to handle concurrency .
Two . The watch lock is MDL(metadata lock)
- MDL You don't need to explicitly use , When accessing a table, it will be automatically added
- MDL The role of is , Ensure the correctness of reading and writing
- If a query is traversing data in a table , Another thread changes the table structure during execution , Delete a list , Then the result obtained by the query thread does not match the table structure , Definitely not .
- therefore , stay MySQL5.5 Version to introduce MDL, When a table is adding, deleting, modifying, and querying , add MDL Read the lock , When it comes to watch When making structural changes , add MDL Write lock
- Read locks are not mutually exclusive , So you can have multiple threads to add, delete, modify and query a table at the same time
- Read and write locks are mutually exclusive , Write locks are mutually exclusive , To ensure the security of the operation to change the structure of the table . therefore , If two threads want to add fields to a table at the same time , One of them has to wait for the other to finish executing .
Add fields to a small table , Cause the whole library to hang
- In the transaction MDL lock . Apply at the beginning of statement execution , But it will not be released immediately after the statement ends , Instead, it will be released after the whole transaction is committed .
- First of all, we have to deal with long affairs , The transaction does not commit , Will always occupy MDL lock . stay MySQL Of information_schema Library innoDB_trx In the table , You can find the current transaction in progress 、
- You have to DDL The changed table happens to have a long transaction running , Consider suspending DDL perhaps kill Long Affairs
Special scenes
If the table you want to change is a hotspot table , Although the amount of data is small , But the requests are frequent , And you have to add a field , What should you do
- stay alert table Statement to set the waiting time , If the specified waiting time can be obtained MDL It's better to write lock , Don't block the following business statements if you can't get them , Give up first , Then the developer or DBA Repeat the process by retrying the command .
边栏推荐
- Internet of things protocol ZigBee ZigBee module uses the concept of protocol stack
- Modify TCP timestamp to optimize transmission performance
- Mysql 45讲学习笔记(十三)表数据删掉一半,表文件大小不变
- C realize Snake games
- Another company raised the price of SAIC Roewe new energy products from March 1
- Can the out of sequence message complete TCP three handshakes
- Mysql 45讲学习笔记(十)force index
- tars源码分析之1
- MySQL learning notes 3 - JDBC
- 2022 Xinjiang's latest eight members (Safety Officer) simulated examination questions and answers
猜你喜欢

Which water in the environment needs water quality monitoring

How to choose the middle-aged crisis of the testing post? Stick to it or find another way out? See below

Uniapp custom environment variables

MySQL learning notes 3 - JDBC

2022 where to find enterprise e-mail and which is the security of enterprise e-mail system?

SQL injection SQL lab 11~22

GoogleChromePortable 谷歌chrome浏览器便携版官网下载方式

ORICO ORICO outdoor power experience, lightweight and portable, the most convenient office charging station

Notes and notes

How to use multithreading to export excel under massive data? Source code attached!
随机推荐
[March 3, 2019] MAC starts redis
CORS is not intended to protect API endpoints - nikofischer
Modify TCP timestamp to optimize transmission performance
C # symmetric encryption (AES encryption) ciphertext results generated each time, different ideas, code sharing
Variables d'environnement personnalisées uniapp
Mysql 45讲学习笔记(十三)表数据删掉一半,表文件大小不变
17-18. Dependency scope and life cycle plug-ins
What is a spotlight effect?
采用中微BATG135实现IIC数据/指令交互
After the festival, a large number of people change careers. Is it still time to be 30? Listen to the experience of the past people
Code rant: from hard coding to configurable, rule engine, low code DSL complexity clock
如何实现视频平台会员多账号登录
Data analysis notes 09
STC8H开发(十二): I2C驱动AT24C08,AT24C32系列EEPROM存储
Google Chrome Portable Google Chrome browser portable version official website download method
Learning multi-level structural information for small organ segmentation
Which water in the environment needs water quality monitoring
Native Cloud - SSH articles must be read on Cloud (used for Remote Login to Cloud Server)
Practical gadget instructions
【MySQL】数据库视图的介绍、作用、创建、查看、删除和修改(附练习题)