MongoDB学习笔记系列博客
Windows平台安装MongoDB
Linux平台安装MongoDB
MongoDB连接
> use admin
switched to db admin
> db.shutdownServer()
MongoDB自带了两个导入、导出的工具:mongoimport和mongoexport。可以通过mongoimport导入JSON、CSV和TSV文件,这通常用于从关系型数据库想MongoDB加载数据。
mongoimport -d stocks -c values --type csv --headerline stocks.csv
本例中,将一个名为stocks.csv的CSV文件导入到了stocks数据库的values集合里。–headerline标志标明了CSV的第一行包含字段名。可以通过mongoimport –help看到所有的导入选项。
可以通过mongoimport 将一个集合的所有数据导出到一个JSON或CSV文件里。
mongoexport -d stocks -c values -o stocks.csv
这条命令会将数据导出到stocks.csv文件。通过mongoexport –help看到所有的导入选项。
http://write.blog.csdn.net/mdeditor#!postId=74855050
http://www.runoob.com/mongodb/mongodb-mongostat-mongotop.html
数据库命令serverStatus
这是一个数据库级别的命令,执行语句db.serverStatus(),输出有关此实例的各种信息,针对所有此实例上的数据库。
db.serverStatus()
//只显示部分内容
{
"uptime" : 21.0, //表示此实例进程已激活的总时间,单位是秒
"localTime" : ISODate("2017-07-09T05:28:17.007Z"), //表示实例所在服务器的当前时间
"globalLock" : {
"totalTime" : NumberLong(20935000), //数据库启动后运行的总时间,单位是微秒
"currentQueue" : { //表示因为锁引起读写队列数
"total" : 0,
"readers" : 0, //等待读锁的操作数
"writers" : 0 //等待写锁的操作数
},
"activeClients" : { //连接的激活客户端写操作的总数
"total" : 10,
"readers" : 0, //激活客户端读操作数
"writers" : 0 //激活客户端写操作数
}
},
"mem" : { //表示当前内存使用情况
"bits" : 64, //mongod运行的目标机器的架构
"resident" : 96, //当前被使用的物理内存总量,单位MB
"virtual" : 271, //MongoDB进程映射的虚拟内存大小,单位MB
"supported" : true, //表示系统是否支持可扩展内存
"mapped" : 0, //映射数据文件所使用的内存大小,单位MB
"mappedWithJournal" : 0 //映射journaling所使用的内存大小,单位MB
},
}
数据库命令stats
这是一个现实具体某个数据库统计信息的方法。
db.stats()
{
"db" : "test", //表示统计的哪个数据库
"collections" : 4, //在这个数据接口包含的集合数
"views" : 0,
"objects" : 112, //数据库中所有记录总数
"avgObjSize" : 234470.9375, //数据库中文档的平均大小,单位字节
"dataSize" : 26260745.0, //数据库中包含的所有文档记录的总大小
"storageSize" : 21544960.0, //分配给数据库的总的存储空间大小
"numExtents" : 0, //所有集合占用的区间总数
"indexes" : 8, //数据库中创建的索引总数
"indexSize" : 200704.0, //数据库中索引占用的存储空间大小
"ok" : 1.0
}
top
top命令会显示每个数据库的操作计数器。如果应用程序使用了多个物理数据库,或者你想看看操作的平均耗时,可以使用这个命令。
use admin
db.runCommand({top:1})
MMS
MMS(MongoDB Management Service)是一款基于云存储管理的MongoDB可视化管理及数据库备份的工具。
Web控制台
启动mongodb加上参数–httpinterface,以你的mongodb端口号+1000进行访问,就能看到MongoDB自带的Web控制台
http://localhost:28017/
影响数据库性能的几个重要因素
1,锁
MongoDB用一个锁确保数据的一致性。但如果某种操作时间运行,其他请求和操作将不得不等待这个锁,导致系统性能降低。为了验证是否由于锁降低了性能,我们可以坚持serverStatus输出的globalLock部分的数据。如果参数globalLock.currentQueue.total的值一直较大,说明系统中有许多请求在等待锁,同时表明并发问题影响了系统的性能。
2,内存
MongoDB通过内存映射数据文件,如果数据集很大,MongoDB将占用所有可用的系统内存。正式由于内存映射机制将内存的管理交给操作系统来完成,简化了MongoDB的内存管理,提高了数据库系统的性能,但是由于不能确定数据集的大小,需要多少内存也是个未知数。
通过serverStatus输出的关于内存使用状态方面的数据,我们能够深入地了解内存使用情况。检查参数mem.resident的值,如果超过了系统内存量并且还有大量的数据文件在磁盘上,表明内存过小。检查mem.mapped的值,如果这个值大于系统内存量,那么针对数据库的一些读操作将会引起操作系统的缺页操作,内存的换入换出将会降低系统的性能。
3,连接数
有时候,客户端的连接数超过了MongoDB数据库服务器处理请求的能力,这也会降低系统的性能。可以通过serverStatus输出的关于连接数方面的参数进一步分析。参数globalLock.activeClients表示当前正在进行读写操作客户端的连接数,current表示当前客户端到数据库实例的连接数,available表示可用连接数。对于读操作大的应用程序,我们可以增加复制集成员数,将读操作分发到secondary节点上,对于写操作大的应用程序,可以通过部署分片集群来分发写操作。
性能调优
1,为提升性能检查索引和查询
发现性能问题时,应该首先检查索引,让每个操作扫描尽可能少的文档。
保证没有冗余的索引,因为冗余索引会占用磁盘空间,消耗更多内存,每次写入时还需要更多工作。
2,添加内存
3,提升磁盘性能
4,水平扩展
5,寻求专业帮助
基于角色的权限控制(Role-Based Access Control)
https://docs.mongodb.com/manual/security/
《大数据存储 MongoDB实战指南》
《MonoDB实战》
《MongoDB权威指南》
菜鸟教程 MongoDB