What is the isolation level of MySQL transactions?
1. The concept of isolation level
Why should we consider isolation level?
Because transactions must be concurrently executed, and concurrent execution may cause some problems: dirty reads, non-repeatable reads, and virtual reads, some are allowed to occur, and some are not allowed to occur. , There are different isolation levels for this different degree of concurrency control that appears or does not occur.
The four isolation levels supported by MySQL are:
TRANSACTION_READ_UNCOMMITTED: Uncommitted read. It means that transaction A can see the changes of transaction B before committing. In this way, dirty data is read, and non-repeatable reads and phantom reads are allowed.
TRANSACTION_READ_COMMITTED: Committed read (oracle default), indicating that reading uncommitted data is not allowed (to prevent dirty reads). Non-repeatable reads and phantom reads are still allowed to occur at this level.
TRANSACTION_REPEATABLE_READ: Repeatable Read (MySQL default), indicating that the transaction is guaranteed to be able to read the same data again without failure, even if other transactions change this data Even if you change it, you will not see the difference in the data of the two queries before and after. But phantom reading still occurs.
TRANSACTION_SERIALIZABLE: Serialization, is the highest transaction isolation level, which prevents dirty reads, non-repeatable reads and phantom reads. Serial execution is equivalent to a single-threaded operation, the lowest concurrency capability.
Note:
The higher the transaction isolation level, the less performance it takes to avoid conflicts. The more, the lower the efficiency. At the "repeatable read" level, it can actually solve part of the virtual read problem, but it cannot prevent the virtual read problem caused by update updates. To prohibit the occurrence of virtual reads, you still need to set the serialization isolation level.
MySQL client works at the repeatable read level by default:
## Because the committed read isolation level is set, no dirty reading occurred in transaction B. This It is implemented by various lock mechanisms and MVCC version control of transaction concurrency.
Under the read committed isolation level, querying submitted data may cause non-repeatable reads to occur, which is allowed. Since non-repeatable reads have occurred, phantom reads can definitely occur.
4. Test TRANSACTION_REPEATABLE_READ isolation level
##In a certain sense, repeatable reading can avoid phantom reading Appear. Because the current repeatable read isolation level prevents insert operations. Although the repeatable read isolation level can prevent insert and delete operations, it cannot prevent update operations.
In fact, transaction A has been inserted and committed, aaa already exists, because transaction B update aaa's age is successful
Judging from the phenomenon, serialization can solve phantom reading. Querying under the same conditions will be blocked when inserting data into another table. Since transaction B is reading data, this When transaction A writes data again, it is blocked (implemented with a read-write lock, which allows reading and reading, but does not allow reading and writing or writing and writing)
MySQL server will not let its own transaction thread be blocked forever, resulting in the current The lock occupied by the thread cannot be released, and other threads executing transactions cannot obtain the lock and are blocked forever. If the thread executing the transaction waits too long, the timeout mechanism will be triggered, causing the thread to release the lock and return an error
The above is the detailed content of What is the isolation level of MySQL transactions?. 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











The main role of MySQL in web applications is to store and manage data. 1.MySQL efficiently processes user information, product catalogs, transaction records and other data. 2. Through SQL query, developers can extract information from the database to generate dynamic content. 3.MySQL works based on the client-server model to ensure acceptable query speed.

Laravel is a PHP framework for easy building of web applications. It provides a range of powerful features including: Installation: Install the Laravel CLI globally with Composer and create applications in the project directory. Routing: Define the relationship between the URL and the handler in routes/web.php. View: Create a view in resources/views to render the application's interface. Database Integration: Provides out-of-the-box integration with databases such as MySQL and uses migration to create and modify tables. Model and Controller: The model represents the database entity and the controller processes HTTP requests.

MySQL and phpMyAdmin are powerful database management tools. 1) MySQL is used to create databases and tables, and to execute DML and SQL queries. 2) phpMyAdmin provides an intuitive interface for database management, table structure management, data operations and user permission management.

Compared with other programming languages, MySQL is mainly used to store and manage data, while other languages such as Python, Java, and C are used for logical processing and application development. MySQL is known for its high performance, scalability and cross-platform support, suitable for data management needs, while other languages have advantages in their respective fields such as data analytics, enterprise applications, and system programming.

I encountered a tricky problem when developing a small application: the need to quickly integrate a lightweight database operation library. After trying multiple libraries, I found that they either have too much functionality or are not very compatible. Eventually, I found minii/db, a simplified version based on Yii2 that solved my problem perfectly.

Article summary: This article provides detailed step-by-step instructions to guide readers on how to easily install the Laravel framework. Laravel is a powerful PHP framework that speeds up the development process of web applications. This tutorial covers the installation process from system requirements to configuring databases and setting up routing. By following these steps, readers can quickly and efficiently lay a solid foundation for their Laravel project.

The basic operations of MySQL include creating databases, tables, and using SQL to perform CRUD operations on data. 1. Create a database: CREATEDATABASEmy_first_db; 2. Create a table: CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY, titleVARCHAR(100)NOTNULL, authorVARCHAR(100)NOTNULL, published_yearINT); 3. Insert data: INSERTINTObooks(title, author, published_year)VA

When developing an e-commerce website using Thelia, I encountered a tricky problem: MySQL mode is not set properly, causing some features to not function properly. After some exploration, I found a module called TheliaMySQLModesChecker, which is able to automatically fix the MySQL pattern required by Thelia, completely solving my troubles.
