ORACLE數據庫事務隔離級別介紹建站知識
導讀:1建站知識事務隔離級別:一個事務對數據庫的修改與并行的另一個事務的隔離程度企業網站建設seo網站排名優化軟件。
兩個并發事務同個業網站建設公司時訪問數據庫表相同的行時,可能存在以下三個問題:
1、幻想讀:事務T1讀取一條指定where條件的語句,返回結果集。此時事務T2插入一行新記錄,恰好滿足T1的where條件。然后T1使用相同的條件再次查詢,結果seo網站優化軟件集中可以看到T2插入的記錄,這條新紀錄就是幻想。
2、不可重復讀取:事務T1讀取一行記錄,緊接著事務T2修改了T1剛剛讀取的記錄,然后T1再次查詢,發現與第一次讀取的記錄不同,這稱為不可重復讀。
3、臟讀:事務T1更新了一行記錄,還未提交所做的修改,這個T2讀取了更新后的數據,然后T1執行回滾操作,取消剛才的修改,所以T2所讀取的行就無效,也就是臟數據。
一、為了處理這些問題,SQL標準定義了以下幾種事務隔離級別:
READ UNCOMMITTED 幻想讀、不可重復讀和臟讀都允許。一個會話可以讀取其他事務未提交的更新結果,如果這個事務最后以回滾結束,這時的讀取結果就可能是不正確的,所以多數的數據庫都不會運用這種隔離級別。
READ COMMITTED 允許幻想讀、不可重復讀,不允許臟讀。一個會話只能讀取其他事務已提交的更新結果,否則,發生等待,但是其他會話可以修改這個事務中被讀取的記錄,而不必等待事務結束,顯然,在這種隔離級別下,一個事務中的兩個相同的讀取操作,其結果可能不同。
REPEATABLE READ 允許幻想讀,不允許不可重復讀和臟讀。在一個事務中,如果在兩次相同條件的讀取操作之間沒有添加記錄的操作,也沒有其他更新操作導致在這個查詢條件下記錄數增多,則兩次讀取結果相同。換句話說,就是在一個事務中第一次讀取的記錄保證不會在這個事務期間發生改動。SQL Server是通過在整個事務期間給讀取的記錄加鎖實現這種隔離級別的,這樣,在這個事務結束前,其他會話不能修改事務中讀取的記錄,而只能等待事務結束,但是SQL Server不會阻礙其他會話向表中添加記錄,也不阻礙其他會話修改其他記錄。
SERIALIZABLE 幻想讀、不可重復讀和臟讀都不允許。在一個事務中,讀取操作的結果是在這個事務開始之前其他事務就已經提交的記錄,SQL Server通過在整個事務期間給表加鎖實現這種隔離級別。在這種隔離級別下,對這個表的所有DML操作都是不允許的,即要等待事務結束,這樣就保證了在一個事務中的兩次讀取操作的結果肯定是相同的。SQL標準所定義的默認事務隔離級別是SERIALIZABLE。
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-22 ,文章ORACLE數據庫事務隔離級別介紹建站知識主要講述級別,事務,ORACLE數據庫事務隔離級別介紹建站知識網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_5265.html