3

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

К примеру у меня есть Десятичный (12,2) колонку и я хочу, чтобы изменить его Decimal (13,3)

Факты:

  • Я не потерять ни данные (увеличение точности + масштаб не вызовет никакого предупреждения).
  • У меня все равно будет поле с 9 байтами. (См MSDN ссылки: http://msdn.microsoft.com/en-us/library/ms187746.aspx)

Вопрос 1: Если у меня есть более чем 10 миллионов или более подряд, как он будет реагировать?

Вопрос 2: Требуется ли много времени для обновления шкалы точности + или будет ли она мгновенной (я говорю о выполнении применяемого изменения)?

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

+1

не должно быть проблемой, если вы все возрастающей точностью. Не можете ли вы восстановить предыдущую резервную копию на локальную машину для тестирования? Кстати, вы говорите об эффективности применяемого изменения или о том, будет ли затронуто выполнение запроса после? Я предполагаю, что первый. – Tanner

+0

Я говорю о выполнении применяемого изменения. Кстати, я не могу получить резервную копию, база данных слишком огромна. – Nordes

+0

@Nordes Если ваша база данных такая большая и критически важная для бизнеса, у вас есть план аварийного восстановления? Если да, можете ли вы использовать один из серверов, выделенных для этого, чтобы попробовать это? –

ответ

3

Двоичное представление отличается, поэтому он должен выполнить обновление вошли каждую строку.

SELECT CAST(CAST(1 AS Decimal(12,2)) AS VARBINARY), 
     CAST(CAST(1 AS Decimal(13,3)) AS VARBINARY) 

Возвращает

0x0C02000164000000 
0x0D030001E8030000 
+0

Спасибо за объяснение – Nordes

2

Это, безусловно, не будет мгновенным. Я просто попробовал на столе с 175 миллионами строк данных в моей тестовой БД. Запрос работает в течение последних 10 минут и все еще продолжается.

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

Радж

+0

Благодарим вас за ответ. Нет. У меня нет индексов в десятичных столбцах. – Nordes

Смежные вопросы