Медленный прогресс при добавлении столбца последовательной идентификации - PullRequest
0 голосов
/ 15 мая 2011

У нас есть таблица с 8 миллионами строк, и нам нужно добавить в нее столбец с последовательным идентификатором. Используется для хранилищ данных.

Из тестирования мы знаем, что если мы удалим все индексы, включая индекс первичного ключа, добавление нового столбца последовательного идентификатора будет примерно в 10 раз быстрее. Я до сих пор не понимаю, почему удаление индексов поможет добавить столбец идентификаторов.

Вот SQL, который добавляет столбец идентификаторов:

ALTER TABLE MyTable ADD MyTableSeqId BIGINT IDENTITY(1,1)

Однако у рассматриваемой таблицы есть зависимости, поэтому я не могу отбросить индекс первичного ключа, пока не уберу все ограничения FK. В результате добавляем идентификационный столбец.

  • Существуют ли другие способы повышения скорости при добавлении столбца идентификаторов, чтобы время простоя клиента было минимальным?

или

  • Есть ли способ добавить столбец идентификаторов без блокировки таблицы, чтобы к таблице можно было получить доступ или, по крайней мере, сделать запрос?

База данных SQL Server 2005 Standard Edition.

1 Ответ

0 голосов
/ 15 мая 2011

Добавление нового столбца в таблицу приведет к блокировке Sch-M (изменение схемы), которая запрещает любой доступ к таблице на время операции.

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

...