Как создать индекс базы данных, не дожидаясь завершения - PullRequest
1 голос
/ 15 апреля 2019

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

Можно ли выкинутьотключить создание индекса и запустить его до завершения, не связывая остальную часть функции.

Другими словами, может ли функция завершиться, и индекс продолжает построение в фоновом режиме?

Спасибо

1 Ответ

1 голос
/ 16 апреля 2019

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

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

Некоторому процессу потребуется остаться в живых, чтобы завершить индекс, но это не так.должна быть эта функция.После того, как вставка завершится, у вас может быть вызов функции другим процессом для создания индекса.Для этого есть много опций, включая другую функцию, приложение логики (путем вызова хранимого процесса) или агента задания SQL, если он вам доступен.

...