当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- mongo 用户权限 登录指令
- To teach you to easily understand the basic usage of Vue codemirror: mainly to achieve code editing, verification prompt, code formatting
- C# 调用SendMessage刷新任务栏图标(强制结束时图标未消失)
- Staying up late summarizes the key points of report automation, data visualization and mining, which is different from what you think
- Try to build my mall from scratch (2): use JWT to protect our information security and perfect swagger configuration
- Why is the LS command stuck when there are too many files?
- All the way, I was forced to talk about C code debugging skills and remote debugging
- Can you do it with only six characters?
- 2020 database technology conference helps technology upgrade
- 2020年第四届中国 BIM (数字建造)经理高峰论坛即将在杭举办
猜你喜欢

Summary of front-end performance optimization that every front-end engineer should understand:

ES6 learning notes (2): teach you to play with class inheritance and class objects

ORA-02292: 违反完整约束条件 (MIDBJDEV2.SYS_C0020757) - 已找到子记录

Using an example to understand the underlying processing mechanism of JS function

【学习】接口测试用例编写和测试关注点

Description of phpshe SMS plug-in

An article will introduce you to HTML tables and their main attributes

2020-09-09:裸写算法:两个线程轮流打印数字1-100。

How much disk space does a file of 1 byte actually occupy

Stickinengine architecture 12 communication protocol
随机推荐
Some operations kept in mind by the front end foundation GitHub warehouse management
Introduction to the development of small game cloud
Contract trading system development | construction of smart contract trading platform
An article takes you to understand CSS gradient knowledge
Helping financial technology innovation and development, atfx is at the forefront of the industry
Markdown tricks
Introduction to Huawei cloud micro certification examination
mongo 用户权限 登录指令
【涂鸦物联网足迹】物联网基础介绍篇
Isn't data product just a report? absolutely wrong! There are university questions in this category
2020年第四届中国 BIM (数字建造)经理高峰论坛即将在杭举办
解决 WPF 绑定集合后数据变动界面却不更新的问题
PHP application docking justswap special development kit【 JustSwap.PHP ]
Tron smart wallet PHP development kit [zero TRX collection]
What is the tensor in tensorflow?
2020-08-29:进程线程的区别,除了包含关系之外的一些区别,底层详细信息?
How does cglib implement multiple agents?
MongoDB与SQL常用语法对应表
预留电池接口,内置充放电电路及电量计,迅为助力轻松搞定手持应用
list转换map(根据key来拆分list,相同key的value为一个list)