Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как проапдэйтить таблицу, близкую к переполнению? / 7 сообщений из 7, страница 1 из 1
05.12.2018, 11:02
    #39742723
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проапдэйтить таблицу, близкую к переполнению?
Добрый день.

Есть таблица t1, в ней поле id.


id - PK.


значения id близки к переполнению bigint.


Подскажите, как проапдэйтить таблицу, присвоив id значения от 1 до (select count(*) from t1) ?
...
Рейтинг: 0 / 0
05.12.2018, 11:40
    #39742741
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проапдэйтить таблицу, близкую к переполнению?
УткъДобрый день.

Есть таблица t1, в ней поле id.


id - PK.


значения id близки к переполнению bigint.


Подскажите, как проапдэйтить таблицу, присвоив id значения от 1 до (select count(*) from t1) ?

как вы вообще добились переполнения id то для bigint? это задача на много тысяч лет...

в вашем случае надо или
1)тупо сделать update всей таблицы из sequence если у вас таблица в реальности не больше нескольких гигабайт и вы можете пережить ее распухание в два раза
или
2)
1 - добавляем новое поле id_new bigserial
2 - неспешно пачками по 10000 записей проставляем для id_new значения из nextval в цикле пока все не обновится
3 - создаем уникальный индекс конкурентно
4 - ставим not null на id_new (или с блокировкой или напрямую в каталоге)
5 - в транзакции дропаем старый pk и добавляем новый pk используюя индекс из 3 и там же переименовываем id в id_old а id_new в id
6 - удаляем из таблицы id_old

это все в предположении что у вас нет fk ссылающихся на этот id
если таковые есть - то вы попали на весьма геморойную миграцию по сравнению с которой 2) - это цветочки.
...
Рейтинг: 0 / 0
05.12.2018, 11:50
    #39742744
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проапдэйтить таблицу, близкую к переполнению?
Maxim BogukУткъДобрый день.

Есть таблица t1, в ней поле id.


id - PK.


значения id близки к переполнению bigint.


Подскажите, как проапдэйтить таблицу, присвоив id значения от 1 до (select count(*) from t1) ?

как вы вообще добились переполнения id то для bigint? это задача на много тысяч лет...

в вашем случае надо или
1)тупо сделать update всей таблицы из sequence если у вас таблица в реальности не больше нескольких гигабайт и вы можете пережить ее распухание в два раза
или
2)
1 - добавляем новое поле id_new bigserial
2 - неспешно пачками по 10000 записей проставляем для id_new значения из nextval в цикле пока все не обновится
3 - создаем уникальный индекс конкурентно
4 - ставим not null на id_new (или с блокировкой или напрямую в каталоге)
5 - в транзакции дропаем старый pk и добавляем новый pk используюя индекс из 3 и там же переименовываем id в id_old а id_new в id
6 - удаляем из таблицы id_old

это все в предположении что у вас нет fk ссылающихся на этот id
если таковые есть - то вы попали на весьма геморойную миграцию по сравнению с которой 2) - это цветочки.


Спасибо, вариант 1 оказался.
Тупо проапдэйтил в цикле по ctid каждую запись таблицы.
...
Рейтинг: 0 / 0
05.12.2018, 15:42
    #39742913
Alex URS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проапдэйтить таблицу, близкую к переполнению?
так и не раскрыл тайну,
как можно добится переполнения id для bigint при нормальной работе
девять тысяч квадриллионов или более девяти триллионов...
Уткъ , открой секрет
...
Рейтинг: 0 / 0
05.12.2018, 16:28
    #39742951
Уткъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проапдэйтить таблицу, близкую к переполнению?
Alex URSтак и не раскрыл тайну,
как можно добится переполнения id для bigint при нормальной работе
девять тысяч квадриллионов или более девяти триллионов...
Уткъ , открой секрет

Система анализа действий автоматической классификации пользователей в социальных сетях. (SoAU 12.3)
...
Рейтинг: 0 / 0
05.12.2018, 17:02
    #39742993
Alex URS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проапдэйтить таблицу, близкую к переполнению?
позвольте тогда полюбопытствовать:
если закладывали такую систему, то наверняка знали об объеме информации
почему не воспользовались uuid? дата/время записи наверняка ж присутствует, поэтому отсутствием последовательности пожно пренебреч, соблюдая уникальность uuidником
либо причины в ином?
(у меня чисто спортивный интерес)
...
Рейтинг: 0 / 0
05.12.2018, 17:50
    #39743028
Karbafos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проапдэйтить таблицу, близкую к переполнению?
Alex URSпозвольте тогда полюбопытствовать:
если закладывали такую систему, то наверняка знали об объеме информации
почему не воспользовались uuid? дата/время записи наверняка ж присутствует, поэтому отсутствием последовательности пожно пренебреч, соблюдая уникальность uuidником
либо причины в ином?
(у меня чисто спортивный интерес)

мне тоже интересно, т.к. даже совершая сто миллиардов инкрементов в секунду, этого хватит почти на 6 лет.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как проапдэйтить таблицу, близкую к переполнению? / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]