Pdo, postgresql, lastinsertid

Европа - быстрые серверы на дисках NVMe от $5 / Русский датацентр от 199руб

Тема в разделе "PHP & Postgres", создана пользователем junior17, 10 мар 2018.

Метки:
  1. WMix

    WMix герр M:)ller Партнер клуба

    Сообщения:
    6.311
    Ваш город:
    Berlin
    Address:
    Berlin, Germany
    Country:
    Location on Map:
  2. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.641
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Проблема не "в", проблема принципиальная и заключается в слове "auto".
    С сиквенсом ты всегда можешь вручную запросить следующее значение, гарантированно получив в своё пользование уникальный элемент последовательности, который больше не получит никто, и для этого не надо лезть в другие данные.
     
    junior17 нравится это.
  3. WMix

    WMix герр M:)ller Партнер клуба

    Сообщения:
    6.311
    Ваш город:
    Berlin
    Address:
    Berlin, Germany
    Country:
    Location on Map:
    проблема лишь в изменении состояния (запись) и считывания результата (чтение). получить новую секвенцию можно не меняя состояния (только читаем). а считать новый id во время изменения состояния это и писать, и читать. атомарны же оба подхода
     
    junior17 нравится это.
  4. Adelf

    Adelf Laravel&PhpStorm Команда форума

    Сообщения:
    3.337
    Ваш город:
    Казань
    Address:
    Kazan, Russia
    Country:
    Location on Map:
    Вот уж не думал, что на такую довольно тривиальную тему как секвенсы, можно развернуть такую дискуссию :)
    можно просто представить себе числовой ключ в редисе и команду incr. Все.
     
    junior17 нравится это.
  5. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.641
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Изменении состояния ЧЕГО? Считывании результата ЧЕГО?
    Это будет строго информативная операция, непригодная ни для какого использования, кроме статистического.
    Разница в том, что сиквенсы по определению ПОСЛЕДОВАТЕЛЬНЫ. Тогда как auto_increment всего лишь ИНКРЕМЕНТАЛЕН.
    Т.е. каждое следующее значения больше предыдущего, но не факт, что на единицу. Может и на сотню (REPLACE INTO …(100 строк за раз)).
     
    junior17 нравится это.
  6. WMix

    WMix герр M:)ller Партнер клуба

    Сообщения:
    6.311
    Ваш город:
    Berlin
    Address:
    Berlin, Germany
    Country:
    Location on Map:
    данных
    просто отделить команду от запроса
    и че? результат разный или не потребный? какая разница на сколько он (счетчик) сдвинулся, если оба варианта гарантируют уникальность, ну 100500 будет и че?
     
  7. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.641
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Даже 64-битный INT имеет дурацкую привычку переполняться.
     
  8. WMix

    WMix герр M:)ller Партнер клуба

    Сообщения:
    6.311
    Ваш город:
    Berlin
    Address:
    Berlin, Germany
    Country:
    Location on Map:
    SEQUENCE тоже не решает эту проблему.
     
  9. c0dex

    c0dex web.dev 2002-... Команда форума Партнер клуба

    Сообщения:
    7.718
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    @AnrDaemon, часто переполняется у тебя?
     
  10. Adelf

    Adelf Laravel&PhpStorm Команда форума

    Сообщения:
    3.337
    Ваш город:
    Казань
    Address:
    Kazan, Russia
    Country:
    Location on Map:
    @c0dex, раз в неделю как минимум, наверно :)
     
    grigori нравится это.
  11. c0dex

    c0dex web.dev 2002-... Команда форума Партнер клуба

    Сообщения:
    7.718
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    @Adelf, у меня пока максималка была в пару лярдов записей, и то это была моя ошибка в проектировании.
     
  12. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.641
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    У меня нет, а вот логи транзакций в Еве уже раза четыре укорачивали.
     
  13. c0dex

    c0dex web.dev 2002-... Команда форума Партнер клуба

    Сообщения:
    7.718
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
  14. Adelf

    Adelf Laravel&PhpStorm Команда форума

    Сообщения:
    3.337
    Ваш город:
    Казань
    Address:
    Kazan, Russia
    Country:
    Location on Map:
    ну тут разговор про id для сущности. логам то зачем? им там можно генерить чтото попроще. datatime+something
     
  15. grigori

    grigori ( ͡° ͜ʖ ͡°) Команда форума

    Сообщения:
    7.075
    Ваш город:
    Stormwind
    Address:
    Scottsdale, United States
    Country:
    Location on Map:
    цитата-кличко-2.jpg


    перечитав 4 раза, смыл я понять не смог
    [​IMG]
     
    Последнее редактирование: 17 мар 2018
  16. WMix

    WMix герр M:)ller Партнер клуба

    Сообщения:
    6.311
    Ваш город:
    Berlin
    Address:
    Berlin, Germany
    Country:
    Location on Map:
    Последнее редактирование: 17 мар 2018
  17. AnrDaemon

    AnrDaemon Продвинутый новичок

    Сообщения:
    4.641
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    @WMix, ты нас извини, но возникает желание задать вопрос - "что ты куришь?"

    Тебя не затруднит пояснить свою мысль на примерах? А то тебя не понимают уже двое… и мне кажется, это только начало.
     
  18. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.947
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    @WMix, я тоже не понял.
    Любой сиквенс это по определению stateful штука. Так что ясен фиг, что "проблема" с тем, что есть сайд-эффекты (капитан!). А вторую часть я тоже не осилил.
     
  19. WMix

    WMix герр M:)ller Партнер клуба

    Сообщения:
    6.311
    Ваш город:
    Berlin
    Address:
    Berlin, Germany
    Country:
    Location on Map:
    Сам sequence конечно имеет состояние.

    Любая программа это состояние данных и инпут. Данные мы храним в базе. Изменение состояния это insert ( ну и сейчас не интересные update/delete). Select и last insert id это считывание.
    А Команда (то что изменяет состояние) ничего не возвращает.
    Если пользоваться autoincrement то новый индентификатор получаешь постфактум, что заставляет на команду ответить этим новым индефикатором.

    Назовите вы плюсы секвенции если это не об этом.
     
  20. grigori

    grigori ( ͡° ͜ʖ ͡°) Команда форума

    Сообщения:
    7.075
    Ваш город:
    Stormwind
    Address:
    Scottsdale, United States
    Country:
    Location on Map:
    ответ от прапорщика: https://ru.wikipedia.org/wiki/Spinlock

    Любая программа - это состояние, события, и обработка. Обрабатывают процессоры. У процессоров есть атомарные операции.
    У последовательности (секвенция - в музыке) состояния нет. Состояние есть у ячейки памяти.
    Последовательность в SQL - это синтаксис для атомарного перебора целых чисел.
    В рамках int64 можно задать диапазон, увеличение или уменьшение, шаг, зацикленность.

    Результат атомарного перебора можно исползовать как иДЕНТИфикатор сущности в программе. Можно не использовать.
    Можно использовать значение одной последовательности в нескольких однородных сущностях - я так делаю иногда. Например, ID внутренних и внешних транзакций у меня из одной последовательности.
    У последовательности может быть глобальная область видимости, или только для текущего соединения.
    Можно не записывать результат перебора в базу, а использовать в хранимых процедурах.

    С автоинкрементом доступа к атомарной операции нет. Можно только увеличить внутреннюю переменную, и записать результат в поле главного ключа таблицы.