Re: INSERT ... ON CONFLICT & SERIAL

Lists: pgsql-ru-general
From: Dmitry E(dot) Oboukhov <unera(at)debian(dot)org>
To: pgsql-ru-general <pgsql-ru-general(at)lists(dot)postgresql(dot)org>
Subject: INSERT ... ON CONFLICT & SERIAL
Date: 2019-04-11 16:41:37
Message-ID: 8807441555000897@myt4-ea6eba8eca77.qloud-c.yandex.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

Применяем INSERT ... ON CONFLICT DO UPDATE - очень удобно. Код получается что вставки что правки один и тот же.
Тестов меньше, запросов меньше.

Удобно.

Однако есть связанное неудобство. Когда он идёт по ветке UPDATE, то инкрементируются SERIAL-последовательности.
В итоге приходится там где раньше хватило бы SERIAL простого - переходить на BIGSERIAL. Ну и разрывы в номерах
id получаются.

Никамильфо

есть какие-то идеи как победить эту проблему?


From: Андрей Зевакин <azevakin(at)gmail(dot)com>
To: "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org>
Cc: pgsql-ru-general <pgsql-ru-general(at)lists(dot)postgresql(dot)org>
Subject: Re: INSERT ... ON CONFLICT & SERIAL
Date: 2019-04-11 16:45:01
Message-ID: CAGfSdS44O-Mz-Z4TimDDJrV4E3ZwD9e=PmeeMP+fLB_gt=Ox+Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

А что если перейти на натуральные ключи? )

С уважением, Андрей Зевакин.

чт, 11 апр. 2019 г. в 21:41, Dmitry E. Oboukhov <unera(at)debian(dot)org>:

> Применяем INSERT ... ON CONFLICT DO UPDATE - очень удобно. Код получается
> что вставки что правки один и тот же.
> Тестов меньше, запросов меньше.
>
> Удобно.
>
> Однако есть связанное неудобство. Когда он идёт по ветке UPDATE, то
> инкрементируются SERIAL-последовательности.
> В итоге приходится там где раньше хватило бы SERIAL простого - переходить
> на BIGSERIAL. Ну и разрывы в номерах
> id получаются.
>
> Никамильфо
>
> есть какие-то идеи как победить эту проблему?
>
>
>


From: Вавржин Игорь <igor(dot)vavrjin(at)gmail(dot)com>
To: Андрей Зевакин <azevakin(at)gmail(dot)com>
Cc: "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org>, pgsql-ru-general <pgsql-ru-general(at)lists(dot)postgresql(dot)org>
Subject: Re: INSERT ... ON CONFLICT & SERIAL
Date: 2019-04-11 16:49:32
Message-ID: CAHGBwKhC4v1COuZhQFdFxAdnbMdWRMO6tFmp7ugB1OGm7sOzLQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

А можно поподробней? :) Что есть натуральные ключи?

чт, 11 апр. 2019 г., 23:45 Андрей Зевакин <azevakin(at)gmail(dot)com>:

> А что если перейти на натуральные ключи? )
>
> С уважением, Андрей Зевакин.
>
>
> чт, 11 апр. 2019 г. в 21:41, Dmitry E. Oboukhov <unera(at)debian(dot)org>:
>
>> Применяем INSERT ... ON CONFLICT DO UPDATE - очень удобно. Код получается
>> что вставки что правки один и тот же.
>> Тестов меньше, запросов меньше.
>>
>> Удобно.
>>
>> Однако есть связанное неудобство. Когда он идёт по ветке UPDATE, то
>> инкрементируются SERIAL-последовательности.
>> В итоге приходится там где раньше хватило бы SERIAL простого - переходить
>> на BIGSERIAL. Ну и разрывы в номерах
>> id получаются.
>>
>> Никамильфо
>>
>> есть какие-то идеи как победить эту проблему?
>>
>>
>>


From: Dmitry E(dot) Oboukhov <unera(at)debian(dot)org>
To: Андрей Зевакин <azevakin(at)gmail(dot)com>
Cc: pgsql-ru-general <pgsql-ru-general(at)lists(dot)postgresql(dot)org>
Subject: Re: INSERT ... ON CONFLICT & SERIAL
Date: 2019-04-11 16:49:46
Message-ID: 9956241555001386@iva1-44bdf084ee9e.qloud-c.yandex.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

<div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">11.04.2019, 19:45, "Андрей Зевакин" &lt;azevakin(at)gmail(dot)com&gt;:</div><blockquote xmlns="http://www.w3.org/1999/xhtml" type="cite"><div><div>А что если перейти на натуральные ключи? )</div><div> </div></div></blockquote><div xmlns="http://www.w3.org/1999/xhtml"><br />Вы имеете ввиду uuid? Или что-то другое?</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">SERIAL удобнее тем, что в таблице всегда хорошо видно где старые записи, где новые.</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">индекс для обойти данные от старых к новым или наоборот - как бы бесплатный</div><div xmlns="http://www.w3.org/1999/xhtml">(всё равно PRIMARY KEY делать что там что тут, а тут он еще и показывает порядок вставки).</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">Ну и там где мы распределённые системы не делаем, в общем SERIAL выглядит очень удобно.</div>

Attachment Content-Type Size
unknown_filename text/html 1.4 KB

From: Sergei Kornilov <sk(at)zsrv(dot)org>
To: Dmitry E(dot) Oboukhov <unera(at)debian(dot)org>, Андрей Зевакин <azevakin(at)gmail(dot)com>
Cc: pgsql-ru-general <pgsql-ru-general(at)lists(dot)postgresql(dot)org>
Subject: Re: INSERT ... ON CONFLICT & SERIAL
Date: 2019-04-11 16:54:13
Message-ID: 9322371555001653@myt4-929fb874f3f2.qloud-c.yandex.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-ru-general

<div xmlns="http://www.w3.org/1999/xhtml">Под натуральными ключами обычно подразумевают данные из непосредственно предметной области. Раз у вас есть on conflict - значит у вас уже есть уникальный ключ. Нет ли смысла выкинуть serial и использовать этот уникальный ключ в качестве PK?</div><div><br /></div><div><br /></div><div>11.04.2019, 19:49, "Dmitry E. Oboukhov" &lt;unera(at)debian(dot)org&gt;:</div><blockquote type="cite"><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">11.04.2019, 19:45, "Андрей Зевакин" &lt;<a href="mailto:azevakin(at)gmail(dot)com">azevakin(at)gmail(dot)com</a>&gt;:</div><blockquote xmlns="http://www.w3.org/1999/xhtml" type="cite"><div><div>А что если перейти на натуральные ключи? )</div><div> </div></div></blockquote><div xmlns="http://www.w3.org/1999/xhtml"><br />Вы имеете ввиду uuid? Или что-то другое?</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">SERIAL удобнее тем, что в таблице всегда хорошо видно где старые записи, где новые.</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">индекс для обойти данные от старых к новым или наоборот - как бы бесплатный</div><div xmlns="http://www.w3.org/1999/xhtml">(всё равно PRIMARY KEY делать что там что тут, а тут он еще и показывает порядок вставки).</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">Ну и там где мы распределённые системы не делаем, в общем SERIAL выглядит очень удобно.</div></blockquote>

Attachment Content-Type Size
unknown_filename text/html 2.1 KB