Size: a a a

pgsql – PostgreSQL

2021 February 12

РЖ

Роман Жарков... in pgsql – PostgreSQL
Tima
Ну у меня есть данные, и они не по порядку. Т.е например 2001 год стоит под id 5, когда должен быть под id 1.
Я хочу остортировать по году, и перезаписать новый sequence. Это возможно ?
select (row_number() over ()), name from abc order by name;
row_number | name
------------+------
         1 | 1234
         2 | 1567
         3 | 2020
(3 rows)
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
Сохранить внутри красивой промежуточной таблицы и сунуть вместо содержимого старой.
Секвенцию отдельно исправить ( sequence, а не поле в таблице ).
Лучше потренироваться на кошках сначала.
источник

s

sexst in pgsql – PostgreSQL
Tima
Ребят, мне нужно отсортировать таблицу по году, и обнулить sequence, чтоб отсчёт шел от 1, как мне это сделать?
Нескромный вопрос: зачем? Sequence используют для хранения порядка возникновения записей. Если вам этот попядок вообще не нужен, то зачем хранить его? Грохните столбец, оставьте дату и сортируйте по ней
источник

РЖ

Роман Жарков... in pgsql – PostgreSQL
sexst
Нескромный вопрос: зачем? Sequence используют для хранения порядка возникновения записей. Если вам этот попядок вообще не нужен, то зачем хранить его? Грохните столбец, оставьте дату и сортируйте по ней
Да лаба очередная, всяко.
источник

s

sexst in pgsql – PostgreSQL
Нафиг такие лабы, которые приучают думать подобными решениями.
источник

DG

Dimitri Grinkevich in pgsql – PostgreSQL
Георгий Ава
Напрямую наверное нет, id скорее всего uniq. Ч/з промежуточное значение.
rtfm ТРАНЗАКЦИЯ
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Михаил Шурутов
А я бы настроил archive_command на мастере и restore_command на реплике. Слоты репликации имеют очень неприятное свойство забивать $PG_DATA, когда реплика начинает отставать, а вы с этим ничего поделать не можете. Было и такое - диски на реплике просели на запись, и оппа! 95% PG_DATA занято. Аврал, полкомпании рвут все разные части тел, ну и вот это вот всё...
Можно и то, и другое настраивать, кстати. ;)
Но если уже есть архив или есть возможность его сделать (+ещё сервер, то есть) — лучше streaming + restore_command, да.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
sexst
Нескромный вопрос: зачем? Sequence используют для хранения порядка возникновения записей. Если вам этот попядок вообще не нужен, то зачем хранить его? Грохните столбец, оставьте дату и сортируйте по ней
Не используют. ;) Он гарантирует только уникальность (и используется в основном для суррогатных ключей), к порядку возникновения записей отношения в общем случае не имеет.

> Нафиг такие лабы, которые приучают думать подобными решениями.

Я к тому, что нафиг такие представления, которые потом, к примеру, приводят к "решениям" по "синхронизации" данных в таблицах, завязанным на sequences. ;)
источник

s

sexst in pgsql – PostgreSQL
Yaroslav Schekin
Не используют. ;) Он гарантирует только уникальность (и используется в основном для суррогатных ключей), к порядку возникновения записей отношения в общем случае не имеет.

> Нафиг такие лабы, которые приучают думать подобными решениями.

Я к тому, что нафиг такие представления, которые потом, к примеру, приводят к "решениям" по "синхронизации" данных в таблицах, завязанным на sequences. ;)
Если рассматривать в рамках базы, то да: значение, взятое позже, может банально быть закоммичено первым.
Если смотреть на весь условно-абстрактный сервис, использующий базу, то легко можно организовать такое, что генерируемые сервисом события в момент возникновения будут свои id в валидной последовательности получать, а время фактического коммита в базу при этом глубоко пофигу. Интересует только порядок появления события.
Да, в этом свои костыли горами  лежат неприкрыто, но используют же)
источник

s

sexst in pgsql – PostgreSQL
Ну и да, если смотреть в разрезе уникальных суррогатных ключей, то смысла ещё меньше
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
sexst
Если рассматривать в рамках базы, то да: значение, взятое позже, может банально быть закоммичено первым.
Если смотреть на весь условно-абстрактный сервис, использующий базу, то легко можно организовать такое, что генерируемые сервисом события в момент возникновения будут свои id в валидной последовательности получать, а время фактического коммита в базу при этом глубоко пофигу. Интересует только порядок появления события.
Да, в этом свои костыли горами  лежат неприкрыто, но используют же)
Это да, но тут уже нужно "организовывать".
И при этом обычно теряется основное свойство sequence — высокая производительность за счёт нетранзакционности.
источник

T

Tima in pgsql – PostgreSQL
Да
источник

s

sexst in pgsql – PostgreSQL
Yaroslav Schekin
Это да, но тут уже нужно "организовывать".
И при этом обычно теряется основное свойство sequence — высокая производительность за счёт нетранзакционности.
Ну человек зачем-то переделать их хочет согласно порядку записей при сортировке по столбцу дат. Значит порядок значений этой последовательности чем-то принципиален и что-то в него автором заложено. Возможно это и не работает даже правильно за пределами головы автора, но наличие смысла в порядке значений таки подразумевается.

Я вот и пытаюсь выяснить зачем оно, а другого варианта, кроме вышеописанного, я и сам даже за уши притянуть не могу)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
sexst
Ну человек зачем-то переделать их хочет согласно порядку записей при сортировке по столбцу дат. Значит порядок значений этой последовательности чем-то принципиален и что-то в него автором заложено. Возможно это и не работает даже правильно за пределами головы автора, но наличие смысла в порядке значений таки подразумевается.

Я вот и пытаюсь выяснить зачем оно, а другого варианта, кроме вышеописанного, я и сам даже за уши притянуть не могу)
Да, у автора задача совершенно "бесполезная", почти наверняка (как раз вызванная непониманием того, зачем нужны sequences и как они работают). ;)
источник

T

Tima in pgsql – PostgreSQL
Мне кажется что автор ещё совсем зелёный джун, которому дядя сениор сказал "отсортируй по году, и чтоб id начинался с 1". Давайте все будем лояльны к автору и укажем ему правильный путь, ну или нафиг его, пусть гуглит
источник

KK

Konstantin Knizhnik in pgsql – PostgreSQL
Slvr
Теоретический вопрос по перформансу (негде проверять сейчас, да и скорее просто интересно чем критично)😄

Есть скажем 1млн записей id,name,some_number_val

содержимое поля “name” всегда содержит некоторый префикс. K примеру: “B: Nike”; “C: Running Shoes”; “G: Shoes”

Учитывая что по name есть индекс: Что будет быстрее - запросы с фильтром: where name like “B:%”  или запрос по полю some_type = “B” (ситуация в которой префикс продублирован в отдельное поле)
Это зависит от очень многих факторов: от средней длины ключа, селективности префиксов, влезает ли индекс в память... Разница может быть от гомеопатической до гомерической.
источник

К

Кирилл in pgsql – PostgreSQL
Подскажите плиз как правильно записать данную команду
psql -U postgres -d broker -c 'DELETE FROM broker_user WHERE id='2';'
источник

СС

Санька Скайуокер... in pgsql – PostgreSQL
Кирилл
Подскажите плиз как правильно записать данную команду
psql -U postgres -d broker -c 'DELETE FROM broker_user WHERE id='2';'
Записать куда?
источник

К

Кирилл in pgsql – PostgreSQL
Санька Скайуокер
Записать куда?
в командную строку
источник

СС

Санька Скайуокер... in pgsql – PostgreSQL
так и вставляй XD
источник