


What are the knowledge points of Mysql MVCC multi-version concurrency control?
1. MVCC
Multi-Version Concurrency Control (MVCC) refers to.... MVCC is a concurrency control method. It is generally used in database management systems to achieve concurrent access to the database and to implement transactional memory in programming languages.
The implementation of MVCC in MySQL InnoDB is mainly to improve database concurrency performance and use a better way to handle read and write conflicts, so that even if there are > read and write conflicts, it can be done No locking, non-blocking concurrent reading.
2. Current reading
Operations such as select lock in share mode (shared lock), select for update; update, insert, delete (exclusive lock) are all current operations. Reading, why is it called current reading? That is, it reads the latest version of the record. When reading, it must also ensure that other concurrent transactions cannot modify the current record, and the read record will be locked.
3. Snapshot reading (improves the concurrent query capability of the database)
Select operation without locking is snapshot reading, that is, non-blocking reading without locking; the premise of snapshot reading is isolation The level is not the serial level. Snapshot reads at the serial level will degenerate into current reads; the reason why snapshot reads occur is based on the consideration of improving concurrency performance. The implementation of snapshot reads is based on multi-version concurrency control, that is, MVCC. It is considered that MVCC is a variant of row lock, but in many cases it avoids locking operations and reduces overhead; since it is based on multiple versions, that is, what the snapshot read may not necessarily read is the latest version of the data, but some It may be the previous historical version
4, current read, snapshot read, MVCC relationship
MVCC multi-version concurrency control refers to maintaining multiple versions of a data so that there is no conflict in read and write operations , Snapshot read is a non-blocking read function of MySQL to implement MVCC. The specific implementation of the MVCC module in MySQL is implemented by three implicit fields, undo log, and read view.
5. MVCC implementation principle
The implementation principle of mvcc mainly relies on three hidden fields in the record, undolog and read view.
Hidden fields
In addition to our custom fields, row records also have DB_TRX_ID, DB_ROLL_PTR, DB_ROW_ID and other fields implicitly defined by the database
DB_TRX_ID
6 bytes, the most recently modified transaction id, records the transaction id that created this record or last modified this record
DB_ROLL_PTR
7 bytes, rollback pointer, pointing to the previous version of this record, used to cooperate with undolog, pointing to the previous old version
DB_ROW_JD
6 bytes, hidden primary key. If the data table does not have a primary key, then innodb will automatically generate a 6-byte row_id
undo log
Undolog is called a rollback log, which represents a log that is generated during insert, delete, and update operations to facilitate rollback. When an insert operation is performed, the undolog generated is only needed when the transaction is rolled back, and it is The transaction can be discarded immediately after it is committed. When performing update and delete operations, the undolog generated is not only needed when the transaction is rolled back, but also when the snapshot is read, so it cannot be deleted casually. It can only be deleted when the snapshot is read or the transaction is rolled back. When the log is not involved, the corresponding log will be cleared uniformly by the purge thread (when data is updated and deleted, the deleted_bit of the old record is only set, and the outdated record is not actually deleted, because in order to save disk space , innodb has a dedicated purge thread to clear records withdeleted_bit true. If the
deleted_id of a record is true, and the DB_TRX_ID is visible relative to the read view of the purge thread, then this Records can be cleared at a certain time)
Read View
Read View is a read view produced when a transaction performs a snapshot read operation. When the transaction performs a snapshot read, At that moment, a current snapshot of the data system will be generated, and the ID of the current active transaction in the system will be recorded and maintained. The ID value of the transaction is increasing. 6. The core idea of MVCCThe core idea of MVCC is: I can check the data that existed before my transaction started, even if it was modified later Or deleted. I can't find the data newly added after my transaction.
MVCC search rules: Can only find data whose creation time is less than or equal to the current transaction ID and rows whose deletion time is greater than the current transaction ID (or not deleted)
As shown in the figure, the data with id 2 is deleted in the Transaction4 transaction, and then read in the Transaction2 transaction. According to the mvcc rules, the data inserted and deleted after the start of my transaction can be found , Lao Chao can still find out, so he still finds two pieces of data
As shown in the figure, in Transaction5 transaction, add a piece of data with name=Brother Tao, delete id= 1 data, modify name=Brother Tao’s ID to 1, and then read it in Transaction2. According to the mvcc rules, the data inserted and deleted after the start of my transaction can be found. Lao Yan can still find it, so he still finds two Data
Through the above demonstration, we can see that through the control of the version number, no matter whether other transactions are inserting, modifying, or deleting, the data queried by the Transaction2 transaction will not change.
The above is the detailed content of What are the knowledge points of Mysql MVCC multi-version concurrency control?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



