【发布时间】:2016-01-07 22:17:46
【问题描述】:
我正在通过比较 Tokumx 和纯 Mongodb 进行读取性能压力测试。
- Tokumx Community Edition 2.0.0
- MongoDB 2.6.4_1
tokumx 和 mongodb 在同一台机器上运行。
硬件概述:
Model Name: Mac mini
Model Identifier: Macmini6,1
Processor Name: Intel Core i5
Processor Speed: 2.5 GHz
Number of Processors: 1
Total Number of Cores: 2
L2 Cache (per Core): 256 KB
L3 Cache: 3 MB
Memory: 10 GB
每个实例中只有一个集合。每个集合中有 100,000 个条目。
对于 tokumx,它被创建为分区集合。但是对于 mongodb,它是作为普通集合创建的:
db.createCollection("sample", {partitioned: true, primaryKey: {field1:1, _id: 1}});
对于这两个实例,索引如下所示:
db.sample.ensureIndex({field1:1});
db.sample.ensureIndex({field2:1});
db.sample.ensureIndex({field3:1});
db.sample.ensureIndex({field4:1});
db.sample.ensureIndex({geo:"2d"});
db.sample.ensureIndex({"created_at":1});
我使用Tsung 进行压力测试。
在测试计划中,我通过查看field2 和geo 字段按created_at desc 进行了简单的搜索。
<clients>
<client host="localhost" use_controller_vm="false" maxusers="8000"/>
</clients>
<servers>
<server host="jchimac.thenetcircle.lab" port="8080" type="tcp"/>
</servers>
<load duration="5" unit="minute">
<arrivalphase phase="1" duration="5" unit="minute">
<users interarrival="0.03" unit="second"/>
</arrivalphase>
</load>
根据官方文档,事务应该是TOKUMX™ BENCHMARK VS. MONGODB – HDD
但在我的测试中:
TOKUMX:
MongoDB:
我在这里询问是否有人可以对此提供任何提示?我在整个测试过程中遗漏了什么吗?
更新:
我在 Linux(CentOS) 机器上又做了一轮测试:
CentOS release 6.5 (Final)
2.6.32-504.1.3.el6.x86_64 GNU/Linux
MemTotal: 24589896 kB
CPU: 12* (Intel(R) Xeon(R) CPU E5645 @ 2.40GHz)
示例数据如下所示:
{
"_id": ObjectId("54867dc8ffbc15aa2bc3ee0e"),
"_iid": 15,
"_pid": 15,
"uid": 102296,
"nickname": "nickname_102296",
"gender": 3,
"image_id": 15,
"created_at": 1418100168,
"tag": 1,
"geo": {
"lat": 51.590449999999997033,
"lon": 6.9671900000000004383
}
}
每个集合都有 1,000,000 个条目。
每个集合的索引(创建普通集合):
db.createCollection("coll", {primaryKey: {_pid:1, _id: 1}});
db.tokumx_coll.ensureIndex({gender:1});
db.tokumx_coll.ensureIndex({uid:1});
db.tokumx_coll.ensureIndex({geo:"2d"});
db.tokumx_coll.ensureIndex({_pid:1});
db.tokumx_coll.ensureIndex({_iid:1});
db.tokumx_coll.ensureIndex({"created_at":1});
测试计划也很简单:
{'$query', {gender,3,geo, {'$geoWithin', {'$center', [[48.72761, 9.24596], 0.005]}}}, '$orderby',{'_pid',-1}}
每个测试运行 1 小时的 Tsung 压力测试。并发是每秒1个请求。
<load>
<arrivalphase phase="1" duration="60" unit="minute">
<users interarrival="1" unit="second"/>
</arrivalphase>
</load>
这是截图中的报告:
TOKUMX:
MONGODB:
更新@2014.12.12 发现这个: https://github.com/Tokutek/mongo/issues/1014
【问题讨论】:
-
这就是为什么你不应该相信制造
-
有人比较过 mongo3 和 toku 吗?他们说 mongo3 在性能上向前迈出了一大步。
标签: mongodb stress-testing tsung tokumx