首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tokumx诉mongodb读取性能

Tokumx诉mongodb读取性能
EN

Stack Overflow用户
提问于 2014-12-08 13:44:55
回答 3查看 2.4K关注 0票数 3

我通过比较Tokumx和纯Mongodb来进行读性能压力测试。

  • Tokumx社区版2.0.0
  • MongoDB 2.6.4_1

tokumx和mongodb都在同一台机器上运行。

硬件概述:

代码语言:javascript
复制
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

每个实例中只有一个集合。每个集合中有100000个条目。

对于tokumx,它是作为分区集合创建的。但是对于mongodb,它是作为一个正常的集合创建的:

代码语言:javascript
复制
db.createCollection("sample", {partitioned: true, primaryKey:  {field1:1, _id: 1}});

在这两个例子中,索引如下所示:

代码语言:javascript
复制
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});

我用宗庆林做压力测试。在测试计划中,我通过查看field2geo字段的顺序( created_at desc )进行了简单的搜索。

代码语言:javascript
复制
<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™基准相对于。MONGODB - HDD一样

但在我的测试中:

TOKUMX:

MongoDB:

我在这里想知道,有没有人能对此给出任何提示?我在整个测试中错过了什么吗?

更新:

我在Linux(CentOS)机器上做了另一轮测试:

代码语言:javascript
复制
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)

样本数据如下:

代码语言:javascript
复制
{
  "_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项。

每个集合的索引(创建正常集合):

代码语言:javascript
复制
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}); 

测试计划也非常简单:

代码语言:javascript
复制
{'$query', {gender,3,geo, {'$geoWithin', {'$center', [[48.72761, 9.24596], 0.005]}}}, '$orderby',{'_pid',-1}} 

每次测试运行1小时的松应力测试。并发性是每秒一个请求。

代码语言:javascript
复制
  <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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-31 02:00:05

TokuMX 2.0.0社区版 for MongoDB仍然是建立在MongoDB 2.4之上的,当我发表这篇文章时,MongoDB 2.4还没有GEO2dsphere索引。因此,如果您正在制作一个具有GEO索引的复合指数,则必须等待基于MongoDB 2.6的版本,该版本支持geo2dshere索引。

基本上:

  • "2d索引“:只有一个附加字段的复合索引,作为2d索引字段的后缀。
  • “2 2dsphere索引”:以标量索引字段(即上升或下降)作为2dsphere索引字段的前缀或后缀的复合索引。

如果你对我的压力测试感兴趣,你可以在这个帖子上找到它。

票数 3
EN

Stack Overflow用户

发布于 2014-12-08 14:48:10

Sysbench事务包括insert/update/delete操作,但是您所描述的测试是只读的。TokuMX获得比MongoDB高得多的Sysbench结果的一个重要原因是写并发性。

票数 2
EN

Stack Overflow用户

发布于 2014-12-09 01:59:39

我很高兴看到你对TokuMX感兴趣。但是,在试图从结果中得出结论之前,您应该回答一些关于基准设置的问题:

  1. 你用的是一台迷你电脑。TokuMX只支持OSX上的开发,而不是用于生产。我们已经在Linux上解决了OSX上的几个显式性能问题。如果您对评估TokuMX的性能感兴趣,那么您确实应该在专用硬件上对Linux进行测试。
  2. 您从营销材料中显示的图表描述了随着并发线程数量的变化,特定基准(sysbench)的吞吐量如何变化。宗似乎并不是在测量吞吐量与并发性,那么为什么您期望它具有与我们站点上的图形相似的特性呢?
  3. Tsung的工作负载是否与您的应用程序类似?如何选择测试的架构?它是否代表应用程序的数据模型?您的查询与您选择的索引不匹配;如果您想在field2, geo, created_at上测试查询,那么您应该有一个根据该键对数据进行排序的索引。我希望您的应用程序不仅仅是一个不使用在小数据集中定义的任何索引的只读工作负载。更多地考虑如何设计代表应用程序的基准测试。或者更好的是,运行您的应用程序或跟踪它,并监视您所关心的指标。
  4. 基准测试的运行时间仅为5分钟,并且大部分输出在运行过程中显示出显著的差异。如果您对此工作负载感兴趣,您可能希望运行它更长时间(可能在更大的数据集中),收集大量数据,并比较TokuMX和MongoDB之间的吞吐量和延迟直方图。
  5. 为什么要创建分区集合?你有创建分区吗?此范例是否与您的应用程序的需求相匹配?

我认为,如果你开始解决这些问题,你就会发现你所看到的不一致之处,并且你有希望接近一个基准,这将给你提供可靠和可操作的结果。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27359394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档