MongoDB的不足之处仍有很多,而其中让我最感到痛心的就是MongoDB的全局锁!
怎么样的全局锁呢?相对于MySQL数据库来做个对比!MySQL数据库其中的MyIsam存储引擎使用的表锁,写会锁定整个表;而锁粒度相对较小的是Innodb,采用的是行锁!这样对比起来,MyISAM优势下降很多!而MongoDB的全局锁,粒度及其大,大得不敢让人相信,它不是MyISAM的表锁,甚至还超越了库锁,它竟然是整个服务上的锁。
也就是说,MongoDB一个写操作会锁定整个server级别的其他读写操作!我自己做个一个测试,在一个大约有3000w行的collection中添加一个索引,坑爹的事情发生了!这个添加索引的操作,锁定这整个服务,我在另外一个连接上,show dbs这个命令都被阻塞着,直到添加索引的操作完成!
但是MongoDB可以高并发读!
据说MongoDB已经在研发基于collection的锁粒度,也就是关系型数据库中的表锁粒度!
[来源:http://qdjalone.blog.51cto.com/1222376/856749]
备注:
MongoDB从2.2.0开始已经有粒度为DB的锁了,虽然还不是collection锁,不过相对于锁服务,好歹已经下降了一个级别。
Post a comment now »
本文目前不可评论
Sorry, the comment form is closed at this time.
No comments yet.