資料庫 SQL之重點知識點總結

2021-08-28 06:02:24 字數 2507 閱讀 3912

事務是一種機制、是一種操作序列,它包含了一組資料庫操作命令,

這組命令要麼全部執行,要麼全部不執行。因此事務是乙個不可分割的工作邏輯單元。

在資料庫系統上執行併發操作時事務是作為最小的控制單元來使用的。

這特別適用於多使用者同時操作的資料通訊系統。

eg:訂票、銀行、保險公司以及**交易系統等。

事務4大屬性(acid特性):

原子性(atomicity):事務是乙個完整的操作。

一致性(consistency):當事務完成時,資料必須處於一致狀態。

隔離性(isolation):對資料進行修改的所有併發事務是彼此隔離的。

永續性(durability):事務完成後,它對於系統的影響是永久性的。

t-sql中管理事務的語句:

開始事務: begin transaction

提交事務:commit transaction

回滾事務: rollback transaction

顯式事務:用begin transaction明確指定事務的開始。

隱性事務:開啟隱性事務:set implicit_transactions on,當以隱性事務模式操作時,sql servler將在提交或回滾事務後自動啟動新事務。無法描述事務的開始,只需要提交或回滾事務。

自動提交事務:sql server的預設模式,它將每條單獨的t-sql語句視為乙個事務。如果成功執行,則自動提交,否則回滾。

未提交讀(read uncommitted):在未提交讀級別,事務中的修改,即使沒有提交,對其他事務也都是可見的。

事務可以讀取未提交的資料,這也被稱為髒讀(dirty read)。這個級別會導致很多問題,

從效能上來說,未提交讀不會比其他的級別好太多,但是缺乏其他級別的很多好處,在實際應用中一般很少使用。

提交讀(read committed):大多數資料庫系統的預設隔離級別都是提交讀(但mysql不是)。

提交讀滿足前面提到的隔離性的簡單定義:乙個事務開始時,只能「看見」已經提交的事務所做的修改。

換句話說,乙個事務從開始直到提交之前,所做的任何修改對其他事務都是不可見的。

這個級別有時候也叫做不可重複讀(nonrepeatable read),因為兩次執行同樣的查詢,可能會得到不一樣的結果。

可重複讀(repeatable read):可重複讀解決了髒讀的問題。該級別保證了在同乙個事務中多次讀取同樣記錄的結果是一致的。

但是理論上,可重複讀隔離級別還是無法解決另外乙個幻讀(phantom read)問題。

所謂幻讀,指的是當某個事務在讀取某個範圍內的記錄時,另外乙個事務中又在該範圍插入了新的記錄,

當之前的事務再次讀取該範圍的記錄時,會產生幻行(phantom row)。可重複讀是mysql的預設事務隔離級別。

可序列化(serializable):可序列化是最高的隔離級別。它通過強制事務序列執行,避免了前面所說的幻讀問題。

簡單來說,可序列化會在讀取的每一行資料上都加上鎖,所以可能導致大量的超時和鎖爭用問題。

實際應用中也很少用到這個隔離級別,只有在非常需要確保資料的一致性而且可以接受沒有併發的情況下,才考慮用該級別。

1.不可重複讀,a事務在第一次讀和第二次讀之間,如果b對資料進行的修改,則兩次讀取的資料會不一致

2.更新丟失,a和b同時操作乙個資料,最後執行完畢的會覆蓋前乙個的執行結果

3.髒讀,a事務新增了資料但並未提交,b讀到了這條資料後a回滾了,就會導致髒讀(很形象)

4.幻讀,a事務第二次讀取資料之前,b資料提交了滿足條件的資料,這種現象就叫幻讀

mysql有三種鎖的級別:頁級、表級、行級。

myisam和memory儲存引擎採用的是表級鎖(table-level locking

表級鎖的引擎是myisam和innodb。

行級引擎是innodb。

頁級鎖的引擎常用的是berkeley db

innodb支援事物,而myisam不支援事物

innodb支援行級鎖,而myisam支援表級鎖

innodb支援mvcc, 而myisam不支援

innodb支援外來鍵,而myisam不支援

innodb不支援全文索引,而myisam支援。

myisam更快,因為myisam內部維護了乙個計數器,可以直接調取。

資料庫重點知識

1資料庫 資料庫是一些關聯表的集合。2資料表 表是資料的矩陣。在乙個資料庫中的表看起來像乙個簡單的電子 3關係 可以理解成一張二維表,每個關係都有乙個關係名,即表名。4關係模式 對關係的描述,在資料庫中通常稱之為表結構。5元組 可以理解成二維表中的一行,在資料庫中常被稱作記錄。一行 元組,或記錄 是...

資料庫重點知識總結(一)

最近在複習 其實相對於學習了emmm 資料庫,對一些以前學習的時候不知道的盲點知識有了新的了解,小白一枚,感謝各位大佬輕噴,有什麼不對的希望各位大佬多多指正。層次和網狀資料模型為什麼用的較少?這兩種模型與底層實現的聯絡過於緊密,似的模型的構造和使用過於複雜。但是需要說明的是這兩種模型的效率比關係模型...

css盒模型重點知識點

標準盒模型,這個瀏覽器預設的方式 box sizing content box ie盒模型 box sizing border box 概念bfc主要用來解決邊距重疊的問題 與它類似的還有乙個叫做ifc 如何建立bfc bfc的使用場景 class wrap 1section 2section di...