current position：Home>Understand database transaction analysis in one minute
Understand database transaction analysis in one minute
2022-01-27 00:15:24 【Java Xiaohai】
1. Definition of transaction
Transaction provides a mechanism to integrate all operations involved in an activity into an indivisible execution unit , All operations that make up a transaction can only be committed if all operations can be executed normally , As long as any of these operations fail , Will cause the entire transaction to roll back . To put it simply , A transaction provides a kind of Or do nothing , Or do the whole thing All or Nothing The mechanism of
2. The nature of transactions -ACID
Atomicity Atomicity Atomicity means that a transaction is an indivisible unit of work , The operations in the transaction are either all successful , All or nothing
Uniformity Consistency The integrity of the data before and after the transaction must be consistent .
Isolation, Isolation Transaction isolation is when multiple users access the database concurrently , A transaction opened by a database for each user , Can't be disturbed by the operation data of other transactions , Multiple concurrent transactions should be isolated from each other .
persistence Durability Persistence means that once a transaction is committed , It changes the data in the database permanently , Next, even if the database fails, it should not have any impact
3. Problems arising from concurrent transactions
- Dirty reading Business A Read to transaction B Data not yet submitted
From a macro point of view , It's business A Read out a piece of non-existent data , This problem is very serious .
- It can't be read repeatedly A data is read twice in the same transaction , The two readings are inconsistent
Business A Read the same data multiple times , But the business B In the transaction A During multiple reads , The data has been updated and submitted , Cause transaction A When reading the same data multiple times , Inconsistent results .
- Fantasy reading Unreal reading means A Transaction read B Add or delete data of transaction , Lead to A Transaction in B The number of records read before and after adding data is inconsistent
The study of unreal reading must be in RR Research at the level of ( Repeatable ), because RU / RC There will also be dirty reads 、 It can't be read repeatedly , So we take RR Level to study fantasy reading , Eliminate other interference .
Description of unreal reading ：
- Business A Query exists id=5 The record of , If not, insert , This is the normal business logic we expect .
- This is the time Business B A new one id=5 The record of , And commit the transaction .
- Business A Check again id=5 When , Found that there is still no record （ Because this is where RR Research at the level of ( Repeatable ), So read that there is still no data ）
- Business A Insert a id=5 The data of .
Final transaction A Commit transaction , I found the wrong report . That's strange , There was no record when I checked , But when you insert But tell me , It's like an illusion . This is all fantasy reading .
4. The isolation level of the transaction
The isolation level of a transaction is 4 Kind of ： Read uncommitted , Read submitted , Repeatable , Serialization . The isolation level of transactions is to solve the problem of data inconsistency under concurrent transactions .
|Isolation level||Dirty reading||It can't be read repeatedly||Fantasy reading|
|Repeatable||solve||solve||happen （ Can be found in next-key lock Let's work it out ）|
First, read uncommitted , It's the best performance , It can also be said that it is the most barbaric way , Because it's not locked at all , So there's no isolation at all , There is no isolation . Let's talk about serialization . Serialization is equivalent to , When dealing with a person's request , Everyone else is waiting . Read with shared lock , Other transactions can be read concurrently , But I can't write . Lock it when you write it , Other transactions cannot be written or read concurrently . Finally, read submit and repeatable read . These two levels of isolation are complex , It is necessary to allow certain concurrency , I want to solve the problem at the same time .MySQL The default transaction isolation level is repeatable (RR), The more strict the transaction isolation of the database , The less side effects , But the more it costs ; Because the essence of transaction isolation is to make transactions in serial state to a certain extent , This in itself contradicts concurrency . meanwhile , Different applications have different levels of read consistency and transaction isolation , For example, many applications do not have such high requirements for data consistency , contrary , There are certain requirements for concurrency
author[Java Xiaohai],Please bring the original link to reprint, thank you.
The sidebar is recommended
- Spring IOC container loading process
- [thinking] the difference between singleton mode and static method - object-oriented programming
- Hadoop environment setup (MySQL environment configuration)
- 10 minutes, using node JS creates a real-time early warning system for bad weather!
- Git tool
- Force deduction algorithm - 92 Reverse linked list II
- What is the sub problem of dynamic programming?
- C / C + +: static keyword summary
- Idea does not have the artifacts option when configuring Tomcat
- Anaconda can't open it
guess what you like
I don't know how to start this
Matlab simulation of transportation optimization algorithm based on PSO
MySQL slow log optimization
[Vue] as the window is stretched (larger, smaller, wider and higher), the text will not be displayed
Popular Linux distributions for embedded computing
Suzhou computer research
After installing SSL Certificate in Windows + tomcat, the domain name request is not successful. Please answer!!
Implementation time output and greetings of jQuery instance
The 72 year old uncle became popular. Wu Jing and Guo fan made his story into a film, which made countless dreamers blush
How to save computer research
- Springboot implements excel import and export, which is easy to use, and poi can be thrown away
- The final examination subjects of a class are mathematical programming, and the scores are sorted and output from high to low
- Two pronged approach, Tsinghua Professor Pro code JDK and hotspot source code notes, one-time learning to understand
- C + + recursive knapsack problem
- The use of GIT and GitHub and the latest git tutorial are easy to understand -- Video notes of crazy God speaking
- PostgreSQL statement query
- Ignition database test
- Context didn't understand why he got a high salary?, Nginxfair principle
- Bootstrap switch switch control user's guide, springcloud actual combat video
- A list that contains only strings. What other search methods can be used except sequential search
- [matlab path planning] multi ant colony algorithm grid map path planning [including GUI source code 650]
- [matlab path planning] improved genetic algorithm grid map path planning [including source code phase 525]
- Iinternet network path management system
- Appium settings app is not running after 5000ms
- Reactnative foundation - 07 (background image, status bar, statusbar)
- Reactnative foundation - 04 (custom rpx)
- If you want an embedded database (H2, hsql or Derby), please put it on the classpath
- When using stm32g070 Hal library, if you want to write to flash, you must perform an erase. If you don't let it, you can't write continuously.
- Linux checks where the software is installed and what files are installed
- SQL statement fuzzy query and time interval filtering
- 69. Sqrt (x) (c + + problem solving version with vs runnable source program)
- Fresh students are about to graduate. Do you choose Java development or big data?
- Java project: OA management system (java + SSM + bootstrap + MySQL + JSP)
- Titanic passenger survival prediction
- Vectorization of deep learning formula
- Configuration and use of private image warehouse of microservice architect docker
- For someone, delete return 1 and return 0
- How does Java dynamically obtain what type of data is passed? It is used to judge whether the data is the same, dynamic data type
- How does the database cow optimize SQL?
- [data structure] chain structure of binary tree (pre order traversal) (middle order traversal) (post order traversal) (sequence traversal)
- Webpack packaging optimization solution
- 5. Operation element
- Detailed explanation of red and black trees
- redhat7. 9 install database 19C
- Blue Bridge Cup notes: (the given elements are not repeated) complete arrangement (arrangement cannot be repeated, arrangement can be repeated)
- Detailed explanation of springboot default package scanning mechanism and @ componentscan specified scanning path
- How to solve the run-time exception of test times
- Detailed explanation of k8s management tool kubectl
- Android system view memory command