Detailed explanation of Mysql transaction isolation level read commit

Detailed explanation of Mysql transaction isolation level read commit

View MySQL transaction isolation level

mysql> show variables like '%isolation%';
+---------------+----------------+
| Variable_name | Value |
+---------------+----------------+
| tx_isolation | READ-COMMITTED |
+---------------+----------------+
1 row in set (0.00 sec)

You can see that the current transaction isolation level is READ-COMMITTED

Let's take a look at the transaction isolation details under the current isolation level and open two query terminals A and B.

There is an order table below, the initial data is as follows

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 | 1 |
+----+--------+
1 row in set (0.00 sec)

The first step is to start transactions in both A and B.

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

The second step is to query the number values ​​in the two terminals

A

 mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 | 1 |
+----+--------+
1 row in set (0.00 sec)

B

 mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 | 1 |
+----+--------+
1 row in set (0.00 sec)

The third step is to change the number in B to 2, but do not commit the transaction

mysql> update `order` set number=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

Step 4: Query the value in A

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 | 1 |
+----+--------+
1 row in set (0.00 sec)

It is found that the value in A has not been modified.

Step 5: Submit transaction B and query the value in A again

B

mysql> commit;
Query OK, 0 rows affected (0.01 sec)

A

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 | 2 |
+----+--------+
1 row in set (0.00 sec)

It is found that the value in A has changed

Step 6. Commit the transaction in A and query the values ​​of A and B again.

A

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 | 2 |
+----+--------+
1 row in set (0.00 sec)

B

mysql> select * from `order`;
+----+--------+
| id | number |
+----+--------+
| 13 | 2 |
+----+--------+
1 row in set (0.00 sec)

It is found that the values ​​in A and B are changed to 2.

Here is a simple schematic diagram


We can see that when the transaction isolation level is Read Committed, after the transaction in B is committed, the result of the B transaction commit can be read even if A is not committed. This solves the dirty read problem.

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • MySQL transaction isolation level details
  • In-depth understanding of Mysql transaction isolation level and locking mechanism issues
  • MySQL Series 10 MySQL Transaction Isolation to Implement Concurrency Control
  • Mysql transaction isolation level principle example analysis
  • In-depth understanding of the four isolation levels of MySQL transactions

<<:  Analysis of uniapp entry-level nvue climbing pit record

>>:  CentOS 8 Installation Guide for Zabbix 4.4

Recommend

Several situations where div is covered by iframe and their solutions

Similar structures: Copy code The code is as foll...

Research on the value of position attribute in CSS (summary)

The CSS position attribute specifies the element&...

Example code for CSS columns to achieve two-end alignment layout

1. Going around in circles After going around in ...

Detailed introduction to the MySQL installation tutorial under Windows

Table of contents 1. Some concepts you need to un...

Html+CSS drawing triangle icon

Let’s take a look at the renderings first: XML/HT...

MySQL trigger detailed explanation and simple example

MySQL trigger simple example grammar CREATE TRIGG...

HTML tags list and usage instructions

List of HTML tags mark type Name or meaning effec...

Adobe Brackets simple use graphic tutorial

Adobe Brackets is an open source, simple and powe...

Vue routing lazy loading details

Table of contents 1. What is lazy loading of rout...

Solution to HTML2 canvas SVG not being recognized

There is a new feature that requires capturing a ...

js to realize login and registration functions

This article example shares the specific code of ...

Form submission page refresh does not jump

1. Design source code Copy code The code is as fol...

Summary of how to use bootstrap Table

This article shares with you how to use bootstrap...

How to build php-nginx-alpine image from scratch in Docker

Although I have run some projects in Docker envir...

Detailed steps to build an independent mail server on Centos7.9

Table of contents Preface 1. Configure intranet D...