天天看點

資料庫系統的并發控制的兩種實作模型

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

一種是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能力限制。是以它們一般是有個機制定期重新整理資料到磁盤上。但是記憶體中的資料是不持久的,一旦掉電,記憶體中的資料都會沒了,是以為了解決臨時掉電等問題,保證資料持久化,是以每次操作都會寫入一個日志檔案。

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

 歡迎指正!