Советы по оптимизации при переносе данных в Sitecore CMS - PullRequest
17 голосов
/ 22 марта 2011

В настоящее время передо мной стоит задача импортировать около 200 тыс. Элементов из пользовательской реализации CMS в Sitecore.Я создал простую страницу импорта, которая подключается к внешней базе данных SQL с помощью Entity Framework, и я создал все необходимые шаблоны данных.

Во время тестового импорта около 5 тыс. Элементов я понял, что мне нужно найти способ ускорить импорт, поэтому я решил найти некоторую информацию об оптимизации Sitecore для этой цели.Я пришел к выводу, что там не так много конкретной информации, поэтому я хотел бы поделиться тем, что я нашел, и предоставить слово другим для дальнейшей оптимизации.Моя цель - создать какой-то режим обслуживания для Sitecore, который можно использовать при импорте больших объемов данных.

Самая полезная информация, которую я нашел, была в блоге Марка Кэссиди http://intothecore.cassidy.dk/2009/04/migrating-data-into-sitecore.html. В нижней частив этом посте он дает несколько советов, когда вы запускаете импорт.

  • Если вы переносите большие объемы данных, попробуйте отключить столько обработчиков событий Sitecore и все остальное, с чем вы можете обойтись.
  • Используйте BulkUpdateContext ()
  • Не забудьте свой целевой язык
  • Если можете, сделайте поля общими и неверсированными.Это должно помочь скорости выполнения миграции.

Первое, что я заметил в этом списке, был класс BulkUpdateContext, о котором я никогда не слышал.Я быстро понял, почему в результате поиска на форуме SND и в документации PDF не было найдено ни одного хита.Так что представьте мое удивление, когда я действительно проверил его и обнаружил, что он улучшает создание / удаление элементов по крайней мере в десять раз!

Следующее, что я посмотрел, было первое, что он в основном предложил создать версию вебКонфигурация, в которой есть только самое необходимое для импорта.Пока что я удалил все события, связанные с созданием, сохранением и удалением элементов и версий.Я также удалил объявления механизма истории и индекса системы из основного элемента базы данных в веб-конфигурации, а также любые пользовательские события, расписания и конфигурации поиска.Я ожидаю, что есть много других вещей, которые я мог бы удалить / отключить, чтобы повысить производительность.Трубопроводы?Графики?

Какие у вас есть советы по оптимизации?

Ответы [ 2 ]

15 голосов
/ 22 марта 2011

Между прочим, BulkUpdateContext () является очень вводящим в заблуждение именем, поскольку оно действительно улучшает скорость создания элемента, а не скорость обновления элемента.Но, как вы также заметили, это значительно повышает вашу скорость импорта: -)

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

  • Регулярно сокращайте ваши базы данных.Они имеют тенденцию расти большими и громоздкими.Сделать это;Сначала перейдите в Панель управления Sitecore -> База данных и выберите «Очистить базу данных».После этого выполните обычную ShrinkDB на вашем SQL-сервере
  • Отключите индексы, особенно при импорте в базу данных "master".Для справки см. http://intothecore.cassidy.dk/2010/09/disabling-lucene-indexes.html
  • Однако попробуйте не импортировать в «master». Обычно вы обнаружите, что импорт в «web» выполняется намного быстрее, в основном потому, что эта база данных не (по умолчанию)подключен к HistoryManager или другим устройствамк.Они могут работать, но я не могу гарантировать, что они будут: -)
    • Попробуйте удалить все ваши типы полей из App_Config / FieldTypes.config.Теория здесь заключается в том, что это должно по существу отключить всю специальную обработку Sitecore содержимого этих полей (например, обновление базы данных LinkD и т. Д.).Вам нужно будет вручную перестроить LinkDatabase, когда вы закончите с импортом, но это сравнительно небольшая цена, которую нужно заплатить

    Надеюсь, это немного поможет: -)

1 голос
/ 24 марта 2011

Полагаю, вы уже достигли этого, но размещение кода внутри блока SecurityDisabler () также может ускорить процесс.

Я бы гораздо больше беспокоился о том, как Sitecore работает с таким большим количеством данных ... при условии, что вы выполняете импорт только один раз, кому важно, сколько времени займет этот процесс. Это будет обычное явление?

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