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, "Андрей Зевакин" <azevakin(at)gmail(dot)com>:</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" <unera(at)debian(dot)org>:</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, "Андрей Зевакин" <<a href="mailto:azevakin(at)gmail(dot)com">azevakin(at)gmail(dot)com</a>>:</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 |