与关系数据库一样,MongoDB也是通过锁机制来保证数据的完整性和一致性,MongoDB利用读写锁来支持并发操作,读锁可以共享写锁具有排他性.当一个读锁存在时,其他读操作也可以用这个读锁:但当一个写锁存在时,其他任何读写操作都不能共享这把锁,当一个读和写都等待一个锁时,MongoDB将优先分配锁给写操作. 从版本2.2开始,MongoDB在每一个数据库上实现锁的粒度,当然对于某些极少数的操作,在实例上面的全局锁依然存在,锁粒度的降低能够提高系统的并发性.成熟的关系数据库锁的粒度更低,它可以在表中…
锁粒度与并发性能怎么样? 数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞.读操作请求的是读锁,能够与其它读操作共享,但是当写操作请求数据库时,它所申请的是写锁,具有排它性. MongoDB在2.2之前的版本,锁的粒度是非常粗的,它会锁住整个mongod实例.这意味着当一个数据库上的写锁被请求后,对mongod实例上管理的其它数据库的操作都会被阻塞.2.2版本降低了锁的粒度,引入了单个数据库范围的锁,也就是说读写操作的锁…
转: (三)MySQL锁机制 + 事务 表锁(偏读) 偏向MyISAM存储引擎.开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发最低. 查看当前数据库中表的上锁情况,0表示未上锁. show open tables; 添加读/写锁 lock table 表名 read(write) , 表名2... 释放表锁 unlock table; 加读锁(共享) 当前会话和其他会话均可读取加了读锁的表 当前会话不能读取其他表(先把自己的事干好) 其他会话要修改加了读锁的表,必须等待锁释放(阻…
http://www.cnblogs.com/longshiyVip/p/5097336.html 概述了复制集,整体上对复制集有了个概念,但是复制集最重要的功能之——自动故障转移是怎么实现的呢?数据同步又是如何实现的?带着这两个问题,下面展开分析. 一. 数据同步 先利用mongo客户端登录到复制集的primary节点上. >mongo --port 查看实例上所有数据库 rs0:PRIMARY> show dbs local .09375GB 可以看到只有一个local数据库,因为此时还没…
1. 复制集概述 数据库总是会遇到各种失败的场景,如网络连接断开.断电等,尽管journaling日志功能也提供了数据恢复的功能,但journaling通常是针对单个节点来说的,只能保证单节点数据的一致性,而复制集通常是由多个节点组成,每个节点除了journaling日志恢复功能外,整个复制集还具有故障自动转移的功能,这样能保证数据库的高可用性.在生产环境中一个复制集最少应该包含三个节点,其中有一个必须是主节点,典型的部署结构如下图:…
聚集操作是对数据进行分析的有效手段.MongoDB主要提供了三种对数据进行分析计算的方式:管道模式聚集分析,MapReduce聚集分析,简单函数和命令的聚集分析. 1. 管道模式进行聚集 这里所说的管道类似于Unix上的管道命令.数据通过一个多步骤的管道,每个步骤都会对数据进行处理,最后返回需要的结果集.管道提供了高效的数据分析流程,是MongoDB中首选的数据分析方法.一个典型的管道操作流程如下图所示:…
数据库保存记录的机制是建立在文件系统上的,索引也是以文件的形式存储在磁盘上,在数据库中用到最多的索引结构就是B树.尽管索引在数据库领域是不可缺少的,但是对一个表建立过多的索引会带来一些问题,索引的建立要花费系统时间,同时索引文件也会占用磁盘空间.如果并发写入的量很大,每个插入的文档都要建立索引,可想而知,性能会较低.因此合理的建立索引是关键,搞清楚哪些字段上面需要建立索引,索引以什么样的方式建立,我们需要对每个查询过程进行分析,才能得出合理的结论. 1. 索引 在MongoDB上面,索引能够提高…
mongoDB的Journaling日志功能与常见的log日志是不一样的,mongoDB也有log日志,它只是简单记录了数据库在服务器上的启动信息.慢查询记录.数据库异常信息.客户端与数据库服务器连接.断开等信息.Journaling日志功能则是mongoDB里面非常重要的一个功能,它保证了数据库服务器在意外断电.自然灾害等情况发生下数据的完整性.尽管mongoDB还提供了其它的复制集等备份措施(后面会分析),但Journaling的功能在生产环境中是不可缺少的,它依靠了较小的CPU和内存消耗,…
1.1 什么大数据 具体来说,大数据技术涉及到数据的创造,存储,获取和分析,大数据的主要特点有下面几个: 数据量大.一个典型的PC机载2000年前后其存储空间可能有10GB,今天facebook一天增加的数据量就将近有500TB:一架波音737的飞机绕美国飞行一周将会产生200TB的数据:移动互联网的发展,智能手机的普及,人们每时每刻都在产生数以万计的数据. 数据变化快.高速的股票交易市场,产生的数据以微秒计算:基础设施系统,实施系统每秒都产生大量变化的日志,每秒都处理大量的并发. 数据多样性.…
第三章 索引操作及性能测试 索引在大数据下的重要性就不多说了 下面测试中用到了mongodb的一个客户端工具Robomongo,大家可以在网上选择下载.官网下载地址:http://www.robomongo.org/ 插入 测试数据 首先插入100万条测试数据 ;i<;i++){ var person={ Name:"jack"+i, Age:i, Address:["henan","wuhan"], Course:[ {Name:&quo…