У меня есть база данных с большим количеством полей, которые в настоящее время являются NTEXT.
После обновления до SQL 2005 мы выполнили несколько тестов производительности при преобразовании их в NVARCHAR (MAX).
Если вы читаете эту статью:
http://geekswithblogs.net/johnsPerfBlog/archive/2008/04/16/ntext-vs-nvarcharmax-in-sql-2005.aspx
Это объясняет, что простая ALTER COLUMN не реорганизует данные в строки.
Я испытываю это с моими данными. На самом деле у нас гораздо хуже в некоторых областях, если мы просто запускаем ALTER COLUMN. Однако, если я запускаю таблицу UPDATE SET SET Column = Column для всех этих полей, мы получим чрезвычайно большое повышение производительности.
У меня проблема в том, что база данных состоит из сотен этих столбцов с миллионами записей. Простой тест (на виртуальной машине с низкой производительностью) имел таблицу с одним столбцом NTEXT, содержащим 7 миллионов записей, для обновления потребовалось 5 часов.
Кто-нибудь может предложить какие-либо предложения относительно того, как я могу обновить данные более эффективным способом, который минимизирует время простоя и блокировки?
РЕДАКТИРОВАТЬ: Мое решение для резервного копирования - просто обновлять данные в блоках с течением времени, однако, с нашими данными это приводит к ухудшению производительности, пока все записи не будут обновлены, и чем короче это время, тем лучше, поэтому я все еще ищу для более быстрого способа обновления.