Table of Contents
测试代码:
t1 = db.storage_size;
test = function(cnt, obj, index){
t1.drop()
t1.ensureIndex(index);
docs1 = new Array();
for (var i = 0; i < cnt; ++ i){
docs1[i] = obj;
}
t1.insert(docs1);
print('db.stats() ' + cnt + ' ' + tojson(obj));
printjson(t1.stats());
stats = t1.stats();
print( 'NOTICE: ' + cnt + ' ' + tojson(obj) + ' record_size:' + stats["avgObjSize"] + ' index_size: ' + stats["indexSizes"]["x_1"] / 1000 + ' ' + stats["indexSizes"]["xxxxxxxxxx_1"] / 1000 );
tojson(t1.stats());
}
test(1, {x: 1}, {x:1});
test(1, {x: 1024*1024*1024*8}, {x:1});
test(1, {x: ''}, {x:1});
test(1, {x: 'a'}, {x:1});
test(1, {x: 'aaa'}, {x:1});
test(1, {x: '好'}, {x:1});
test(1, {x: '中国'}, {x:1});
test(1, {x: '北京市'}, {x:1});
test(1, {x: '我爱北京天安门'}, {x:1});
print( 'NOTICE: ---------------------------- ' );
test(1000, {x: 1}, {x:1});
test(1000, {x: 1024*1024*1024*8}, {x:1});
test(1000, {x: ''}, {x:1});
test(1000, {x: 'a'}, {x:1});
test(1000, {x: 'aaa'}, {x:1});
test(1000, {x: '好'}, {x:1});
test(1000, {x: '中国'}, {x:1});
test(1000, {x: '北京市'}, {x:1});
test(1000, {x: '我爱北京天安门'}, {x:1});
print( 'NOTICE: ---------------------------- ' );
test(1000, {xxxxxxxxxx: 1}, {xxxxxxxxxx:1});
test(1000, {xxxxxxxxxx: 1024*1024*1024*8}, {xxxxxxxxxx:1});
test(1000, {xxxxxxxxxx: ''}, {xxxxxxxxxx:1});
test(1000, {xxxxxxxxxx: 'a'}, {xxxxxxxxxx:1});
test(1000, {xxxxxxxxxx: 'aaa'}, {xxxxxxxxxx:1});
test(1000, {xxxxxxxxxx: '好'}, {xxxxxxxxxx:1});
test(1000, {xxxxxxxxxx: '中国'}, {xxxxxxxxxx:1});
test(1000, {xxxxxxxxxx: '北京市'}, {xxxxxxxxxx:1});
test(1000, {xxxxxxxxxx: '我爱北京天安门'}, {xxxxxxxxxx:1});
...
结果:
NOTICE: 1 { "x" : 1 } record_size:36 index_size: 8.176 NaN
NOTICE: 1 { "x" : 8589934592 } record_size:36 index_size: 8.176 NaN
NOTICE: 1 { "x" : "" } record_size:32 index_size: 8.176 NaN
NOTICE: 1 { "x" : "a" } record_size:32 index_size: 8.176 NaN
NOTICE: 1 { "x" : "aaa" } record_size:36 index_size: 8.176 NaN
NOTICE: 1 { "x" : "好" } record_size:36 index_size: 8.176 NaN
NOTICE: 1 { "x" : "中国" } record_size:36 index_size: 8.176 NaN
NOTICE: 1 { "x" : "北京市" } record_size:40 index_size: 8.176 NaN
NOTICE: 1 { "x" : "我爱北京天安门" } record_size:52 index_size: 8.176 NaN
NOTICE: ----------------------------
NOTICE: 1000 { "x" : 1 } record_size:36.008 index_size: 40.88 NaN
NOTICE: 1000 { "x" : 8589934592 } record_size:36.008 index_size: 40.88 NaN
NOTICE: 1000 { "x" : "" } record_size:32 index_size: 32.704 NaN
NOTICE: 1000 { "x" : "a" } record_size:32 index_size: 32.704 NaN
NOTICE: 1000 { "x" : "aaa" } record_size:36.008 index_size: 32.704 NaN
NOTICE: 1000 { "x" : "好" } record_size:36.008 index_size: 32.704 NaN
NOTICE: 1000 { "x" : "中国" } record_size:36.008 index_size: 40.88 NaN
NOTICE: 1000 { "x" : "北京市" } record_size:40.008 index_size: 40.88 NaN
NOTICE: 1000 { "x" : "我爱北京天安门" } record_size:52.02 index_size: 57.232 NaN
NOTICE: ----------------------------
NOTICE: 1000 { "xxxxxxxxxx" : 1 } record_size:44.012 index_size: NaN 40.88
NOTICE: 1000 { "xxxxxxxxxx" : 8589934592 } record_size:44.012 index_size: NaN 40.88
NOTICE: 1000 { "xxxxxxxxxx" : "" } record_size:40.008 index_size: NaN 32.704
NOTICE: 1000 { "xxxxxxxxxx" : "a" } record_size:40.008 index_size: NaN 32.704
NOTICE: 1000 { "xxxxxxxxxx" : "aaa" } record_size:44.012 index_size: NaN 32.704
NOTICE: 1000 { "xxxxxxxxxx" : "好" } record_size:44.012 index_size: NaN 32.704
NOTICE: 1000 { "xxxxxxxxxx" : "中国" } record_size:48.032 index_size: NaN 40.88
NOTICE: 1000 { "xxxxxxxxxx" : "北京市" } record_size:48.032 index_size: NaN 40.88
NOTICE: 1000 { "xxxxxxxxxx" : "我爱北京天安门" } record_size:60 index_size: NaN 57.232
NOTICE: ----------------------------
NOTICE: 1000 { "x" : "" } record_size:32 index_size: 32.704 NaN
NOTICE: 1000 { "x" : "a" } record_size:32 index_size: 32.704 NaN
NOTICE: 1000 { "x" : "aa" } record_size:32 index_size: 32.704 NaN
NOTICE: 1000 { "x" : "aaa" } record_size:36.008 index_size: 32.704 NaN
NOTICE: 1000 { "x" : "aaaa" } record_size:36.008 index_size: 32.704 NaN
NOTICE: 1000 { "x" : "aaaaa" } record_size:36.008 index_size: 40.88 NaN
NOTICE: 1000 { "x" : "aaaaaa" } record_size:36.008 index_size: 40.88 NaN
NOTICE: 1000 { "x" : "aaaaaaa" } record_size:40.008 index_size: 40.88 NaN
NOTICE: 1000 { "x" : "aaaaaaaa" } record_size:40.008 index_size: 40.88 NaN
NOTICE: 1000 { "x" : "aaaaaaaaa" } record_size:40.008 index_size: 40.88 NaN
NOTICE: 1000 { "x" : "aaaaaaaaaa" } record_size:40.008 index_size: 40.88 NaN
NOTICE: 1000 { "x" : "aaaaaaaaaaa" } record_size:44.012 index_size: 40.88 NaN
NOTICE: 1000 { "x" : "aaaaaaaaaaaa" } record_size:44.012 index_size: 40.88 NaN
NOTICE: ----------------------------
NOTICE: 1000 { "x" : 1 } record_size:36.008 index_size: 40.88 NaN
NOTICE: 1000 { "xx" : 1 } record_size:36.008 index_size: NaN NaN
NOTICE: 1000 { "xxx" : 1 } record_size:36.008 index_size: NaN NaN
NOTICE: 1000 { "xxxx" : 1 } record_size:36.008 index_size: NaN NaN
NOTICE: 1000 { "xxxxx" : 1 } record_size:40.008 index_size: NaN NaN
NOTICE: 1000 { "xxxxxx" : 1 } record_size:40.008 index_size: NaN NaN
NOTICE: 1000 { "xxxxxxx" : 1 } record_size:40.008 index_size: NaN NaN
NOTICE: 1000 { "xxxxxxxx" : 1 } record_size:40.008 index_size: NaN NaN
NOTICE: 1000 { "xxxxxxxxx" : 1 } record_size:44.012 index_size: NaN NaN
mongo中所有的数字都是都是按照 double (8 byte) 存的,
int64 的范围中, 2^52 以下表达为double是不损失精度的, 2^52以上, 表达为double就会丢失精度, 所以如果需要存int64, 就需要显示使用NumberLong("2090845886852")
注意int64是带符号的.