OrientDB提交的大数据计数响应缓慢?

时间:2019-06-28 05:23:59

标签: orientdb database-performance query-performance

我们已向orientdb插入1500万条记录,以进行大量数据查询性能测试。

系统配置:Linux,2Cpu和4GB Ram

var X;
for(var i=1;i<15000000;i++)
{
  X='insert into customer set id='+i+',name=\'SENTHIL'+i+'\',age='+i;
  db.command(X);

} 

DB /收藏图片: DB/Collection Picture

数据库索引图片 DB Index Picture

在尝试获取记录的情况下,如下所示,我们的响应速度很慢

select count(age) from customer where age > 100000 and age < 999999

查询在7.652秒内执行

select count(age) from customer where age > 1000000 and age < 9999999

查询执行时间为183.465秒。

explain select count(age) from customer where age > 1000000 and age < 9999999

+ FETCH FROM INDEX customerAge
  age > 1000000 and age < 9999999
+ EXTRACT VALUE FROM INDEX ENTRY
  filtering clusters [25,26,27,17,16,19,18,21,20,23,22,24,15]
+ FILTER ITEMS BY CLASS 
  customer
+ CALCULATE PROJECTIONS
  age AS _$$$OALIAS$$_1
+ CALCULATE AGGREGATE PROJECTIONS
      count(_$$$OALIAS$$_1) AS _$$$OALIAS$$_0
+ GUARANTEE FOR ZERO COUNT 
+ CALCULATE PROJECTIONS
  _$$$OALIAS$$_0 AS `count(age)`

我们如何解决反应迟钝的问题?

1 个答案:

答案 0 :(得分:0)

我对OrientDB的第一印象是相似的。 DB似乎比常规的关系数据库更差。在对经过改进的查询进行了模拟RDBMS行为的实验之后,我逐渐摆脱了“关系思维”。

对我来说,OrientDB的好处是在重组数据后出现的。在处理与时间相关的数据时,我决定首先创建一个功能强大的搜索框架:时间图(https://github.com/topofocus/orientdb_time_graph)。通过将结构化和非结构化数据分配给网格,只要我对时间表有所了解,我就能非常快速地访问任何内容。猜测越好,响应越快。

我学到的东西:在图形数据库中然后在关系数据库中很好地组织数据甚至更重要。

为减少响应时间,我建议在输入过程中对数据进行聚类,将小年龄类归为小类,等等。结果,您始终可以对孔数据集进行查询(从客户中选择),但是如果您知道子类的年龄边界,则您(或者更好的是:数据库引擎)可以专注于此。