Десериализация RavenDB кажется медленной - PullRequest
0 голосов
/ 06 декабря 2011

Я играл с RavenDB (сборка 531), и я не могу добиться правильной производительности.

У меня есть простой класс

    public class Cat
    {
      public string Id {get; set;}
      public string Name {get; set;
    }

Я создаю около 200случайных кошек и поместите их в RavenDB.

Но когда я иду, чтобы выбрать одну кошку, через

   session.Load<Cat>("cats/<GUID>");

это занимает около 700 мс.

Окно отладки из RavenDB выглядит следующим образом

    Request # 156: GET - **0 ms** - <default>-200-/docs/cats/<GUID>

Это возвращает мне правильный Cat, но кажется, что десериализация занимает много времени.

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

Мысли?

Редактировать: Я пыталсядесериализация только простого старого объекта Cat, и это заняло 100 мс.

Edit2: Вот ответ.

Похоже, что есть некоторые существенные затраты на запуск.

Если я получу любую другую Кошку после моей первой, моя производительность значительно возрастет - до <100 мс. </p>

Поэтому вына базовом тесте только с одной выборкой.

1 Ответ

0 голосов
/ 06 декабря 2011

Здесь может произойти несколько вещей.

  1. Используете ли вы Индекс?
  2. Делали ли вы какие-либо звонки в Хранилище документов ... с этимзапрос раньше?

Обычно причина в том, что

  1. При первом обращении к серверу документов на стороне клиента произошла начальная попытка установки.
  2. Для индексов может потребоватьсябыть проиндексирован - например.динамические индексы.

Подробнее ...

При первом использовании каких-либо данных в хранилище документов RavenDB ... потребуется некоторая индексация.Это происходит, когда выполняется запрос, а индекс не используется (или не угадан).Я думаю, что это также происходит при первом создании индекса ... но я не уверен на 100% в этом.

Так что, как правило, многие люди сначала просто пытаются запросить хранилище документов без индекса.Первоначальный первый хит всегда дорогой.Создание первоначального хранилища документов (на стороне клиента) стоит дорого. , поэтому предлагается использовать Singleton .Если в первый раз этот запрос выполняется и это динамический индекс ... то этот индекс должен быть создан, проиндексирован и затем возвращен клиенту.

Таким образом, для начального прогрева требуется немало необходимых вещей дляпервый удар.

...