2016-11-25 2 views
0

Мне интересно услышать мнение других разработчиков о создании и загрузке данных, поскольку текущий сайт, над которым я работаю, имеет совершенно другой подход к загрузке DWH.MSSQL Создание и загрузка данных

Протокол, используемый в настоящее время для загрузки таблицы фактов, имеет несколько этапов;

  1. падение старый стол
  2. Recreate таблица без PK/кластерный индекс
  3. нагрузки очищено/новые данные
  4. Создание PK & индексов

Я интересно, как много работы на самом деле идет под крышками с шагом 4? Данные загружаются без индекса Clusterd, поэтому я предполагаю, что естественный порядок загрузки данных определяет его порядок на диске. Когда шаг 4. создает первичный ключ (кластерный), он будет переупорядочивать данные на диске в этом порядке. Не было бы лучше загружать данные и уже определил PK/Clustered Index, тем самым уменьшив рабочую нагрузку на сервер?

+0

Только в том случае, если данные уже заказываются в том же порядке, что и индекс. В противном случае индекс должен постоянно обновляться –

+0

@RichBenner, это неверно. Кластеризованный индекс влияет на фактический порядок хранения строк. Строки перемещаются –

+0

@PanagiotisKanavos благодарит меня за обновление, я удалил неверный комментарий. –

ответ

0

Когда inserting большое количество записей, накладные расходы при обновлении индекса часто могут быть больше, чем просто создавать его с нуля. Увеличение производительности происходит от inserting до кучи, что является наиболее эффективным способом получения данных в таблицу.

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

0

По моим соображениям, индексы хорошо подходят для выбора. и может быть плохой для операций DML.

И если вы загружаете Огромный объем данных, что означает, что вам нужно обновлять индексы для каждой вставки. Это может отставать от производительности. Иногда это может выйти за пределы.