Table of Contents
1. The concept of isolation level
Home Database Mysql Tutorial What is the isolation level of MySQL transactions?

What is the isolation level of MySQL transactions?

Jun 01, 2023 pm 05:26 PM
mysql

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.

What is the isolation level of MySQL transactions?

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:

What is the isolation level of MySQL transactions?

## 2. Test the TRANSACTION_READ_UNCOMMITTED isolation level

What is the isolation level of MySQL transactions?

What is the isolation level of MySQL transactions?

If client A rolls back at this time, zhangsan’s age in the database is restored to 20. At this time, it is too late, because client B has already taken 21. Doing business.

What is the isolation level of MySQL transactions?

Both clients rollback and abandon the modifications to the data made by the current transaction, and zhangsan’s age is restored to 20

What is the isolation level of MySQL transactions?

3. Test the TRANSACTION_READ_COMMITTED isolation level

What is the isolation level of MySQL transactions?

What is the isolation level of MySQL transactions?## 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.

What is the isolation level of MySQL transactions?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

What is the isolation level of MySQL transactions?

##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. What is the isolation level of MySQL transactions?

In fact, transaction A has been inserted and committed, aaa already exists, because transaction B update aaa's age is successfulWhat is the isolation level of MySQL transactions?

When the same query is before and after When executed twice, if the amount of data is different, phantom reading will occur. To completely solve the phantom read problem, it cannot be achieved under the repeatable read isolation level. The isolation level must be raised to serialization

5. Test the TRANSACTION_SERIALIZABLE isolation level

What is the isolation level of MySQL transactions?

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

What is the isolation level of MySQL transactions?

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!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1664
14
PHP Tutorial
1268
29
C# Tutorial
1245
24
MySQL's Role: Databases in Web Applications MySQL's Role: Databases in Web Applications Apr 17, 2025 am 12:23 AM

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 Introduction Example Laravel Introduction Example Apr 18, 2025 pm 12:45 PM

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: Core Features and Functions MySQL and phpMyAdmin: Core Features and Functions Apr 22, 2025 am 12:12 AM

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.

MySQL vs. Other Programming Languages: A Comparison MySQL vs. Other Programming Languages: A Comparison Apr 19, 2025 am 12:22 AM

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.

Solve database connection problem: a practical case of using minii/db library Solve database connection problem: a practical case of using minii/db library Apr 18, 2025 am 07:09 AM

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.

Laravel framework installation method Laravel framework installation method Apr 18, 2025 pm 12:54 PM

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.

MySQL for Beginners: Getting Started with Database Management MySQL for Beginners: Getting Started with Database Management Apr 18, 2025 am 12:10 AM

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

Solve MySQL mode problem: The experience of using the TheliaMySQLModesChecker module Solve MySQL mode problem: The experience of using the TheliaMySQLModesChecker module Apr 18, 2025 am 08:42 AM

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.

See all articles