MongoDB 索引数据类型优化,节省 60% 内存
虽然能够想像得到,但是直观的数据图可能让我们更深刻的认识到。他们的测试再一次告诉我们:给索引定一个好的数据结构是多么重要。
这是测试结果图,分别是用int、MongoDB的ObjectID、base64和md5的字符串做索引产生的索引大小:
测试过程也非常简单,首先用下面脚本将各种不同数据结构的数据写入到不同的collection里:
#!/usr/bin/env python
import pymongo
import bson
from pymongo import Connectiondb = connection.test_database
print('ObjectID')
for i in range(1, 1000000):
db.objectids.insert({'i': i})print('int')
for i in range(1, 1000000):
db.ints.insert({'_id': i, 'i': i})print('Base64 BSON')
for i in range(1, 1000000):
db.base64s.insert({'_id': \
bson.Binary(hashlib.md5(str(i)).digest(),
bson.binary.MD5_SUBTYPE), 'i': i})print('string')
for i in range(1, 1000000):
db.strings.insert({'_id': hashlib.md5(str(i)).digest(), 'i': i})
然后获取每个collection的index大小,得到如下的结果,画成上面的图:
> db.base64s.stats()
{
"totalIndexSize" : 67076096,
}
> db.objectids.stats()
{
"totalIndexSize" : 41598976,
}
> db.ints.stats()
{
"totalIndexSize" : 32522240,
}
> db.strings.stats()
{
"totalIndexSize" : 90914816,}
原文链接:How to save 200% RAM by selecting the right key data type for #MongoDB
# 原文的 Alex Dong 就是“好看薄”原来的“大野狼”
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。