当前位置:网站首页>The isolation level of transaction and its problems
The isolation level of transaction and its problems
2020-11-06 21:19:00 【Irving the procedural ape】
One 、 The basic elements of a business (ACID)
1、 Atomicity (Atomicity): All operations after the transaction begins , Or all of them , Or not at all , It's impossible to stay in the middle . An error occurred during the execution of the transaction , It rolls back to the state it was in before the transaction started , All the operations are as if they didn't happen . That is to say, a business is an indivisible whole , It's like atoms in chemistry , Is the basic unit of material composition .
2、 Uniformity (Consistency): Before and after the transaction starts , The database integrity constraint is not broken . such as A towards B Transfer accounts , impossible A Buckle the money ,B Has received .
3、 Isolation, (Isolation): At the same time , Only one transaction is allowed to request the same data , There is no interference between the different transactions . such as A Withdrawing money from a bank card , stay A Before the withdrawal process is over ,B You can't transfer money to this card .
4、 persistence (Durability): After the transaction completes , All updates to the database by the transaction are saved to the database , Cannot be rolled back .
Two 、SQL Standard transaction isolation level (mysql The default is repeatable ,oracle The default is read committed )
- Read uncommitted (read uncommitted) Refer to , When a transaction has not yet been committed , The changes it makes can be seen by other things .
- Read submitted (read committed) Refer to , After a transaction is committed , The changes it makes will be seen by other things .
- Repeatable (repeatable read) Refer to , Data seen during the execution of a transaction , It is always consistent with the data seen when the transaction is started . Of course, at the level of repeatable read isolation , Uncommitted changes are also invisible to other transactions .
- Serialization (serializable ), As the name suggests, for the same line of records ,“ Write ” Will add “ Write lock ”,“ read ” Will add “ Read the lock ”. When there is a read/write lock conflict , Subsequent transactions must wait for the previous transaction to complete , To carry on That's ok .
Example
| Business one | Business two |
|---|---|
| Start transaction A, Inquire about A=10 | Start transaction B |
| Inquire about A=10, to update A=20 | |
| The query value a1 | |
| Commit transaction B | |
| The query value a2 | |
| Commit transaction A | |
| The query value a3 |
If isolation level is “ Read uncommitted ”, be a1 The value is 20, although B Not submitted 2 But it turns out to be A I saw it
If isolation level is “ Read submitted ”, be a1 yes 10,a2 The value of is 2. Business B Can't be updated until it's submitted A notice . therefore , a3 The value of is also 2.
If isolation level is “ Repeatable ”, be a1、a2 yes 10,a3 yes 20. The reason a2 still 10, That's what we're following : The data that the transaction sees during execution must be consistent before and after .
If isolation level is “ Serialization ”, It's business B perform “ take A=10 Change to 20” When , Will be locked . Until transaction A After submission , Business B To continue . So from A From the perspective of , a1、a2 The value is 10,a3 The value of is 20
3、 ... and 、 How to set and view isolation level
- Read uncommitted :read uncommitted
- Read submitted :read committed
- Repeatable :repeatable read
- Serialization :serializable
Check the isolation level
show variables like 'transaction_isolation';
Set up innodb The transaction level method is :set Scope transaction isolation level Transaction isolation level , for example ~
SET [SESSION | GL.........
版权声明
本文为[Irving the procedural ape]所创,转载请带上原文链接,感谢
边栏推荐
- C# 调用SendMessage刷新任务栏图标(强制结束时图标未消失)
- 实用工具类函数(持续更新)
- 事务的隔离级别与所带来的问题
- What is the purchasing supplier system? Solution of purchasing supplier management platform
- Road to simple HTML + JS to achieve the most simple game Tetris
- Flink's datasource Trilogy 2: built in connector
- Diamond standard
- ORA-02292: 违反完整约束条件 (MIDBJDEV2.SYS_C0020757) - 已找到子记录
- What are the highlights of Huawei mate 40 series with HMS?
- 美团内部讲座|周烜:华东师范大学的数据库系统研究
猜你喜欢

How about small and medium-sized enterprises choose shared office?

The role of theme music in games

2020-08-30:裸写算法:二叉树两个节点的最近公共祖先。

image operating system windows cannot be used on this platform

Flink's datasource Trilogy 2: built in connector

Markdown tricks

How much disk space does a new empty file take?

Behind the record breaking Q2 revenue of Alibaba cloud, the cloud opening mode is reshaping

Some operations kept in mind by the front end foundation GitHub warehouse management

Contract trading system development | construction of smart contract trading platform
随机推荐
Python basic variable type -- list analysis
Why is the LS command stuck when there are too many files?
What kind of music do you need to make for a complete game?
2020-08-15:什么情况下数据任务需要优化?
What is the purchasing supplier system? Solution of purchasing supplier management platform
Vue communication and cross component listening state Vue communication
Introduction to Huawei cloud micro certification examination
Junit测试出现 empty test suite
An article takes you to understand CSS gradient knowledge
C and C / C + + mixed programming series 5 - GC collaboration of memory management
PHP application docking justswap special development kit【 JustSwap.PHP ]
ado.net和asp.net的关系
C# 调用SendMessage刷新任务栏图标(强制结束时图标未消失)
An article will introduce you to CSS3 background knowledge
An article takes you to understand CSS3 picture border
代码重构之法——方法重构分析
image operating system windows cannot be used on this platform
Markdown tricks
Axios learning notes (2): easy to understand the use of XHR and how to package simple Axios
Building a new generation cloud native data lake with iceberg on kubernetes