MySQL is an open source relational database management system. 1) Create database and tables: Use the CREATEDATABASE and CREATETABLE commands. 2) Basic operations: INSERT, UPDATE, DELETE and SELECT. 3) Advanced operations: JOIN, subquery and transaction processing. 4) Debugging skills: Check syntax, data type and permissions. 5) Optimization suggestions: Use indexes, avoid SELECT* and use transactions.

You can open phpMyAdmin through the following steps: 1. Log in to the website control panel; 2. Find and click the phpMyAdmin icon; 3. Enter MySQL credentials; 4. Click "Login".

MySQL is an open source relational database management system, mainly used to store and retrieve data quickly and reliably. Its working principle includes client requests, query resolution, execution of queries and return results. Examples of usage include creating tables, inserting and querying data, and advanced features such as JOIN operations. Common errors involve SQL syntax, data types, and permissions, and optimization suggestions include the use of indexes, optimized queries, and partitioning of tables.

Redis uses a single threaded architecture to provide high performance, simplicity, and consistency. It utilizes I/O multiplexing, event loops, non-blocking I/O, and shared memory to improve concurrency, but with limitations of concurrency limitations, single point of failure, and unsuitable for write-intensive workloads.

MySQL is chosen for its performance, reliability, ease of use, and community support. 1.MySQL provides efficient data storage and retrieval functions, supporting multiple data types and advanced query operations. 2. Adopt client-server architecture and multiple storage engines to support transaction and query optimization. 3. Easy to use, supports a variety of operating systems and programming languages. 4. Have strong community support and provide rich resources and solutions.

MySQL's position in databases and programming is very important. It is an open source relational database management system that is widely used in various application scenarios. 1) MySQL provides efficient data storage, organization and retrieval functions, supporting Web, mobile and enterprise-level systems. 2) It uses a client-server architecture, supports multiple storage engines and index optimization. 3) Basic usages include creating tables and inserting data, and advanced usages involve multi-table JOINs and complex queries. 4) Frequently asked questions such as SQL syntax errors and performance issues can be debugged through the EXPLAIN command and slow query log. 5) Performance optimization methods include rational use of indexes, optimized query and use of caches. Best practices include using transactions and PreparedStatemen

MySQL and SQL are essential skills for developers. 1.MySQL is an open source relational database management system, and SQL is the standard language used to manage and operate databases. 2.MySQL supports multiple storage engines through efficient data storage and retrieval functions, and SQL completes complex data operations through simple statements. 3. Examples of usage include basic queries and advanced queries, such as filtering and sorting by condition. 4. Common errors include syntax errors and performance issues, which can be optimized by checking SQL statements and using EXPLAIN commands. 5. Performance optimization techniques include using indexes, avoiding full table scanning, optimizing JOIN operations and improving code readability.

Effective monitoring of Redis databases is critical to maintaining optimal performance, identifying potential bottlenecks, and ensuring overall system reliability. Redis Exporter Service is a powerful utility designed to monitor Redis databases using Prometheus. This tutorial will guide you through the complete setup and configuration of Redis Exporter Service, ensuring you seamlessly build monitoring solutions. By studying this tutorial, you will achieve fully operational monitoring settings
