mongodb读写性能分析
来源:互联网 发布:html5商城整站源码 编辑:程序博客网 时间:2024/05/29 17:02
mongodb读写性能分析
标签(空格分隔): Mongodb
【写】
可能影响插入数据性能评估:服务器硬件、索引(建立过多索引)、插入时是否指定_id、单机or分片、是否副本集、是否安全写入
- 数据库版本:v2.6
- 插入样本数据大小:约500byte
- 测试脚本:如下
for(var i =1; i <= 100000; i++){ db.ActivityResultShard.insert({ "Aid" : "56aacfd4d4307006200d0bac", "Cid" : 111, "At" : "56aacfd4d4307006200d0bac", "Time" : ISODate("2017-03-28T09:35:05.779Z"), "EvtN" : null, "Evt" : null, "As" : 0, "Mis" : { "Mid" : "e3196ec3-b624-4b11-a5e7-df7c4400ba75", "Mt" : "asdf", "Ms" : 1, "Filter" : [ { "Fs" : true, "Exp" : "Evt.Amount>0", "Pro" : "GetInfo" } ], "Rew" : [ { "Rid" : "123", "Ra" : "", "Rs" : 0 } ] }});}
硬件对比
索引对比
测试硬件:1.72 8G VMware 64位Linux
操作客户端:mongo shell (单线程)
索引:未指定_id,未指定其他索引键值
集群对比
测试硬件集群:101.41、101.42、101.43 4G VMware 64位Linux
操作客户端:mongo shell (单线程)
索引:未指定_id,未指定其他索引键值
安全写入对比
在2012年11月之前,MongoDB驱动、shell客户端默认是不安全写入,也就是fire-and-forget,动作发出之后,不关心是否真的写入成功,如果这时候出现了_id重复、非UTF8字符等异常,客户端不会知道。在2012年11月之后,默认为安全写入,安全级别相当于参数w=1
,客户端可以知道写入操作是否成功。如果代码使用Mongo或者Collection来连接数据库,则说明它是默认不安全写入的legacy代码,安全写入已经把连接数据库修改为MongoClient接口。
安全写入可以分为三个级别:
- 第一级是默认的安全写入,确认数据写入到内存中就返回(w=N属于这一级);
- 第二级是Journal save,数据在写入到DB磁盘文件之前,MongoDB会先把操作写入到Journal文件,这一级指的是确认写入了Journal文件就返回;
- 第三级是fysnc,所有数据刷写到到DB磁盘文件才返回。
一般第一级就足够了,第二级是为了保证在机器异常断电的情况下也不会丢失数据。安全写入要付出性能的代码:不安全写入的性能大概是默认安全写入的3倍。使用fync参数则性能更差,一般不使用。
如果是副本集(replica set),其w=N参数,N表示安全写入到多少个副本集才返回。
参考:
http://docs.mongodb.org/manual/release-notes/drivers-write-concern/
http://docs.mongodb.org/manual/core/write-concern/
http://blog.mongodirector.com/understanding-durability-write-safety-in-mongodb/
http://whyjava.wordpress.com/2011/12/08/how-mongodb-different-write-concern-values-affect-performance-on-a-single-node/
- mongodb读写性能分析
- mongodb读写性能分析之(写)
- MongoDB 性能瓶颈分析
- MongoDB 性能分析
- MongoDB数据库性能分析
- MongoDB 性能瓶颈分析
- Mongodb的mapreduce性能分析
- MongoDB性能分析方法explain()
- mongodb性能分析方法:explain()
- mongodb性能分析方法:explain()
- MySQL读写分离性能分析
- 分布式文件系统读写性能分析
- 分布式文件系统读写性能分析
- MongoDB运行状态、性能监控,分析
- MongoDB 运行状态、性能监控,分析
- MongoDB 运行状态、性能监控,分析
- MongoDB运行状态、性能监控,分析
- MongoDB运行状态、性能监控,分析
- 这个坑,你要注意:Comparison method violates its general contract!
- (三)引用类型数组的初始化
- SQL server中转换大小写快捷键
- STM32使用JLINK或STLink下载程序需要用的的引脚
- Valid Perfect Square
- mongodb读写性能分析
- Android 图片压缩
- Leetcode:Combinations组合数&&Permutations排列数
- 工作三年的Java程序员需要掌握哪些知识?
- Unity插件NGUI实现背包系统
- iOS JSONModel使用
- mongo驱动连接
- 深入探索 Java 热部署
- PHP HTTP/HTTPS请求(支持get和post)