SQL Server 2008 R2: как «приостановить» кластерный индекс во время записи на сервер? - PullRequest
3 голосов
/ 03 апреля 2012

Мне интересно, возможно ли "приостановить" кластеризованный индекс при записи больших данных?

Причина в том, что:

  • Массовая вставка выполняется медленно ( 10000 строк / секунду), если у меня есть кластеризованный индекс для «DateTime».
  • Массовая вставка выполняется быстро ( 180 000 строк / секунду), если у меня есть неактивный кластеризованный индекс для «DateTime».

Я не против, если кластерный индекс будет перестроен в одночасье, например, с 1:00 до 6:00

1 Ответ

2 голосов
/ 03 апреля 2012

Вы не можете отключить кластеризованный индекс и по-прежнему использовать таблицу.

Поскольку кластеризованный индекс является таблицей , имеющей егоотключено означает, что вы не можете получить доступ к каким-либо данным.

Из MSDN:

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

Вы можете ...

  • отключить любые некластеризованные индексы и перестроить их за одну ночь.Это очень поможет
  • DROP всех индексов (включая кластерные) и вставит, а затем CREATE их за одну ночь.Однако это сделает таблицу непригодной для использования.

Мое предпочтительное решение для этого немного сложнее:

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