search
HomeDatabaseMysql TutorialWhat 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.

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
This article is reproduced at:亿速云. If there is any infringement, please contact admin@php.cn delete
Adding Users to MySQL: The Complete TutorialAdding Users to MySQL: The Complete TutorialMay 12, 2025 am 12:14 AM

Mastering the method of adding MySQL users is crucial for database administrators and developers because it ensures the security and access control of the database. 1) Create a new user using the CREATEUSER command, 2) Assign permissions through the GRANT command, 3) Use FLUSHPRIVILEGES to ensure permissions take effect, 4) Regularly audit and clean user accounts to maintain performance and security.

Mastering MySQL String Data Types: VARCHAR vs. TEXT vs. CHARMastering MySQL String Data Types: VARCHAR vs. TEXT vs. CHARMay 12, 2025 am 12:12 AM

ChooseCHARforfixed-lengthdata,VARCHARforvariable-lengthdata,andTEXTforlargetextfields.1)CHARisefficientforconsistent-lengthdatalikecodes.2)VARCHARsuitsvariable-lengthdatalikenames,balancingflexibilityandperformance.3)TEXTisidealforlargetextslikeartic

MySQL: String Data Types and Indexing: Best PracticesMySQL: String Data Types and Indexing: Best PracticesMay 12, 2025 am 12:11 AM

Best practices for handling string data types and indexes in MySQL include: 1) Selecting the appropriate string type, such as CHAR for fixed length, VARCHAR for variable length, and TEXT for large text; 2) Be cautious in indexing, avoid over-indexing, and create indexes for common queries; 3) Use prefix indexes and full-text indexes to optimize long string searches; 4) Regularly monitor and optimize indexes to keep indexes small and efficient. Through these methods, we can balance read and write performance and improve database efficiency.

MySQL: How to Add a User RemotelyMySQL: How to Add a User RemotelyMay 12, 2025 am 12:10 AM

ToaddauserremotelytoMySQL,followthesesteps:1)ConnecttoMySQLasroot,2)Createanewuserwithremoteaccess,3)Grantnecessaryprivileges,and4)Flushprivileges.BecautiousofsecurityrisksbylimitingprivilegesandaccesstospecificIPs,ensuringstrongpasswords,andmonitori

The Ultimate Guide to MySQL String Data Types: Efficient Data StorageThe Ultimate Guide to MySQL String Data Types: Efficient Data StorageMay 12, 2025 am 12:05 AM

TostorestringsefficientlyinMySQL,choosetherightdatatypebasedonyourneeds:1)UseCHARforfixed-lengthstringslikecountrycodes.2)UseVARCHARforvariable-lengthstringslikenames.3)UseTEXTforlong-formtextcontent.4)UseBLOBforbinarydatalikeimages.Considerstorageov

MySQL BLOB vs. TEXT: Choosing the Right Data Type for Large ObjectsMySQL BLOB vs. TEXT: Choosing the Right Data Type for Large ObjectsMay 11, 2025 am 12:13 AM

When selecting MySQL's BLOB and TEXT data types, BLOB is suitable for storing binary data, and TEXT is suitable for storing text data. 1) BLOB is suitable for binary data such as pictures and audio, 2) TEXT is suitable for text data such as articles and comments. When choosing, data properties and performance optimization must be considered.

MySQL: Should I use root user for my product?MySQL: Should I use root user for my product?May 11, 2025 am 12:11 AM

No,youshouldnotusetherootuserinMySQLforyourproduct.Instead,createspecificuserswithlimitedprivilegestoenhancesecurityandperformance:1)Createanewuserwithastrongpassword,2)Grantonlynecessarypermissionstothisuser,3)Regularlyreviewandupdateuserpermissions

MySQL String Data Types Explained: Choosing the Right Type for Your DataMySQL String Data Types Explained: Choosing the Right Type for Your DataMay 11, 2025 am 12:10 AM

MySQLstringdatatypesshouldbechosenbasedondatacharacteristicsandusecases:1)UseCHARforfixed-lengthstringslikecountrycodes.2)UseVARCHARforvariable-lengthstringslikenames.3)UseBINARYorVARBINARYforbinarydatalikecryptographickeys.4)UseBLOBorTEXTforlargeuns

See all articles

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 Article

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

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools