|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Тема уже была здесь несколько раз, но актуальна. Итак, вопрос: Есть большая таблица с ПК int identity, которых скоро захлебнется. Как заменить его на bigint identity не спрашиваю, уже было и сам делал. Как заменить его на Sequence в существующей таблице? может это более простая замена для рабочей базы? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 12:40 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин Тема уже была здесь несколько раз, но актуальна. Итак, вопрос: Есть большая таблица с ПК int identity, которых скоро захлебнется. Как заменить его на bigint identity не спрашиваю, уже было и сам делал. Как заменить его на Sequence в существующей таблице? может это более простая замена для рабочей базы? Сбросьте Identity на минимальное отрицательное значение и оставьте проблему будущим поколениям. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 13:24 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
uaggster Ролг Хупин Тема уже была здесь несколько раз, но актуальна. Итак, вопрос: Есть большая таблица с ПК int identity, которых скоро захлебнется. Как заменить его на bigint identity не спрашиваю, уже было и сам делал. Как заменить его на Sequence в существующей таблице? может это более простая замена для рабочей базы? Сбросьте Identity на минимальное отрицательное значение и оставьте проблему будущим поколениям. :-) "Главное в следственных действиях - это не выйти на самих себя." Эх, уже сделал когда-то,но парадокс в том, что я получился тем самым будущим поколением. Скоро п-ц, вот и думаю ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 13:35 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин Как заменить его на bigint identity не спрашиваю, уже было и сам делал. Как заменить его на Sequence в существующей таблице? может это более простая замена для рабочей базы? Точно так же, как и для замены identity, только в случае sequence для колонки с id нужно задавать не identity specification, а default constraint, который будет при вставке подставлять в id next value из сиквенса: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Разумеется, для второго случая сиквенс уже должен быть создан. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 14:53 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин, Может, сделать IDENTITY DEC(38,0) ?? До конца Земли должно хватить ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 15:01 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
iap Ролг Хупин, Может, сделать IDENTITY DEC(38,0) ?? До конца Земли должно хватить в живой таблице с хх млн записей пройдет по-быстрому? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 15:03 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 15:12 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ага. И не дай бог это куда-то на клиент тянется. Если нет - то, в принципе - возможно. А если да - то, в общем случае - не решаемо. Т.к. замена PK в основной и FK в дочерних таблицах не приведет к замене размера этих полей на уровне модели данных в исходном коде клиента. В итоге, в аналогичном случае, мы просто забекапили старую базу, а новую - начали с нуля. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 15:41 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
uaggster Ага. И не дай бог это куда-то на клиент тянется. Если нет - то, в принципе - возможно. А если да - то, в общем случае - не решаемо. Т.к. замена PK в основной и FK в дочерних таблицах не приведет к замене размера этих полей на уровне модели данных в исходном коде клиента. В итоге, в аналогичном случае, мы просто забекапили старую базу, а новую - начали с нуля. вот-вот, я приблизительно об этом ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 18:03 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
uaggster Т.к. замена PK в основной и FK в дочерних таблицах не приведет к замене размера этих полей на уровне модели данных в исходном коде клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 18:36 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин uaggsterзамена PK в основной и FK в дочерних таблицах не приведет к замене размера этих полей на уровне модели данных в исходном коде клиента. вот-вот, я приблизительно об этомЕсли вопрос в этом, а не из стартового топика, то понятно, что одним кликом это не решается. Нужно постепенно отрефакторить клиента, а потом уже менять базу. Но, в общем, ничего особенно фантастического и нерешаемого тут нет, однако потребуется поработать некоторое время (но всё таки меньше, чем ещё раз создать подобную систему). Помню, как то делал изменение ИД с guid на bigint в большой загруженной базе, разработка заняла месяц, потом сам процесс перехода месяц, конечно, без остановки сервиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2021, 19:52 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
alexeyvg Ролг Хупин пропущено... вот-вот, я приблизительно об этом Нужно постепенно отрефакторить клиента, а потом уже менять базу. Но, в общем, ничего особенно фантастического и нерешаемого тут нет, однако потребуется поработать некоторое время (но всё таки меньше, чем ещё раз создать подобную систему). Помню, как то делал изменение ИД с guid на bigint в большой загруженной базе, разработка заняла месяц, потом сам процесс перехода месяц, конечно, без остановки сервиса. ясно, и вопрос - что лучше: sequence или identity? стоит заморачиваться с заменой i на s в принципе? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 11:36 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин и вопрос - что лучше: sequence или identity? стоит заморачиваться с заменой i на s в принципе? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 19:44 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин, identity должно побыстрее работать, я так думаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2021, 21:14 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
alexeyvg Ролг Хупин и вопрос - что лучше: sequence или identity? стоит заморачиваться с заменой i на s в принципе? аналогично, но тяга к знаниям. Есть там +: sequence можно альтернуть по-живому, не все, но что-то изменть: мин, макс, старт, шаг. Кроме того, есть какой-то кеш. На больших базах должен быть выигрыш ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2021, 11:19 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин в живой таблице с хх млн записей пройдет по-быстрому? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2021, 11:49 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин, авторКроме того, есть какой-то кеш Identity также имеет кэш, но неуправляемый. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2021, 12:08 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
tunknown Ролг Хупин в живой таблице с хх млн записей пройдет по-быстрому? Проблема актуальна, потому отвечу: там написано не правильно. Не забывайте, что записи добавлялись, апдейтились, удалялись, следовательно identity шел к цели делая +1, а реальное количество записей сейчас (я ошибся там на один х) - xxx млн. Но вопрос остается : как и на что заменить int идентити. который приближается к хэппи энду, но важна длительность операции. Создать новую таблицу, переекинуть данные и т.д. - вариант, но это будут десятки часов ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 11:07 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин, а если добавить колонку rowversion. или триггер, записывающий какие строки меняли. запустить процесс создания новой таблицы. а потом проапдейтить те строки, которые поменялись. и перейти быстро на новую таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 11:13 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин, Надстроить вьюху, которая union all из старой и новой таблиц, и обращаться к ней. Потом плавно перемещать данные из старой таблицы в новую. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 11:14 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин Но вопрос остается : как и на что заменить int идентити. который приближается к хэппи энду, но важна длительность операции. "Как" - вы вроде писали, что вам понятен метод, как это сделать без остановки сервиса. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 11:18 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
.Евгений Ролг Хупин, Надстроить вьюху, которая union all из старой и новой таблиц, и обращаться к ней. Потом плавно перемещать данные из старой таблицы в новую. Хмм... вариант интересный, но есть детали: реально там мастер таблица, под ней типа такой структуры Т1-> T2 T3-> T4 Подчиненные связаны с Т1 по этому идентити полю. База используется 24 часа в сутки ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 11:19 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин ... Проблема актуальна, потому отвечу: там написано не правильно. Не забывайте, что записи добавлялись, апдейтились, удалялись, следовательно identity шел к цели делая +1, а реальное количество записей сейчас (я ошибся там на один х) - xxx млн. ... была такая же проблема + требовали максимальный онлайн до момента, пока не дали пару дней для переезда на bigint пришлось глумиться: искал большие разрывы в identity и выставлял новое стартовое значение. но мне повезло тем, что удаления были массовые миллионами+ записей подряд. месяц так работало до переделки. а потом умер клиентский софт, заточенный под знаковый int32, но этот кактус грыз уже не я ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 16:20 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 16:25 |
|
Замена Identity в больших таблицах
|
|||
---|---|---|---|
#18+
Ролг Хупин ... Хмм... вариант интересный, но есть детали: реально там мастер таблица, под ней типа такой структуры Т1-> T2 T3-> T4 Подчиненные связаны с Т1 по этому идентити полю. База используется 24 часа в сутки Т.е. в подчинённых таблицах тоже близится хеппиенд? Еще будет забавно искать всю обвязку по коду, которая эту мастер-деталь поддерживает. Если в процедурах и клиент эти поля связок не видит, то еще есть шанс выжить. А если вшито в клиента - боль. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.01.2022, 16:33 |
|
|
start [/forum/topic.php?fid=46&msg=40114191&tid=1683935]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 185ms |
0 / 0 |