Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос по класссике жанра: int->bigint  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Таблица с тремя подчиненными имеет поле int identity, PK, связана по этому полю с подчиненными.
Сейчас в ней ~500 млн записей, но значение уже больше 1 млрд.
То есть надо готовиться к перестройке.

Расцепить связи, скопировать в новую таблицу заменив поле на bigint - это единственный вариант?

Может заменить идентити на sequence?
2 сен 14, 15:41    [16524212]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по класссике жанра: int->bigint  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
Winnipuh
Может заменить идентити на sequence?



Оставьте IDENTITY
2 сен 14, 16:11    [16524444]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по класссике жанра: int->bigint  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
a_voronin
Winnipuh
Может заменить идентити на sequence?



Оставьте IDENTITY


пишут, что sequence вроде как быстрее работает
2 сен 14, 16:28    [16524565]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по класссике жанра: int->bigint  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Может, перейти на отрицательные значения IDENTITY?
DBCC CHECKIDENT(N'ИмяТаблицы',RESEED,-2147483648);
2 сен 14, 17:42    [16525112]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по класссике жанра: int->bigint  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
iap
Может, перейти на отрицательные значения IDENTITY?
DBCC CHECKIDENT(N'ИмяТаблицы',RESEED,-2147483648);


о, цікаво, проверю
2 сен 14, 18:23    [16525324]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по класссике жанра: int->bigint  [new]
Crimean
Member

Откуда:
Сообщений: 13147
в минус уйти можно, но это - просто выиграть время для более радикальных мер. и если апликуха не офигеет от этого
сиквенсы - у меня на 12 дампится сервер от сиквенсов. и, судя по конфе - не только у меня
на бигинты переходить - я подозреваю, что эффективнее будет "балкнуть" данные в новую табличку и после - переименовать с перевешиванием форинов, чем сносить индексы, альтерить, строить индексы
у самого голова болит за это сейчас
2 сен 14, 18:26    [16525333]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по класссике жанра: int->bigint  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Crimean
в минус уйти можно, но это - просто выиграть время для более радикальных мер. и если апликуха не офигеет от этого
сиквенсы - у меня на 12 дампится сервер от сиквенсов. и, судя по конфе - не только у меня
на бигинты переходить - я подозреваю, что эффективнее будет "балкнуть" данные в новую табличку и после - переименовать с перевешиванием форинов, чем сносить индексы, альтерить, строить индексы
у самого голова болит за это сейчас


да... я вот пустил перезаливку в новую таблицу, (1044354594 row(s) affected) за два часа, но это еще индексы не строились и пр.
кустомер с такого размера базой такое не выдержит, повесится...
Хотелось бы чего-то эдакого.... должно же быть красивое решение (!)
2 сен 14, 18:36    [16525368]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по класссике жанра: int->bigint  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Winnipuh
Crimean
в минус уйти можно, но это - просто выиграть время для более радикальных мер. и если апликуха не офигеет от этого
сиквенсы - у меня на 12 дампится сервер от сиквенсов. и, судя по конфе - не только у меня
на бигинты переходить - я подозреваю, что эффективнее будет "балкнуть" данные в новую табличку и после - переименовать с перевешиванием форинов, чем сносить индексы, альтерить, строить индексы
у самого голова болит за это сейчас


да... я вот пустил перезаливку в новую таблицу, (1044354594 row(s) affected) за два часа, но это еще индексы не строились и пр.
кустомер с такого размера базой такое не выдержит, повесится...
Хотелось бы чего-то эдакого.... должно же быть красивое решение (!)
Сделать новую таблицу, на старую триггер с трансляции изменений в новую таблицу, запустить в фоне переливку небольшими порциями из старой таблицы в новую. После переливки сделать в онлайне все нужные индексы. Далее, если форинкеи не каскадные, то и их можно продублировать (каскадные приведут к циклам).

Последним этапом переименование.

Вроде ничего не забыл.

Сообщение было отредактировано: 2 сен 14, 18:44
2 сен 14, 18:44    [16525394]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по класссике жанра: int->bigint  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Гавриленко Сергей Алексеевич,

+1, сам к такой стратегии склоняюсь
2 сен 14, 18:45    [16525397]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по класссике жанра: int->bigint  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Хотя нет, не будет циклов при каскадных.
2 сен 14, 18:46    [16525398]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить