当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- Vue communication and cross component listening state Vue communication
- Digital city responds to relevant national policies and vigorously develops the construction of digital twin platform
- Open source a set of minimalist front and rear end separation project scaffold
- [forward] how to view UserData in Lua
- An article taught you to use HTML5 SVG tags
- An article will take you to understand CSS3 fillet knowledge
- Markdown tricks
- Filecoin has completed a major upgrade and achieved four major project progress!
- Message queue - Analysis
- 预留电池接口,内置充放电电路及电量计,迅为助力轻松搞定手持应用
猜你喜欢
What is the tensor in tensorflow?
Some operations kept in mind by the front end foundation GitHub warehouse management
How much disk space does a new empty file take?
What are the highlights of Huawei mate 40 series with HMS?
All the way, I was forced to talk about C code debugging skills and remote debugging
2020-08-17:详细说下数据倾斜怎么解决?
C# 调用SendMessage刷新任务栏图标(强制结束时图标未消失)
PHP application docking justswap special development kit【 JustSwap.PHP ]
上海巨微专用蓝牙广播芯片
ES6 learning notes (5): easy to understand ES6's built-in extension objects
随机推荐
2020-08-20:GO语言中的协程与Python中的协程的区别?
面试官: ShardingSphere 学一下吧
MRAM高速缓存的组成
Elasticsearch database | elasticsearch-7.5.0 application construction
An article taught you to use HTML5 SVG tags
Using iceberg on kubernetes to create a new generation of cloud original data Lake
Python 100 cases
Look! Internet, e-commerce offline big data analysis best practice! (Internet disk link attached)
预留电池接口,内置充放电电路及电量计,迅为助力轻松搞定手持应用
Small program introduction to proficient (2): understand the four important files of small program development
Take you to learn the new methods in Es5
GitHub: the foundation of the front end
An article will introduce you to CSS3 background knowledge
CloudQuery V1.2.0 版本发布
[elastic search engine]
Summary of front-end performance optimization that every front-end engineer should understand:
检测证书过期脚本
To teach you to easily understand the basic usage of Vue codemirror: mainly to achieve code editing, verification prompt, code formatting
Staying up late summarizes the key points of report automation, data visualization and mining, which is different from what you think
实用工具类函数(持续更新)