MongoDB Schema Design & Indexes

Avoid large document

MongoDB里document的大小上限是16MB。但是实际情况下,大部分文档都没有这么大。如果要存储多媒体数据,则应该是用GridFS。

Avoid unnecessarily long field names

字段名在没一个文档中都会重复出现,并且是会占用存储空间的。所以小的字段名可以节省空间,特别是对于节省RAM的空间特别有用。

Use caution when considering indexes on low-cardinality fields

设置索引的字段值要足够离散,如果离散度低的话,实际上会返回很大的一个结果集。复合索引可以包含离散度低的字段,但是它们组合起来建立的索引必须是高度离散的。

Eliminate unnecessary indexes

索引是很消耗资源的,占用RAM,在document的字段值更新时,索引也会造成额外的硬盘I/O,所以,干掉不必要的索引。

Remove indexes that are prefixes of other indexes

如果某一个字段的索引已经是其他索引的前缀字段了,那么单独的这个索引就是没有必要的。比如,复合索引 last_name, first name,这个索引在查询last_name的时候同样有效。

Use a compound index rather than index intersection

在根据多个字段查询的时候,复合索引是一个更优的选择

Use partial index

使用不完全索引,可以减少空间的消耗和索引创建和维护时的性能消耗。

Avoid regular expressions that are not left anchored or rooted

查询条件如果以通配符开头的话是非常低效的。

Use index optimizations available in WiredTiger storage engine

WiredTiger引擎下会自动压缩索引。

Understand any existing document schema - MongoDB Compass

MongoDB Compass 是个好工具,可以熟悉一下它的使用。

Identify & remove obsolete indexes

即使辨别并移除废弃的索引

加载评论框需要科学上网