Проблема с производительностью RavenDB - PullRequest
4 голосов
/ 20 декабря 2011

Я создал простое приложение на основе RavenDB, в котором у меня есть 3000 документов, состоящих из 15 строковых и int свойств. Одно из свойств (CType) имеет одинаковое значение для всех документов, и я использую это поле как способ загрузки всех документов в массив с помощью запроса Lucene:

var store = new DocumentStore { Url = "http://localhost:8080", DefaultDatabase = "GIS" };
store.Initialize();

using (var session = store.OpenSession())
{
    var school = session.Advanced.LuceneQuery<School>()
        .Where("CType:School") // all documents have CType = "School"
        .Take(5000)
        .ToArray();

Этот код работает так, что он считывает все 3000 документов в массив, однако для завершения загрузки требуется 5 секунд или более.

Есть ли способ сделать это быстрее?

Ответы [ 2 ]

3 голосов
/ 20 декабря 2011

Итак, вы выполняете запрос, который должен получить 5000 элементов, отправить их по сети и десериализовать их из Json в School POCO.1000 предметов в секунду не так уж и плохи, несмотря на это.

Сказав это, что вы будете делать со списком школьных предметов, которые вы получите?Как правило, вам не нужно использовать 5000 элементов за один раз, поэтому RavenDB имеет встроенный пейджинг

1 голос
/ 21 декабря 2011

Вы фактически используете динамический индекс, чтобы сделать это, поэтому вероятно, что в первый раз вы получите его, используя динамический индекс.И вам действительно следует рассмотреть возможность выполнения какой-либо фильтрации на сервере, а не на клиенте.

...