資料庫系統的併發控制的兩種實現模型

王滔發表於2014-03-10

目前關係型資料庫系統中有兩種鎖定模型:

一種是mvcc(Multi-Version Concurrency Control),方便併發控制的。

大多數rdbms都是使用這種方式實現。讀不加鎖,寫加鎖的機制。

 

另外一種是Lock-Based Concurrency Control

 

要多補充點資料庫理論知識了

 

術語

 

ACID概念

原子性(Atomicity) A

一致性(Consistency) C

隔離性(Isolation)I

永續性(Durability)D

 

傳統的關係型資料庫必須會實現上面幾個點的。而mongodb是不會的。發生crash(意外崩潰)資料容易出現問題。

 

mongodb採用的mmap機制,在斷電和某些異常情況下有可能丟失資料或者crash,好訊息是1.8以後可以開啟journal日誌來避免此類問題

 

schema less是一把雙刃劍,因為什麼資料都可以往裡面存,不像mysql那樣會有欄位的概念可以對資料有效性把最後一道關,需要在編寫程式的時候特別注意一下資料有效性

 

 

關係型資料庫是怎麼避免突然掉電、機器崩潰等意外事情資料仍然持久化?

通過寫日誌的形式。實際上關係型資料庫在寫入資料的時候,並不會馬上寫入到磁碟上去。而是在記憶體中,這樣做的目的是,避免磁碟的i/0能力限制。所以它們一般是有個機制定期重新整理資料到磁碟上。但是記憶體中的資料是不持久的,一旦掉電,記憶體中的資料都會沒了,所以為了解決臨時掉電等問題,保證資料持久化,所以每次操作都會寫入一個日誌檔案。

下回啟動,就根據這個日誌檔案來恢復資料。

 

 

 歡迎指正!

 

相關文章