MongoDB 1000W级数据 Insert和Query和Delete性能测试(分别测试 不加索引 和 加索引)
2011-10-15 16:12
671 查看
MongoDB
1000W级数据 Insert和Query和Delete性能测试(分别测试 不加索引 和 加索引)
转自:http://blog.csdn.net/crazyjixiang/article/details/6630624
先看下测试机性能(64bit):
view
plainprint?
^_^[root@:~]#grep "model name" /proc/cpuinfo | cut -f2 -d:
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
^_^[root@:~]#grep MemTotal /proc/meminfo
MemTotal: 4040580 kB
^_^[root@:~]# free -m
total used free shared buffers cached
Mem: 3945 3715 230 0 40 2626
-/+ buffers/cache: 1048 2897
Swap: 4094 2 4092
^_^[root@:~]#getconf LONG_BIT
64
^_^[root@:~]#more /etc/redhat-release
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
^_^[root@:~]#uname -r
2.6.18-194.el5
测试程序:
view
plainprint?
#include <iostream>
#include <mongo/client/dbclient.h>
using namespace std;
using namespace mongo;
#define INIT_TIME \
struct timeval time1,time2; \
#define START_TIME \
gettimeofday(&time1,NULL); \
#define STOP_TIME \
gettimeofday(&time2,NULL); \
#define PRINT_TIME \
cout<<"Time:"<<time2.tv_sec-time1.tv_sec<<":"<<time2.tv_usec-time1.tv_usec<<endl;
int main() {
srand(time(NULL));
char ar[26+1];
DBClientConnection conn;
conn.connect("localhost");
cout<<"MongoDB Connected OK!"<<endl;
int count=10000000;
INIT_TIME;
START_TIME;
//insert
#if 1
while (count--) {
for (int i=0; i<26; i++) {
ar[i] = rand()%26+97;
}
ar[26]='\0';
BSONObj p = BSON("NewsId"<<ar);
conn.insert("test.users",p);
}
#endif
STOP_TIME;
PRINT_TIME;
return 0;
}
不加索引测试:
......................#
MongoDB 不加索引 插入1000W条测试 #...................
view
plainprint?
^_^[root@:~/svn/nugget/MongoDB/utest]#./insertData
MongoDB Connected OK!
Time:207s:194125μs
......................# MongoDB 不加索引 1000W条遍历测试 #...................
我们让MongoDB全部遍历一遍:
让测试数据倒序,取倒序后第一条数据:
view
plainprint?
> db.users.find().sort({'_id':-1})
{ "_id" : ObjectId("4e2cbdf4a1ca039d82214e33"), "NewsId" : "dgvshdhevmjgunvbepgdkzirqk" }
第一条数据的NewsId为 dgvshdhevmjgunvbepgdkzirqk
测试程序:
view
plainprint?
^_^[root@:/usr/local/mongodb/bin]#./mongo<bat.js
MongoDB shell version: 1.8.2
connecting to: test
> var startTime = new Date();
>
> db.users.find({NewsId:"dgvshdhevmjgunvbepgdkzirqk"});
{ "_id" : ObjectId("4e2ccfd2a1ca039d82527b34"), "NewsId" : "dgvshdhevmjgunvbepgdkzirqk" }
>
> (new Date().getTime()-startTime.getTime())/1000
5.846s
> bye
......................# MongoDB 不加索引 1000W条删除测试 #...................
view
plainprint?
^_^[root@:/usr/local/mongodb/bin]#./mongo 10.7.3.228 < bat.js
MongoDB shell version: 1.8.2
connecting to: 10.7.3.228/test
> var startTime = new Date();
> //db.users.find({NewsId:"csgsqdglbyfuwdjfkkrxgzyacc"});
> db.users.remove()
> (new Date().getTime()-startTime.getTime())/1000
103.924
> bye
......................# MongoDB 不加索引 1000W条删除最后一条测试 #...................
view
plainprint?
^_^[root@:/usr/local/mongodb/bin]#./mongo 10.7.3.228 < bat.js
MongoDB shell version: 1.8.2
connecting to: 10.7.3.228/test
> var startTime = new Date();
> //db.users.find({NewsId:"csgsqdglbyfuwdjfkkrxgzyacc"});
> db.users.remove({"NewsId":"nmffcewwjvbhjfyagfxlifgiud"})
> (new Date().getTime()-startTime.getTime())/1000
3.991
> bye
加索引测试:
view
plainprint?
> db.users.getIndexes()
[
{
"name" : "_id_",
"ns" : "test.users",
"key" : {
"_id" : 1
},
"v" : 0
}
]
> db.users.ensureIndex({NewsId:1})
> db.users.getIndexes()
[
{
"name" : "_id_",
"ns" : "test.users",
"key" : {
"_id" : 1
},
"v" : 0
},
{
"_id" : ObjectId("4e2cc408572ff09d98851cb7"),
"ns" : "test.users",
"key" : {
"NewsId" : 1
},
"name" : "NewsId_1",
"v" : 0
}
]
......................# MongoDB 加索引 插入1000W条测试 #...................
view
plainprint?
^_^[root@:~/svn/nugget/MongoDB/utest]#./insertData
MongoDB Connected OK!
Time:2019s:19419μs
......................#
MongoDB 加索引 1000W条测试遍历测试 #...................
还是一样取最后一条数据,然后看下性能:
view
plainprint?
^_^[root@:/usr/local/mongodb/bin]#./mongo <bat.js
MongoDB shell version: 1.8.2
connecting to: test
> var startTime = new Date();
>
> db.users.find({NewsId:"nxuvdqtjrrptoyildolesbkqmd"});
{ "_id" : ObjectId("4e2ccc2ea1ca039d82b9e4b3"), "NewsId" : "nxuvdqtjrrptoyildolesbkqmd" }
>
> (new Date().getTime()-startTime.getTime())/1000
0.022s
> bye
......................# MongoDB 加索引 删除1000W条测试 #...................
view
plainprint?
^_^[root@:/usr/local/mongodb/bin]#./mongo 10.7.3.228 < bat.js
MongoDB shell version: 1.8.2
connecting to: 10.7.3.228/test
> var startTime = new Date();
> //db.users.find({NewsId:"csgsqdglbyfuwdjfkkrxgzyacc"});
> db.users.remove()
> (new Date().getTime()-startTime.getTime())/1000
570.782
> bye
......................# MongoDB 加索引 1000W中删除一条测试 #...................
view
plainprint?
^_^[root@:/usr/local/mongodb/bin]#./mongo 10.7.3.228 < bat.js
MongoDB shell version: 1.8.2
connecting to: 10.7.3.228/test
> var startTime = new Date();
> //db.users.find({NewsId:"csgsqdglbyfuwdjfkkrxgzyacc"});
> db.users.remove({"NewsId":"cikjwikamhtixoykrrfjnepkwu"})
> (new Date().getTime()-startTime.getTime())/1000
0.025
> bye
总结下测试数据吧:
没索引
添加 1 千万 记录 Time:207s:194125μs
查询 5.846s
删除全部 103.94s
删除最后一条 3.991s
有索引
添加 1 千万 记录 Time:2019s:19419μs
查询 0.022s
删除全部 570.782s
删除最后一条 0.025s
1000W级数据 Insert和Query和Delete性能测试(分别测试 不加索引 和 加索引)
转自:http://blog.csdn.net/crazyjixiang/article/details/6630624
先看下测试机性能(64bit):
view
plainprint?
^_^[root@:~]#grep "model name" /proc/cpuinfo | cut -f2 -d:
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
^_^[root@:~]#grep MemTotal /proc/meminfo
MemTotal: 4040580 kB
^_^[root@:~]# free -m
total used free shared buffers cached
Mem: 3945 3715 230 0 40 2626
-/+ buffers/cache: 1048 2897
Swap: 4094 2 4092
^_^[root@:~]#getconf LONG_BIT
64
^_^[root@:~]#more /etc/redhat-release
Red Hat Enterprise Linux Server release 5.5 (Tikanga)
^_^[root@:~]#uname -r
2.6.18-194.el5
测试程序:
view
plainprint?
#include <iostream>
#include <mongo/client/dbclient.h>
using namespace std;
using namespace mongo;
#define INIT_TIME \
struct timeval time1,time2; \
#define START_TIME \
gettimeofday(&time1,NULL); \
#define STOP_TIME \
gettimeofday(&time2,NULL); \
#define PRINT_TIME \
cout<<"Time:"<<time2.tv_sec-time1.tv_sec<<":"<<time2.tv_usec-time1.tv_usec<<endl;
int main() {
srand(time(NULL));
char ar[26+1];
DBClientConnection conn;
conn.connect("localhost");
cout<<"MongoDB Connected OK!"<<endl;
int count=10000000;
INIT_TIME;
START_TIME;
//insert
#if 1
while (count--) {
for (int i=0; i<26; i++) {
ar[i] = rand()%26+97;
}
ar[26]='\0';
BSONObj p = BSON("NewsId"<<ar);
conn.insert("test.users",p);
}
#endif
STOP_TIME;
PRINT_TIME;
return 0;
}
不加索引测试:
......................#
MongoDB 不加索引 插入1000W条测试 #...................
view
plainprint?
^_^[root@:~/svn/nugget/MongoDB/utest]#./insertData
MongoDB Connected OK!
Time:207s:194125μs
......................# MongoDB 不加索引 1000W条遍历测试 #...................
我们让MongoDB全部遍历一遍:
让测试数据倒序,取倒序后第一条数据:
view
plainprint?
> db.users.find().sort({'_id':-1})
{ "_id" : ObjectId("4e2cbdf4a1ca039d82214e33"), "NewsId" : "dgvshdhevmjgunvbepgdkzirqk" }
第一条数据的NewsId为 dgvshdhevmjgunvbepgdkzirqk
测试程序:
view
plainprint?
^_^[root@:/usr/local/mongodb/bin]#./mongo<bat.js
MongoDB shell version: 1.8.2
connecting to: test
> var startTime = new Date();
>
> db.users.find({NewsId:"dgvshdhevmjgunvbepgdkzirqk"});
{ "_id" : ObjectId("4e2ccfd2a1ca039d82527b34"), "NewsId" : "dgvshdhevmjgunvbepgdkzirqk" }
>
> (new Date().getTime()-startTime.getTime())/1000
5.846s
> bye
......................# MongoDB 不加索引 1000W条删除测试 #...................
view
plainprint?
^_^[root@:/usr/local/mongodb/bin]#./mongo 10.7.3.228 < bat.js
MongoDB shell version: 1.8.2
connecting to: 10.7.3.228/test
> var startTime = new Date();
> //db.users.find({NewsId:"csgsqdglbyfuwdjfkkrxgzyacc"});
> db.users.remove()
> (new Date().getTime()-startTime.getTime())/1000
103.924
> bye
......................# MongoDB 不加索引 1000W条删除最后一条测试 #...................
view
plainprint?
^_^[root@:/usr/local/mongodb/bin]#./mongo 10.7.3.228 < bat.js
MongoDB shell version: 1.8.2
connecting to: 10.7.3.228/test
> var startTime = new Date();
> //db.users.find({NewsId:"csgsqdglbyfuwdjfkkrxgzyacc"});
> db.users.remove({"NewsId":"nmffcewwjvbhjfyagfxlifgiud"})
> (new Date().getTime()-startTime.getTime())/1000
3.991
> bye
加索引测试:
view
plainprint?
> db.users.getIndexes()
[
{
"name" : "_id_",
"ns" : "test.users",
"key" : {
"_id" : 1
},
"v" : 0
}
]
> db.users.ensureIndex({NewsId:1})
> db.users.getIndexes()
[
{
"name" : "_id_",
"ns" : "test.users",
"key" : {
"_id" : 1
},
"v" : 0
},
{
"_id" : ObjectId("4e2cc408572ff09d98851cb7"),
"ns" : "test.users",
"key" : {
"NewsId" : 1
},
"name" : "NewsId_1",
"v" : 0
}
]
......................# MongoDB 加索引 插入1000W条测试 #...................
view
plainprint?
^_^[root@:~/svn/nugget/MongoDB/utest]#./insertData
MongoDB Connected OK!
Time:2019s:19419μs
......................#
MongoDB 加索引 1000W条测试遍历测试 #...................
还是一样取最后一条数据,然后看下性能:
view
plainprint?
^_^[root@:/usr/local/mongodb/bin]#./mongo <bat.js
MongoDB shell version: 1.8.2
connecting to: test
> var startTime = new Date();
>
> db.users.find({NewsId:"nxuvdqtjrrptoyildolesbkqmd"});
{ "_id" : ObjectId("4e2ccc2ea1ca039d82b9e4b3"), "NewsId" : "nxuvdqtjrrptoyildolesbkqmd" }
>
> (new Date().getTime()-startTime.getTime())/1000
0.022s
> bye
......................# MongoDB 加索引 删除1000W条测试 #...................
view
plainprint?
^_^[root@:/usr/local/mongodb/bin]#./mongo 10.7.3.228 < bat.js
MongoDB shell version: 1.8.2
connecting to: 10.7.3.228/test
> var startTime = new Date();
> //db.users.find({NewsId:"csgsqdglbyfuwdjfkkrxgzyacc"});
> db.users.remove()
> (new Date().getTime()-startTime.getTime())/1000
570.782
> bye
......................# MongoDB 加索引 1000W中删除一条测试 #...................
view
plainprint?
^_^[root@:/usr/local/mongodb/bin]#./mongo 10.7.3.228 < bat.js
MongoDB shell version: 1.8.2
connecting to: 10.7.3.228/test
> var startTime = new Date();
> //db.users.find({NewsId:"csgsqdglbyfuwdjfkkrxgzyacc"});
> db.users.remove({"NewsId":"cikjwikamhtixoykrrfjnepkwu"})
> (new Date().getTime()-startTime.getTime())/1000
0.025
> bye
总结下测试数据吧:
没索引
添加 1 千万 记录 Time:207s:194125μs
查询 5.846s
删除全部 103.94s
删除最后一条 3.991s
有索引
添加 1 千万 记录 Time:2019s:19419μs
查询 0.022s
删除全部 570.782s
删除最后一条 0.025s
相关文章推荐
- MongoDB 1000W级数据 Insert和Query和Delete性能测试(分别测试 不加索引 和 加索引)
- 【转载】MongoDB 1000W级数据 Insert和Query和Delete性能测试
- 【原创】MySql的Query和Insert性能测试
- mongodb单机1亿数据索引测试
- 大量数据情况下单线程插入和多线程(高并发)insert数据库的性能测试
- Mongodb学习笔记三(Mongodb索引操作及性能测试)
- 大量数据情况下单线程插入和多线程insert数据库的性能测试
- Mongodb百亿级数据添加,修改,删除,查询等性能测试【四】
- discuz 如何添加数据DB::insert和更新数据DB::update 查询DB::query删除DB::delete
- Mongodb亿级数据量的性能测试
- Mongodb亿级数据量的性能测试
- discuz 如何添加数据DB::insert和更新数据DB::update 查询DB::query删除DB::delete
- 【MongoDB】The basic operation of Mongodb, Insert\Query\Delete\Update
- mongdb性能压力测试,随机查询,数据量1亿条记录 操作系统centos6.4x64位 从测试结果看,当mongodb将数据全部载入到内存后,查询速度根据文档的大小,性能瓶颈通常会是在网络流
- Mongodb亿级数据量的性能测试
- Mongodb亿级数据量的性能测试
- Mongodb亿级数据量的性能测试(转)
- Mongodb亿级数据量的性能测试
- Mongodb亿级数据量的性能测试(转)
- Mongodb亿级数据量的性能测试-强哥