How to solve MySQL phantom reading?
Jun 18, 2020 pm 03:39 PMHow to solve phantom reading in MySQL?
1. MVCC snapshot, which stores historical data in a snapshot. When a transaction adds or deletes data, it is guaranteed to be invisible to the current transaction;
Most databases Multi-version concurrency control is implemented, and all is achieved by saving data snapshots.
Taking InnoDB as an example, there are two redundant word breaks in each line. One is the created version of the row, and one is the deleted (expired) version of the row. The version number increases automatically with each transaction. Every time a transaction fetches data, it fetches data whose creation version is smaller than the current transaction version, and data whose expired version is larger than the current version.
Ordinary select is snapshot reading.
select * from T where number = 1;
2. "next-key" lock locks the gap between the current data row and the previous data and the next data to ensure that the data read within this range is consistent.
next-key lock contains two parts
Record lock (row lock)
Gap lock
Record locks are locks added to the index, and gap locks are added between indexes. (Thinking: What will happen if there is no index on the column?)
select * from T where number = 1 for update; select * from T where number = 1 lock in share mode; insert update delete
Recommended tutorial: "MySQL Tutorial"
The above is the detailed content of How to solve MySQL phantom reading?. For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

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

PHP's big data structure processing skills

How to optimize MySQL query performance in PHP?

How to use MySQL backup and restore in PHP?

What are the application scenarios of Java enumeration types in databases?

How to insert data into a MySQL table using PHP?

How to fix mysql_native_password not loaded errors on MySQL 8.4

How to use MySQL stored procedures in PHP?

Performance optimization strategies for PHP array paging
