谷歌瀏覽器怎么刪除2345網(wǎng)址導(dǎo)航百度產(chǎn)品優(yōu)化排名軟件
數(shù)據(jù)庫之事務(wù)
事務(wù)的特點(diǎn):
ACID
原子性
一致性:數(shù)據(jù)庫的完整性約束,不能被破壞
隔離性
持久性:數(shù)據(jù)一旦提交,事務(wù)的效果將會(huì)被永久的保留在數(shù)據(jù)庫中。而且不會(huì)被回滾
主從復(fù)制
高可用
備份
權(quán)限控制
臟讀:另外一個(gè)事務(wù)能夠看到另一個(gè)事務(wù)未提交的修改結(jié)果
事務(wù)隔離級(jí)別的作用范圍:
1、全局級(jí):對(duì)所有的會(huì)話有效
2、會(huì)話級(jí):只對(duì)當(dāng)前的會(huì)話有效
show global variables like ‘%isolation’;:查詢?nèi)质聞?wù)的隔離級(jí)別
select @@global.txisolation;:查詢?nèi)质聞?wù)的隔離級(jí)別
show session variables like ‘%isolation’;:查詢會(huì)話事務(wù)的隔離級(jí)別
select @@session.txisolation;:查詢會(huì)話事務(wù)的隔離級(jí)別
設(shè)置全局事務(wù)的隔離級(jí)別:
set global transation isolation level read uncommitted;
臨時(shí)修改全局事務(wù)的隔離級(jí)別,重啟服務(wù)即失效:
set @@global.tx_isolation=’read uncommitted’;
設(shè)置會(huì)話的隔離級(jí)別:
set session transation isolation level read uncommitted;
設(shè)置臨時(shí)會(huì)話的隔離級(jí)別:
set @@session.tx_isolation=’read uncommitted’;
不可重復(fù)讀:一個(gè)事務(wù)內(nèi),多次讀同一數(shù)據(jù)
前一個(gè)事務(wù)還沒有結(jié)束,另一個(gè)事務(wù)也訪問該數(shù)據(jù)
在一個(gè)事務(wù)之內(nèi),兩次查詢到結(jié)果不一致,讀不到相同的數(shù)據(jù)內(nèi)容
幻讀:一個(gè)事務(wù)對(duì)一個(gè)表中的數(shù)據(jù)進(jìn)行了修改,可能會(huì)涉及到表中的全部數(shù)據(jù)。
另一個(gè)事務(wù)也修改了表中的數(shù)據(jù)。
例如插入了一行新的數(shù)據(jù),前一個(gè)事務(wù)會(huì)發(fā)現(xiàn)表中還有數(shù)據(jù)沒有修改,類似于幻覺
丟失更新:兩個(gè)事務(wù)同時(shí)修改一條記錄,A先記錄,B也修改了記錄,B一旦提交會(huì)覆蓋A的結(jié)果
面試題:
以上這些情況如何避免:
1、權(quán)限控制
2、根據(jù)情況來使用隔離級(jí)別
生產(chǎn)環(huán)境----最好是提交讀
測試環(huán)境----無所謂
3、生產(chǎn)環(huán)境只能允許一個(gè)人對(duì)一個(gè)事務(wù)進(jìn)行操作。其他人不允許操作
總結(jié):在事務(wù)管理中,原子性是基礎(chǔ),隔離性是手段,一致性是目的 持久性是最終的結(jié)果
事務(wù)的控制語句:
BEGIN:顯示的開啟事務(wù)
START transaction:顯示的開啟事務(wù)
commit:提交事務(wù)
commit work:提交事務(wù)
rollback:回滾(撤銷正在進(jìn)行的所有未提交的修改)
rollback work:回滾(撤銷正在進(jìn)行的所有未提交的修改)
savepoint s1;:創(chuàng)建回滾點(diǎn),一個(gè)事務(wù)可以有多個(gè)回滾點(diǎn)
rollback to s1;:回滾到還原點(diǎn)
注意:
1、多點(diǎn)還原,s1和s2
如果說還原到s1
mysql提交事務(wù)是默認(rèn)提交
可以用set來設(shè)置mysql的提交方式:
show variables like ‘autocommit’;
set autocommit=0;
默寫:
1、AICD:分別是什么
A:原子性
C:一致性
I:隔離性
D:持久性
2、mysql支持的隔離級(jí)別分別是什么?
未提交讀
可重復(fù)讀
提交讀
串行讀
3、臟讀,幻讀,不可重復(fù)讀和丟失更新怎么預(yù)防?
權(quán)限控制
設(shè)置合理的隔離級(jí)別
生產(chǎn)中主要還是串行讀