当前位置:网站首页>Database isolation level

Database isolation level

2022-07-06 06:15:00 Snow peak expensive

According to the problems caused by concurrency , Modify the isolation level to avoid .

One 、 Update missing :

background : Isolation level :READ-UNCOMMITED

 Insert picture description here

Due to withdrawal transaction rollback , As a result, the modified data of the deposit transaction is overwritten . An update was lost .
solve : because InnoDB Will lock us , So this situation will not happen today .

Two 、 Dirty reading

background : Isolation level :READ-UNCOMMITTED
Due to reading the data of uncommitted transactions , Cause exception .

Someone has 1000 element .
I read about the withdrawal transaction 1000.
Withdrawal transaction deduction 100 Yuan Yu 900 element .
I read about the deposit transaction 900 element .
The withdrawal transaction rolled back , Remnant 1000 .
Deposit transactions with read 900+1000, Remnant 1900 element .
The withdrawal was cancelled , Resulting in less deposits 100.

solve : Set isolation level :set session transation isolation level read committed;

Isolation level :READ-COMMITTED
Someone has 1000 element .
I read about the withdrawal transaction 1000.
Withdrawal transaction deduction 100 Yuan Yu 900 element .
I read about the deposit transaction 1000 element .
The withdrawal transaction rolled back , Remnant 1000 .
Deposit transactions with read 1000+1000, Remnant 2000 element .
The withdrawal was cancelled , The correctness of the data is not affected .

3、 ... and 、 It can't be read repeatedly

background : Isolation level :READ-COMMITTED
Business A Read data multiple times , Business B In the transaction A In the process of reading many times, the data is modified and submitted . Cause transaction A The data read each time is different .

Business A I read 1000 element .
Business B I read 1000 element . Add 1000, Remnant 2000.
Business A I read again 1000 element .( Because the isolation level is READ-COMMITTED)
Business B Submit .
Business A I read 2000. As a result, the data read before and after are different .

solve : Set isolation level :set session transation isolation level repeatable read;

Isolation level :REPEATABLE-READ

Business A I read 1000 element .
Business B I read 1000 element . Add 1000, Remnant 2000.
Business A I read again 1000 element .( Because the isolation level is READ-COMMITTED)
Business B Submit .
Business A I read 1000. The data read before and after are the same .

namely : The current transaction is submitted regardless of how other transactions are modified , I still use my own data .

Four 、 Fantasy reading

background : Isolation level :REPEATABLE-READ

Business A Currently, we have found 4 Data .
Business B Insert \ Delete A piece of data , Submit .
Business A Update data , Found an update 5 strip \3 strip . There seems to be an illusion .

solve : Set isolation level :set session transation isolation level serializable;

Isolation level :SERIALIZABLE
namely : Serial . But it will affect the concurrency efficiency .

summary

 Insert picture description here

原网站

版权声明
本文为[Snow peak expensive]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060607583664.html