MongoDB学习笔记5 - 测试查询性能

大规模数据导入实验

 

在上一个实验 中,我们测试了导入数据的性能,简单总结一下测试方法:

1. Schema: 每行数据三个字段,日期、ID和当日流量,都是长整型

2. Index: inventory.create_index([('date',ASCENDING), ('id',ASCENDING)], unique=False, dropDups=False)

3. 用mongoimport导入csv数据

 

随后我们在大规模的数据上进行了测试,导入360天的数据,每天100万行记录。同样的数据导入两次,由于索引不是unique的,最终的数据库里每天每个ID有会两条数据,总共720M行记录。以下是测试结果:

 

测试 时间 数据行数 磁盘占用
导入360天数据,每天100万行记录 平均50秒/天 360M 74GB
在前面导入的基础上再一次导入同样的数据 平均60秒/天 720M 141GB

 

查询性能实验

 

在前面两次导入数据的基础上,我们测试了数据查询性能。在我们的应用里,主要场景是随机查询某个ID最近两个月的数据,所以测试方法如下:

1. 清空系统缓存

    echo 3 > /proc/sys/vm/drop_caches (需要root权限)

2. 随机选取1000个ID,查询最近60天的流量

    inventory.find({'date':{'$gte':today - 60 * 86400, '$lte':today},'id':id})

3. 计算平均查询时间

 

结果如下:

1. 查询最近60天的数据,每个查询返回120条记录,平均时间是0.28秒

2. 查询总共360天的数据,每个查询返回720条记录,平均时间是4.26秒

这样的性能对我们目前的应用来说足够了:)

你可能感兴趣的:(NoSQL)