IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    MongoDB在Ubuntu10.04下的单机性能测试

    longhao (longtask@gmail.com)发表于 2010-08-31 07:54:28
    love 0

    MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。它比纯noSQL数据库查询功能强悍,比关系数据库更面向集合。

    测试的硬件:酷睿双核3.0G,2G内存,7200转普通硬盘,Ubuntu10.04 32bit,MongoDB1.61

    安装&启动

    longhao@aliyun:~$ sudo apt-get install mongodb

    #添加一个so,否则启动不了mongodb

    longhao@aliyun:~$ sudo ln -s /usr/lib/xulrunner-devel-1.9.2.8/lib/libmozjs.so /usr/lib/libmozjs.so

    #启动

    longhao@aliyun:~$ sudo service mongodb start

    安装python库

    到github上去下载mongodb到python driver或者 git clone git://github.com/mongodb/mongo-python-driver.git pymongo

    longhao@aliyun:~$ tar zxvf pymongo.*.tar.gz

    longhao@aliyun:~$ cd pymongo

    longhao@aliyun:~$ python setup.py install

    编写测试代码

    #!/usr/bin/env python
    from pymongo import Connection
    import time,datetime

    connection = Connection('127.0.0.1', 27017)
    db = connection['testdb']
    '''
    test program execute time,use python decorator!
    '''
    def func_time(func):
    def _wrapper(*args,**kwargs):
    start = time.time()
    func(*args,**kwargs)
    print func.__name__,'run:',time.time()-start
    return _wrapper

    @func_time
    def insert(num):
    posts = db.posts
    for x in range(num):
    post = {"author": str(x)+"Mike",
    "text": "My first blog post!",
    "tags": ["mongodb", "python", "pymongo"],
    "date": datetime.datetime.utcnow()}
    posts.insert(post)

    @func_time
    def find():
    posts = db.posts
    print posts.find_one()

    @func_time
    def remove():
    posts = db.posts
    print 'count before remove:',posts.count();
    posts.remove({});
    print 'count after remove:',posts.count();

    if __name__ == "__main__":
    num = 1000000
    insert(num)
    find()
    remove()

    测试结果

    longhao@aliyun:~$ python mongodb.py

    insert run: 211.037979126
    {u'date': datetime.datetime(2010, 8, 31, 12, 59, 30, 456000), u'text': u'My first blog post!', u'_id': ObjectId('4c7cfcb28cb52a3eec00002e'), u'author': u'46Mike', u'tags': [u'mongodb', u'python', u'pymongo']}
    find run: 0.0865120887756
    count before remove: 1000000
    count after remove: 0
    remove run: 9.01437902451

    测试显示向数据库中插入100W条数据耗时211.038秒,删除100W条数据耗时9.014秒,数据库文件总大小为1G(这个和保持的对象大小有关系)

    遇到到问题:

    1:数据库文件大小在清空库后不能自动更改;

    2:单线程测试的结果,多线程效率会怎样还需要测试!



沪ICP备19023445号-2号
友情链接