В настоящее время я столкнулся с задачей импорта около 200 тыс. элементов из пользовательской реализации CMS в Sitecore. Я создал простую страницу импорта, которая подключается к внешней базе данных SQL, используя Entity Framework, и я создал все необходимые шаблоны данных.
Во время тестового импорта около 5 тыс. элементов я понял, что мне нужно найти способ сделать импорт намного быстрее, поэтому я решил найти некоторую информацию об оптимизации Sitecore для этой цели. Я пришел к выводу, что там не так много конкретной информации, поэтому я хотел бы поделиться тем, что нашел, и открыть для других, чтобы другие способствовали дальнейшей оптимизации. Моя цель - создать какой-то режим обслуживания Sitecore, который можно использовать при импорте больших количеств данных.
Самая полезная информация, которую я нашел, была на блоге Mark Cassidy http://intothecore.cassidy.dk/2009/04/migrating-data-into-sitecore.html. В нижней части этой статьи он предоставляет несколько советов, когда вы используете импорт.
- Если вы переносите большое количество данных, попробуйте и отключите столько обработчиков событий Sitecore и все, что вы можете уйти.
- Использовать BulkUpdateContext()
- Не забывайте свой целевой язык
- Если вы можете, сделайте поля разделяемыми и неверсифицированными. Это должно помочь скорости выполнения миграции.
Первое, что я заметил из этого списка, это класс BulkUpdateContext, о котором я никогда не слышал. Я быстро понял, почему в результате поиска на форуме SND и в документации в формате PDF не было обращений. Поэтому представьте мое удивление, когда я действительно проверил его, и обнаружил, что он улучшает создание/удаление элементов по меньшей мере в десять раз!
Следующее, на что я смотрел, было первым моментом, когда он в основном предлагал создать версию веб-конфигурации, которая имеет только необходимые основы для импорта. До сих пор я удалил все события, связанные с созданием, сохранением и удалением элементов и версий. Я также удалил объявления движка истории и системного индекса из элемента основной базы данных в веб-конфигурации, а также любые пользовательские события, расписания и поисковые конфигурации. Я ожидаю, что есть много других вещей, которые я мог бы посмотреть, чтобы удалить/отключить, чтобы повысить производительность. Трубопроводы? Графики?
Какие советы по оптимизации у вас есть?