【NoSql】MongoDb
【NoSql】MongoDb
一. 文档
1. 官网
2. C# Driver
3. C# 开发文档
二. 命令
1. --config "C:\mongodb\mongod.cfg" 设置 config 文件, 推荐通过设置配置文件来启动mongod
三. 可视化管理工具
四. 注意点(与 Sql Server 的不同点)
1. _id Mongo 的主键,建议自己维护该字段(可用自增或Guid),查询条件已该字段为主以提供性能。
2. Mongo 是区分大小写的,这个要格外注意
3. 修改字段时,如果字段不存在则会新增字段
五. 适用场景
1. 插入
2. 完全命中索引的查询,更新,删除
3. 不适用 全文索引
六. 性能测试
1. 环境 : 系统 Win10, CPU i5-5257U 2.70GHz, 内存 8G, 硬盘 APPLE SSD SM0128G
2. 插入:
a. 数据准备:实体 包含6个字段,_id 自增,4个string类型内容30个随机中文,一个随机int
b. 每次插入10w条,单线程循环100次
c. 结果 : 平均耗时:3.887秒
IO占用:11M(注没有跑满)
内存占用 : 3.8G(注没有跑满,不过增长不是线性的,内部应该有内存控制)
CPU : 占用不多
硬件资源没有跑满,多线程下总耗时会下降但单个耗时会上升
3. 查询总量:
a. 单线程循环100次
b. 结果 :平均耗时 : 1毫秒
应该插入和删除时内部有字段来标志总数,所以查询时不需要全表扫描,直接返回标志
4. 查询按 _id :
a. 随机生成1000w以内的数字,以此为条件查询,单线程循环100次
b. 结果 :平均耗时 : 1毫秒
5. 查询分页(Skip+Limit)
a. 以 _id 排序,随机生成页数,每页100条数据,单线程循环100次
b. 结果 :页数越大,耗时越高
页数 10 : 平均耗时 5 毫秒
页数 100: 平均耗时 28 毫秒
页数 1000: 平均耗时 225 毫秒
页数 10000: 平均耗时 1965 毫秒
6. 查询分页(Maxid+Limit)
a. 以 _id 排序,随机生成 Maxid ,以此为判断条件,每页100条数据,单线程循环100次
b. 结果 :平均耗时 2 毫秒
比 (Skip + Limit)的性能高非常多,且耗时不会随着页数增大而增大
不过需要把上一次查询的最大 _id 作为条件且 _id 为 int 类型
7. 删除
a. 随机生成_id ,以此为判断条件,单线程循环100次
b. 结果 : 平均耗时 1 毫秒
8. 更新
a. 随机生成实体,以此实体的 _id 为判断条件,单线程循环100次
b. 结果 : 平均耗时 1 毫秒
9. 结论 :
a. 完全命中 _id 索引的操作都是非常快的,都在毫秒级
b. 对硬件的要求, 对 CPU 要求不高, 硬盘 10M 写入以上, 内存 越高越好
【NoSql】MongoDb的更多相关文章
- 【转】MongoDB资料汇总专题
1.MongoDB是什么 MongoDB介绍PPT分享 MongoDB GridFS介绍PPT两则 初识 MongoDB GridFS MongoDB GridFS 介绍 一个NoSQL与MongoD ...
- 【NoSql】Redis
[NoSql]Redis 一. 文档 1. 官网 2. Windows 安装包 3. C# Driver a. ServiceStack.Redis 最新版本是收费的 b. StackExchange ...
- 【vue】MongoDB+Nodejs+express+Vue后台管理项目Demo
¶项目分析 一个完整的网站服务架构,包括: 1.web frame ---这里应用express框架 2.web server ---这里应用nodejs 3.Database ---这里 ...
- 【八】MongoDB管理之分片集群实践
MongoDB中集群有三种:主从复制.副本集.分片集群.目前副本集已经替代主从复制架构,成为官方建议采用的架构,而分片集群相较于前两种,更加复杂. 下面是生产环境中常用的分片集群架构: 我们知道,分片 ...
- 【七】MongoDB管理之分片集群介绍
分片是横跨多台主机存储数据记录的过程,它是MongoDB针对日益增长的数据需求而采用的解决方案.随着数据的快速增长,单台服务器已经无法满足读写高吞吐量的需求.分片通过水平扩展的方式解决了这个问题.通过 ...
- 【四】MongoDB索引管理
一.索引介绍 在mongodb中,索引用来支持高效查询.如果没有索引,mongodb必须在整个集合中扫描每个文档来查找匹配的文档.但是如果建立合适的索引,mongodb就可以通过索引来限制检查的文档数 ...
- 【原创】MongoDB安装配置详解(标注两个坑)
1.下载安装 3.4正式版([坑]不要最新版,有可能进度卡在这个位置不动,等了半个小时也没什么反映,) http://downloads.mongodb.org/win32/mongodb-win32 ...
- 【转】PHP操作MongoDB【NoSQL】
原文:http://blog.sina.com.cn/s/blog_4b67d3240101519b.html 一.MongoDB简介 MongoDB (名称来自"humongous&quo ...
- 【翻译】MongoDB指南/聚合——聚合管道
[原文地址]https://docs.mongodb.com/manual/ 聚合 聚合操作处理数据记录并返回计算后的结果.聚合操作将多个文档分组,并能对已分组的数据执行一系列操作而返回单一结果.Mo ...
随机推荐
- [SGU495] Kids and Prizes (概率dp)
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=495 题目大意:有N个盒子,里面都放着礼物,M个人依次去选择盒子,每人仅能选一次,如 ...
- APP开发和web开发的区别
1.web开发: 1.浏览器直接访问,协议是http,基本都是PC访问,也就是在家和办公场合,网络比较好. 2.web如果多个服务集成的话使用的是ESB来统一集成 2.APP开发 1.手机app客户端 ...
- Bigendian 奇数内存地址取整形crash
在大端机器(solaris-sparc,hpux-hppa)上从奇数内存地址取一个整形(2 or 4 bytes)会崩溃.如: unsigned short Res = *(unsigned shor ...
- C++设计模式-Flyweight享元模式
Flyweight享元模式 作用:运用共享技术有效地支持大量细粒度的对象. 内部状态intrinsic和外部状态extrinsic: 1)Flyweight模式中,最重要的是将对象分解成intrins ...
- 您只能在 HTML 输出流中使用 document.write。如果您在文档已加载后使用它(比如在函数中),会覆盖整个文档。
刚刚接触JS,看到这句话时一时没搞懂,想了终于有了一些眉目,意思就是在文档加载过后,如果我们用比方说按钮的方式重新加载文档,就会把文档都覆盖: 列如: <!DOCTYPE html> &l ...
- Linux学习四:UDP编程(上)
关于UDP和TCP对比优缺,这里就不说了. 使用UDP代码所掉用的函数和用于TCP的函数非常类似,这主要因为套接口库在底层的TCP和UDP的函数上加了一层抽象,通过这层抽象使得编程更容易,但失去了一些 ...
- iPad 控件 UIPopoverPresentationController 使用 iPhone可用
UIPopoverController 在iOS9之后被废弃了,,, iOS8 新控件UIPopoverPresentationController可运用在iphone和iPad上,使用基本同 UIP ...
- border在IE6设置transparent无效
在ie6下给border设置transparent是无效的,解决办法如下: _border-color:tomato; /*For IE6-*/ _filter:chroma(color=tomato ...
- SpringBoot读取配置文件
项目结构 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:// ...
- dojo GridX 用法
1. 表格的加载显示 function CreateGrid() { var store = new dojo.store.Memory({ data: [ { id: 1, UserName: &q ...