MongoDB中的Capped Collection和GridFS

欢迎大家光顾我的淘宝店:点击进入

1 显示创建集合

     db.createCollection("c1");

     db.c1.drop();

     db.c1.stats();  查看集合的状态

     db.system.indexes.find();   查看数据库中所有索引

2 Capped Collection 固定集合

     属性1  对固定集合进行插入速度极快

     属性2  按照插入顺序的查询输出速度极快

     属性3  能够在插入最新数据时,淘汰最早的数据。

 

     用法1  储存日志信息。

     用法2  缓存一些少量的文档。

3 固定集合的使用

     创建固定集合   db.createCollection("c2",{capped:true,size:10000,max:5});

     普通集合转固定集合  db.ranCommand(convertToCapped:"c1",size:100000,max:3);

4 GridFS使用两个表来存储数据:

      files  包含元数据对象

      chunks 包含其他一些相关信息的二进制块

三个命令:put(存储), get(取得),list(列表)

       具体应用:mongofiles put testfile ---上传文件

                         mongofiles list----查看库里有那些GridFS文件

       进入库里看一下是否有新的东西:

                    >     show   collections

                        fs.chunks            

                        fs.files

        继续查看fs.files中的内容

                       db.fs.files.find()

                       各个参数:Filename:存储的文件名

                                         chunkSize:chunks分块的大小

                                         uploadDate:入库时间

                                          md5            :此文件的md5码

                                          length            文件大小,单位是字节

                      fs.files中存储的是一些基础的元素信息

                      

                       >db.fs.chunks.find()

                        _id:块自身的id

                       file_id:包含这个块的元数据库文档文件id

                       n:代表的是chunks的序号,此序号从0开始

                       data:组成文件块的二进制文件

 

                       fs.chunks中存储的是一些师姐的内容数据信息

 

5 查看文件的md5值

                    md5sum mongosniff.tar.gz

 

6 索引的建立

                     

 例子:在name上建立索引 1(升序),-1(降序)

>db.persons.ensureIndex({name:1});

当系统已有大量数据时,创建索引非常耗时,需要在后台执行,只需要指定 “background:true” 

>db.ts.ensureIndex({age:1},{background:true})

 

db.c1.getIndexKeys();//索引清单

db.c1.getIndexes();

 

7唯一索引

 只需要ensureIndex命令中指定"unique:true"即可创建唯一索引。

比如:

       >db.c1.ensureIndex({firstname:1,lastname:1},{unique:true});

注意:如果表中有两条一样的数据,就建立不了唯一索引。

删除索引:db.c1.dropIndex({age:1})

删除集合中所有的索引:db.c1.dropIndexes();但是不删除_id上的索引。

 

8 explain执行计划

explain命令让我们获知系统如何处理查询请求。

利用explain命令,我们可以很好的观察系统如何使用索引来加快检索,同时可以针对性能化索引。

 

9优化器 profile

MongoDB Databse Profiler是一种慢查询日志功能,可以作为我们优化数据库的依据。

查询是否已经开启:db.getProfilingLevel();

0表示没有开启,1表示开启

用命令:db.setProfilingLevel(1);开启慢查询日志

 

优化方案

 优化方案1 :创建索引

 

 优化方案2:限定返回结果条数

 

优化方案3:查询使用到的字段,不查询所有字段。

 

优化方案4:采用apped collection

 

优化方案5 采用Profiling慢查询日志

 

性能监控:

Mongosniff --source net lo

 

 

     

      

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值