乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
Mongodb 1.90 使用上的一些心得
2017-09-07 23:37:21
85
0
0
admin
> 一些常用技巧 #创建文档时预留空间 一条数据如果变大导致预留空间(可以理解成上一条数据和下一条数据中间的磁盘空间)不够的时候,mongoDB 会不得不移动文档,造成性能损失。 在插入数据时,如果可以确定这个文档日后会更新且变大,可以在创建时创建一个很大的字段,以后操作时再把这个字段“$unset”掉。 *** #关于定时删除数据 * 使用固定集合(capped)限定表的大小 整个表的结构类似一个环(参考rrdtool),数据写满后新数据写入会覆盖旧数据 ``` db.createCollection( "log", { capped: true, size: 100000 } ) //单位字节 //固定集合的特有排序:自然排序,就是数据在磁盘上的顺序 db.cappedCollection.find().sort( { $natural: -1 } ) ``` *** * TTL 删数据 当索引中有date格式的数据的时候,这个时间早于当前系统时间expireAfterSeconds秒时Mongo的后台数据会删除该数据。 1. 如果索引是数组且有多个date 格式时间的话,默认用最早的 2. 如果索引中没有date 格式的数据或者文档中没有该被索引的键的话,无效 3. Mongodb 每分钟删除一次数据 4. TTL 只在Primary上有效,Secondary会同步Parmary上的删除操作,自己不会主动删除数据 ``` db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 } ) ``` *** * 给每个文档起名时加上对应的时间段,到时间直接将其删除。
上一篇:
Mongodb 1.70 aggregation
下一篇:
Mongodb 2.0 Replic
文档导航