欢迎来到天天文库
浏览记录
ID:11810578
大小:24.19 KB
页数:6页
时间:2018-07-14
《mongodb阶段性技术总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、mongodb阶段性技术总结生产环境最佳实践1.linux系统:1】关闭文件系统/分区的atime选项Vi/etc/fstab在对应的分区项后面添加noatime,nodiratimeLABEL=/1/ext3defaults11LABEL=/data1/dataext4defaults,noatime,nodiratime122】设置文件句柄4k+,目前该配置已经集成到启动脚本中。Vi/etc/security/limit.conf*softnproc65536*hardnproc65536*softnofile65536*hardnofile655363
2、】不要使用largevmpage(不要使用大内存页选项)Linux大内存页参考:http://linuxgazette.net/155/krishnakumar.html4】用dmesg查看主机的信息。2.linux文件系统的选择:Mongodb采用预分配的大文件来存储数据,我们推荐1】ext42】xfs3.内核版本:网络上对2.6.33-31以及2.6.32的表现持怀疑度,而强力推荐2.6.364.线程堆栈的尺寸默认的线程堆栈尺寸为10m,调整为1m,已经集成在启动脚本中。项目过程中的总结与建议1.大小写问题mongodb是默认区分大小写的,但是这会不会衍
3、生出跟mysql一样的问题?(mysql区分大小写,导致windows与linux下的表名,字段名不一致)。如果无特别用途,建议表名,字段名全部用小写字母。2.尽可能的缩短字段名的长度mongodb的schemafree导致了每笔数据都要存储他的key以及属性,这导致了这些数据的大量冗余。开发同事也许考虑到,从易读性出发设计的key基本比较长,基本都是按照起字面意思去设计的。这导致key很长。对应的数据存储占用了很大的空间。必要的时候,可以考虑建立一个key与实际意义的map表,尽量降低key的长度。示例定义://基本信息staticfinalString_
4、ID="_id";staticfinalStringSTATUS_CODE="sc";//缓冲staticfinalStringDATE="date";staticfinalStringMAX_AGE="age";//内容staticfinalStringCONTENT="content";staticfinalStringCONTENT_TYPE="ctype";staticfinalStringCONTENT_LENGTH="clen";staticfinalStringZIP="zip";3.mongodb单表最大索引数为64无索引排序的最大数据量为4
5、M,超过则报错退出。建议where条件尽量落在索引字段上,排序字段需要建立索引,索引的使用原则与oraclemysql一致,尽量降低索引数量,索引长度。mongodb的查询每次只能用到一个索引,对数据的查询不会“并发”执行例如:db.tab.find({'id'=1,'name'=2})如果‘id’,‘name'列上分别有索引对查询效率提升意义不大,如果索引为('id','name')则大幅提升效率。4.mongodb添加字段如果添加字段且带有default值,需要全部数据都要修改,这也是设计阶段需要考虑的事情,这个问题的另外一种解法是应用代码里做一次判断。
6、5.测试过程的密码问题对于用作数据库使用的Mongodb,在代码测试阶段都应加上密码验证,目前上线阶段基本都会在密码验证方面出现问题(做缓存使用的可以不做密码验证)。6.数据源连接方式使用连接池模式,尽量减少认证带来的性能额外消耗建议采用标准的uri连接方式:mongodb://user:passwd@host:port,host:port/db7.Mongodb日志量正常情况下不需要开启-v日志选项。Mongodb的-v日志适合在开发环境的调试线上部署不建议采用这个参数,目前线上部署的情况,-v日志一天也会有几个G的日志量,去掉这个参数,跟数据查询相关的操
7、作就不会记日志了,数据库的内部的重要操作还是会写日志的。8.连接数大小的设置Mongodb驱动程序采用的连接池的方式连接到数据库,目前从观察到的情况是应用一开启便根据变量的设置,建立全部连接,然后提供给程序使用,并且一旦其中某个连接到数据库的访问失败,则会清空整个连接池到这台数据库的连接,并重新建立连接。而mongodb对中断连接的垃圾清理工作则是懒惰的被动清理方式,如果驱动程序端配置的连接数过大,一旦发生重连,则会导致mongo端堆积大量的垃圾连接数据,导致主机资源耗尽。建议:mongodb驱动的连接池大小的设置一般应该控制100以下,一般情况30-50足
8、够支撑应用访问。9.锁的问题Mongodb对数据库的
此文档下载收益归作者所有