Производительность вставки RavenDB - PullRequest
2 голосов
/ 21 марта 2019

У нас есть требование быстро хранить большие объемы данных, порядка порядка 100 тыс. Записей одновременно.Я оцениваю RavenDB, и кажется, что показатели, которые я получаю, довольно низкие - требуется около 2,5-3 секунд для хранения 10 тыс. Записей.

Код в значительной степени прямо из документации:

 using (IDocumentStore store = new DocumentStore { Urls = new[] { "http://localhost:8080" }, Database = "xxx" })
{
    store.Initialize();
    for (int i = 0; i < 10; i++)
    {
        using (IDocumentSession session = store.OpenSession())  
        {
            var things = DataGenerator.GenerateListOfThings(); // gets me a 10k objects
            foreach (var thing in things)
            {
                session.Store(thing);
            }
            session.SaveChanges();
        }
    }
}

Объекты «Вещи» - это плоский объект с примерно 20 свойствами, ничего особенного в этом нет.

Я также пытался сохранить фрагменты по 1000 объектов, что улучшило время выполнения наоколо 10%, и массовая загрузка, которая дает схожие результаты.

Raven работает в док-контейнере с конфигурацией по умолчанию на машине с i7, SSD и 16 ГБ оперативной памяти.Документация говорит о «150 тыс. Записей на стандартном оборудовании», но я не вижу ничего похожего на это.Я что-то упустил?

1 Ответ

2 голосов
/ 28 марта 2019

Вы получите лучшую производительность с Bulk Insert, см. Здесь: https://ravendb.net/docs/article-page/4.1/Csharp/client-api/bulk-insert/how-to-work-with-bulk-insert-operation#example

Распараллеливание вставок приведет к еще большей производительности.

...