[转载]MongoDB查询优化原则】的更多相关文章

.在查询条件.排序条件.统计条件的字段上选择创建索引,可以显著提高查询效率. .用$or时把匹配最 多 结果的条件放在最前面,用$and时把匹配最 少 结果的条件放在最前面. .使用limit()限定返回结果集的大小,减少数据库服务器的资源消耗,以及网络传输的数据量. .尽量少用$in,而是分解成一个一个的单一查询.尤其是在分片上,$in会让你的查询去每一个分片上查一次,如果实在要用的话,先在每个分片上建索引. .尽量不用模糊匹配查询,用其它精确匹配查询代替,比如$in.$nin. .查询量大.…
在我们平常的SQL查询中,其实我们有许多应该注意的原则,以来实现SQL查询的优化,本文将为大家介绍30条查询优化原则. 首先应注意的原则 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样…
.查询优化 确认你的查询是否充分利用到了索引,用explain命令查看一下查询执行的情况,添加必要的索引,避免扫表操作. .搞清你的热数据大小 可能你的数据集非常大,但是这并不那么重要,重要的是你的热数据集有多大,你经常访问的数据有多大(包括经常访问的数据和所有索引数据).使用MongoDB,你最好保证你的热数据在你机器的内存大小之下,保证内存能容纳所有热数据. .选择正确的文件系统 MongoDB的数据文件是采用的预分配模式,并且在Replication里面,Master和Replica Se…
本文地址:http://www.cnblogs.com/egger/archive/2013/06/14/3135847.html  欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 本文将介绍操作符的使用,配合操作符,我们可以执行更加复杂的操作. 1.1 集合查询方法 find() db.collection.find()  查询集合中文档并返回结果为游标的文档集合. 语法:db.collection.find(query, projection) 参数  类型  描述 query 文档 可选. 使…
本文地址:http://www.cnblogs.com/egger/archive/2013/05/04/3059374.html   欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 查询操作符(Query Operators)可以让我们写出复杂查询条件,让我们使用的过程更加灵活. 官方文档中使用的“field”单词,RDBMS中是字段的意思,但是MongoDB作为文档数据库,使用的BSON格式作为数据存储格式.field对应key,我这里还是把他翻译成“字段”而不是“键”.若有不妥,请指出. 演示…
开启慢查询Profiling Profiling级别说明 0:关闭,不收集任何数据. 1:收集慢查询数据,默认是100毫秒. 2:收集所有数据 1.通过修改配置文件开启Profiling 修改启动mongo.conf,插入以下代码 #开启慢查询,200毫秒的记录 profile = 1 slowms = 200 2.在启动mongodb服务以后,通过mongoshell来进行临时性打开启,只要关闭了mongodb服务,下次开启就不会启动,还得再开一次 (1).在mongodb有权限的情况下,通过…
引入 与Mysql数据库一样,MongoDB也有自己的查询优化工具,explain和慢日志 explain shell命令格式 db.collection.explain().<method(...)> 支持的method方法有: aggregate() count() find() remove() update() distinct() findAndModify() 例如: db.products.explain().remove( { category: "apparel&q…
如果你从来没有接触MongoDB或对MongoDB有一点了解,如果你是C#开发人员,那么你不妨花几分钟看看本文.本文将一步一步带您轻松入门. 阅读目录 一:简介 二:特点 三:下载安装和开启服务器 四:使用mongo.exe 执行数据库增删改查操作 五:更多命令 六:MongoDB语法与现有关系型数据库SQL语法比较 七:可视化的客户端管理工具MongoVUE 八:在C#中使用官方驱动操作MongoDB 九,在C#中使用samus驱动操作MongoDB 十:写个批处理,方便开启Mongodb服务…
摘要: 在MySQL中,慢查询日志是经常作为我们优化查询的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是开启Profiling功能.该工具在运行的实例上收集有关MongoDB的写操作,游标,数据库命令等,可以在数据库级别开启该工具,也可以在实例级别开启.该工具会把收集到的所有都写入到system.profile集合中,该集合是一个capped collection.更多的信息见:http://docs.mongodb.org/manual/tutorial/manage-th…
MongoDB 标准连接字符串 mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]] 注:并非所有MongoDB驱动都支持完整的连接字符串,不支持此格式连接字串的驱动会有替代连接方案,具体请参照驱动自身的说明文档.  mongodb:// 是连接字串必须的前缀字串  username:password@ 可选项,连接到数据库后会尝试验证登陆 …
MongoDB的$inc修改器相当于编程语言中的 “+=”“$inc”只能用于操作数值类型的数据,包括整数.长整数和双精度浮点数,用于其他类型的数据会导致操作失败. >db.users.findOne() { “_id” : ObjectId(“4e91165aca685bef6dd86d3d”), “relationships” : { “friends” : , “enemies” : }, “sex” : “mail”, “username” : “joe” } >db.users.up…
作为一个NoSql数据库的代表,存取多媒体数据,应该是强项吧?那么,图片在mongoDB里是如何存取的呢?(其实,关系型数据库存取图片也一点问题没有,所以我看NoSql的强项不在于是否存储多媒体,而在于采用键值对的方式来存储数据.) mongoDB存取图片有两种方式: "由于MongoDB的文档结构为BJSON格式(BJSON全称:Binary JSON),而BJSON格式本身就支持保存二进制格式的数据,因此可以把文件的二进制格式的数据直接保存到MongoDB的文档结构中.但是由于一个BJSON…
MongoDB已经使用很长一段时间了,基于MongoDB的数据存储也一直没有使用到权限访问(MongoDB默认设置为无权限访问限制),今天特地花了一点时间研究了一下,研究成果如下: 注:研究成果基于Windows平台 MongoDB在本机安装部署好后 1. 输入命令:show dbs,你会发现它内置有两个数据库,一个名为admin,一个名为local.local好像没啥用,如果哪位在使用过程中发现了这个local表的用途,希望能够留言提醒,那我们就专心来说说admin表 2. 输入命令:use…
索引能够极大的提高查询的效率.在数据库中简历索引必不可少. 在MongoDB中可以很轻松的创建索引. 默认索引_id_ 开启MongoDB服务器,创建数据库cnblogs,创建集合Users .(关于这部分知识请看上一篇MongoDB开发学习(1)开天辟地,经典入门) 在shell窗口键入如下命令查询集合中所有索引: > db.Users.getIndexes() 从输出的结果我们可以看到,系统已经默认为Users集合创建了一个索引_id_. MongoDB在每个集合里有个默认的“_id”的“字…
原文地址:http://www.cnblogs.com/xumingxiang/archive/2012/04/08/2437468.html 如果你从来没有接触MongoDB或对MongoDB有一点了解,如果你是C#开发人员,那么你不妨花几分钟看看本文.本文将一步一步带您轻松入门. 阅读目录 一:简介 二:特点 三:下载安装和开启服务器 四:使用mongo.exe 执行数据库增删改查操作 五:更多命令 六:MongoDB语法与现有关系型数据库SQL语法比较 七:可视化的客户端管理工具Mongo…
本教程基于C#驱动 v1.6.x . Api 文档见此处: http://api.mongodb.org/csharp/current/. 简介 本教程介绍由10gen支持的,用于MongoDB的C#驱动.C# 驱动由两个类库组成:BSON Library和C# Driver. BSON Library 可以独立于 C# Driver 使用. C# Driver 则必须需要 BSON Library. 你还可能对 C# 驱动序列化教程 感兴趣.它是一个另外的教程因为它涵盖了很多资料. 下载 C#…
本文介绍数据库的4个基本操作:创建.读取.更新和删除(CRUD). 接下来的数据库操作演示,我们使用MongoDB自带简洁但功能强大的JavaScript shell,MongoDB shell是一个独立的DB客户端(它也是功能完备的JavaScript解释器 可以运行任何JavaScript程序),MongoDB shell的使用介绍请阅读博文<NoSQL学习之路(三):MongoDB Shell的使用>. CRUD 1.C 创建 insert函数添加一个文档到集合里面. 直接将文档作为参数…
MongoDB shell MongoDB自带简洁但功能强大的JavaScript shell.JavaScript shell键入一个变量会将变量的值转换为字符串打印到控制台上. 下面介绍基本的操作,一些注意事项.数据库CRUD操作将在下面的篇幅中介绍<NoSQL学习之路 (四):创建.读取.更新.删除(CRUD)> 打开命令提示(cmd.exe).进入到MongoDB解压的目录的bin目录下,即D:\NoSQL\mongodb-win32-x86_64-2.4.3\bin;然后执行mong…
数据类型 基本数据类型 MongoDB的文件存储格式为BSON,同JSON一样支持往其它文档对象和数组中再插入文档对象和数组,同时扩展了JSON的数据类型.与数据库打交道的那些应用.例如,JSON没有日期类型,这会使得处理本来简单的日期问题变得非常繁琐.只有一种数字类型,没法区分浮点数和整数,更不能区分32位和64位数字.也没有办法表示其他常用类型,如正则表达式或函数. 下面是MongoDB的支持的数据类型: null    null用于表示空值或者不存在的字段. {"x":null}…
最近开始研究MySQL和MongoDB,发现这方面资料不多.尤其是真正的说到点子上的文章,太少了. 有一些对比测试的文章基本上都是瞎测,测试方法都测到了马腿上,得出的结论基本上都是NoSQL毫无价值 容我借用Russell Smith 的那句话:不是MongoDB不行,是你不懂. 让我来分析一下MongoDB的真正性能吧. 有说MongoDB慢 反对:不设其他唯一索引的情况下,只用_id 在普通办公电脑上每秒插入几万,在普通x86服务器上每秒插入十几万,你好意思说这个性能低?比mysql强出一个…
mongodb由C++编写,其名字来自humongous这个单词的中间部分,从名字可见其野心所在就是海量数据的处理.关于它的一个最简洁描述为:scalable, high-performance, open source, schema-free, document-oriented database.MongoDB的主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的RDBMS系统(丰富的功能)架起一座桥梁,集两者的优势于一身. 安装使用: 首先在Ubuntu上安装MongoDB.…
项目场景:Mongo在首次查询特慢,后面就好的.如果长时间不查询,下次开始的第一次又将非常慢,于是从链接当时多方面,排查最终发现还是mongo索引建的有问题. MongoDB在大批量数据查询时经常会遇到查询耗时长,通常情况采用建各种索引来优化. 首先第一步排查,可以在查询后使用.explain()来查看查询数据轨迹,便于分析每个分片的查询索引. db.Collection.find({}).explain() 查看索引,如果不位可以根据查询条件,新建索引. 1.查询索引 db.COLLECTIO…
1.  启动和停止MongoDB: 执行mongod命令启动MongoDB服务器.mongod有很多可配置的选项,我们通过mongod --help可以查看所有选项,这里仅介绍一些主要选项:    --dbpath:    缺省情况下数据库的数据目录为/data/db.对于Windows平台,如果当前的可执行文件位于D盘,那么其缺省数据目录为D:\data\db.我们可以通过这个选项为服务程序重新指定数据目录.如果当前主机运行多个mongod,那么必须为每个服务程序指定不同的数据目录,因为当mo…
原文: http://dockone.io/article/455 如果你已经构建了一些多容器的应用程序,那么肯定需要定义一些网络规则来设置容器间的通信.有多种方式可以实现:可以通过--expose参数在运行时暴露端口,或者在Dockerfile里使用EXPOSE指令.还可以在Docker run的时候通过-p或者-P参数来发布端口.或者通过--link链接容器.虽然这些方式几乎都能达到一样的结果,但是它们还是有细微区别.那么到底应该使用哪一种呢? TL:DR 使用-p或者-P来创建特定端口绑定…
MongoDB查询优化-MongoDB Profiler MongoDB Profiler 概述 官方文档:https://docs.mongodb.com/manual/tutorial/manage-the-database-profiler/index.html 熟悉 Mysql 的人应该知道,Mysql 是有个慢查询日志的,它可以帮助我们进行优化我们的 sql,并提高我们系统的稳定性和流畅性.那么 MongoDB 中是否也有类似的功能吗? 是有的,它就是 Database Profile…
[原文地址]https://docs.mongodb.com/manual/ CRUD操作(四) 1 查询方案(Query Plans) MongoDB 查询优化程序处理查询并且针对给定可利用的索引选择最有效的查询方案.然后每次执行查询时,查询系统使用此查询方案. 查询优化程序仅缓存可能有多种切实可行的方案的查询计划. 对于每一个查询,查询规划者在查询方案高速缓存中搜索适合查询形式的查询方案.如果没有匹配的查询方案,查询规划者生成几个备选方案并在一个实验周期内做出评估.查询规划者选择获胜的方案,…
1. 索引设计原则 索引设计不合理或缺少索引都会对数据库的性能造成障碍,高效的索引对于获得良好的性能非常重要. 设计索引时的一些原则: ◊ 索引并不是越多越好,一个表中如果有大量的索引,不仅占用大量的磁盘空间,而且会影响INSERT.DELETE.UPDATE等语句的性能.当表中数据更改的同时,索引也会进行调整和更新. ◊ 避免对经常更新的表进行过多的索引,并且索引中的列尽可能少.而对经常用于查询的字段应该创建索引,但要避免添加不必要的字段. ◊ 数据量小的表最好不要使用索引,由于数据较少,查询…
centos yum 安装 mongodb 以及php扩展 投稿:hebedich 字体:[增加 减小] 类型:转载 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 一,安装mongodb,php扩展 ? 1 [root@localhost ~]# yum install php-pecl-mongo mongodb mongodb-devel mongodb-server php扩展,mongodb服务端,mongodb客…
Explain 从之前的文章中,我们可以知道explain()能够提供大量与查询相关的信息.对于速度比较慢的查询来说,这是最重要的诊断工具之一.通过查看一个查询的explain()输出信息,可以知道查询使用了哪个索引,以及是如何使用的. 最常见的explain()的输出有两种类型:使用索引的查询和没有使用索引的查询. 在上一篇MongoDB的博客可以看到两种类型的explain如下: 1. 没有使用索引时 { "cursor" : "BasicCursor", &q…
背景: MongoDB和MySQL一样,都会产生慢查询,所以都需要对其进行优化:包括创建索引.重构查询等.现在就说明在MongoDB下的索引相关知识点,可以通过这篇文章MongoDB 查询优化分析了解MongoDB慢查询的一些特点. 执行计划分析: 因为MongoDB也是BTree索引,所以使用上和MySQL大致一样.通过explain查看一个query的执行计划,来判断如何加索引,explain在3.0版本的时候做了一些改进,现在针对这2个版本进行分析: 3.0之前: zjy:PRIMARY>…