OrientDB重试Patern异常

时间:2018-06-29 11:22:18

标签: c# .net performance orientdb orientdb2.2

我有一个OrientDB数据库,其中包含约3亿个“ A扩展V”类记录。 每个记录都有一个属性'x'(LONG),我为(NOTUNIQUE)建立了一个索引。

我现在正在尝试访问C#代码中“ x> 0”的记录:

SELECT * FROM A WHERE x > 0

因为这对.NET-binary连接器的硬编码套接字超时(30秒)造成了很大的影响,所以我尝试使用分页来限制结果集和查询时间:

SELECT * FROM A WHERE @rid > <skip> AND x > 0 LIMIT 10000

我想不出接收下一次迭代的正确方法(我只需要搜索最后一条记录的@rid,只获取匹配的@rids),然后再次遇到超时错误(第一个查询耗时约4秒,第二个查询耗时5秒,第三个查询耗时6秒,很快增加到30秒以上,导致超时。这可能是因为我的代码是无意间设计的,以扫描未命中的第一个连续序列,然后无法增加跳跃:

using (var db = new ODatabase("localhost", 2424, "testgraph", ODatabaseType.Graph, "root", "<some password>"))
{
    var skip = new ORID();
    var limit = 20000;
    var records = db.Command($"SELECT * FROM A WHERE @rid > {skip} AND x > 0 LIMIT {limit}").ToList();
    while (records.Count > 0)
    {
        // problem is here
        skip = new ORID(records.Last().ORID);
        foreach (var record in records)
        {
            // do awesome stuff
        }
        records = db.Command($"SELECT * FROM A WHERE @rid > {skip} AND x > 0 LIMIT {limit}").ToList();
    }
}

是否有任何方法可以检索x> 0的记录,而不是浪费更多的CPU能力并加快存储速度,从而避免出现此超时问题?

谢谢!

0 个答案:

没有答案