【发布时间】:2016-11-21 05:32:16
【问题描述】:
我的数据库有 200.000 个文档,与一个包含 600 万个文档的属性相关联。当我查询它时,对于某些查询,出现错误GC开销限制超出。
我的计算机有 16GB 的 RAM,我将 8GB 分配给 OrientDB (-Dstorage.diskCache.bufferSize=8192) 并放入 -Xms1024 -Xmx2048。我尝试了其他选项,例如:-Xms128 -Xmx4096 和其他选项。
有人可以帮我解决它吗?还是 OrientDB 不够好,无法处理这么多数据?
我的数据是这样的:
{"@type":"d","@class":"part","p_partkey": 2, "lineorder": [{"@type":"d","@class":"lineorder","customer": [{"@type":"d","@class":"customer","c_city": "INDONESIA1"}], "lo_supplycost": 54120, "orderdate": [{"@type":"d","@class":"orderdate","d_weeknuminyear": 19}], "supplier": [{"@type":"d","@class":"supplier","s_phone": "16-789-973-6601|"}], "commitdate": [{"@type":"d","@class":"commitdate","d_year": 1993}], "lo_tax": 7}, {"@type":"d","@class":"lineorder","customer": [{"@t...
类部分有20万个部分,有一个属性lineorder类型的链表,每个部分有多个类lineorder的lineorder,有4个属性,客户,供应商和提交日期,也是链表。
查询示例:
select sum(eval("line.lo_extendedprice * line.lo_discount / 100")) as revenue
from (select lineorder as line from part where lineorder.orderdate contains (d_year=1993) unwind line)
where line.lo_discount between 1 and 3 and line.lo_quantity<25 and line.orderdate contains (d_year=1993)
【问题讨论】:
-
嗨@Raphael,您的数据库结构如何(类,...)?您执行了哪些查询/查询来获取此错误?顺便说一句,如果您有一个小型数据库测试来重现您的问题,那就太好了。
-
@LucaS,我已经尝试使用较小的数据库并且它可以工作,但是在我插入所有内容后,相同的查询返回此错误。我将在上面举一个我的数据示例。
-
嗨@Raphael,我正在尝试重现数据集。您对某些属性有索引吗?这可以加快您的查询速度。
-
另一件事:
Lineorder类还包含属性lo_supplycost、lo_tax、lo_discount、lo_quantity和lo_extendedprice对吗? -
@LucaS,我没有创建索引,因为我查询的字段不是唯一的,而且它们重复了很多次。
标签: memory-management garbage-collection orientdb