Home >> FAQs/Tutorials >> MySQL Tutorials
MySQL Tutorial - Transaction Isolation Levels
(Continued from previous topic...)
What Are Transaction Isolation Levels?
There are 4 transaction isolation levels defined by SQL-1992 standard:
- READ UNCOMMITTED - The SELECT statements in one transaction will read uncommitted data changes from transactions
of all connected sessions. In this level, "dirty read" could happen, where transaction A reads a record of data
including changes made by transaction B, but not committed yet.
- READ COMMITTED - The SELECT statements in one transaction will read only committed data changes from other transactions,
and uncommitted data changes from itself. In this level, "dirty read" will not happen. But "non-repeatable read" could
happen, where transaction A executes the same query twice and gets two different outputs, because transaction B committed
some data changes between the two executions.
- REPEATABLE READ - Extending the READ COMMITTED level to ensure that same SELECT statement will get the same data
on the same records if executed multiple times. Database server will use locks or data snapshots to make this happen.
In this level, "dirty read" and "non-repeatable read" will not happen. But "phantom records"
could happen, there transaction A executes the same query twice and gets extra records the second time, because
transaction B inserted some new records between the two executions.
- SERIALIZABLE - Extending the REPEATABLE READ level to ensure that "phantom records" will not happen by using locks
or data snapshots.
By default, MySQL server offers the REPEATABLE READ level on tables with transaction-safe storage engines, like InnoDB.
(Continued on next topic...)
- What Is a Transaction?
- How To Start a New Transaction?
- How To End the Current Transaction?
- How To Create a Table for Transaction Testing?
- How To Switch between Autocommit-On and Autocommit-Off Modes?
- How To Find Out the Current Transaction Mode?
- How To Start a New Transaction Explicitly?
- How To Commit the Current Transaction?
- How To Rollback the Current Transaction?
- What Happens to the Current Transaction If a START TRANSACTION Is Executed?
- What Happens to the Current Transaction If a DDL Statement Is Executed?
- What Happens to the Current Transaction If the Session Is Ended?
- What Happens to the Current Transaction If the Session Is Killed?
- How Does MySQL Handle Read Consistency?
- What Are Transaction Isolation Levels?
- How To View and Change the Current Transaction Isolation Level?
- What Is a Data Lock?
- How To Experiment Data Locks?
- How Long a Transaction Will Wait for a Data Lock?
- What Happens to Your Transactions When ERROR 1205 Occurred?
- What Is a Dead Lock?
- How To Experiment Dead Locks?
- What Happens to Your Transactions When ERROR 1213 Occurred?
- What Are Impacts on Applications from Locks, Timeouts, and DeadLocks?