数据库系统的并发控制的两种实现模型

目前关系型数据库系统中有两种锁定模型:

一种是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能力限制。所以它们一般是有个机制定期刷新数据到磁盘上。但是内存中的数据是不持久的,一旦掉电,内存中的数据都会没了,所以为了解决临时掉电等问题,保证数据持久化,所以每次操作都会写入一个日志文件。

下回启动,就根据这个日志文件来恢复数据。

 

 

 欢迎指正!

 

posted @ 2014-03-10 20:46  王滔  阅读(678)  评论(0编辑  收藏  举报