GolosMovement / StatElectGenerator

Project to autmatically process electoral data
2 stars 0 forks source link

Использовать EFCore.BulkExtensions и генерировать PK на стороне клиента #65

Closed artembaikuzin closed 6 years ago

artembaikuzin commented 6 years ago

Переделал DbSerializer на работу с EFCore.BulkExtensions. Предыдущий мой тест https://github.com/GolosMovement/StatElectGenerator/issues/57#issuecomment-419918116 был некорректный, т.к. устанавливался флаг возврата идентификатора вставляемой записи (SetOutputIdentity), из-за этого bulk сводился к обычному batch sql insertions.

Теперь на dev машине данные Дума Голос 2011 v4 переменная иерархия (неполная - для тестирования) (1).xlsx импортируются чуть меньше чем за одну минуту (~2 млн вставок):

ImportStartedAt
2018-10-02 15:13:51.5366130

ImportFinishedAt
2018-10-02 15:14:40.8470320

На prod все не так радужно, возможно из-за того, что инстанс и БД находятся в разных датацентрах: Central US и North Europe (24 минуты, данные такие же):

ImportStartedAt
2018-10-02 12:46:32.7270025

ImportFinishedAt
2018-10-02 13:10:53.5992932

Также, нужно будет переделать прогресс нотификацию #66, т.к. bulk свел все к трем командам: https://github.com/GolosMovement/StatElectGenerator/blob/develop/ElectionStatistics.Core/Import/DbSerializer.cs#L71