Size: a a a

2020 December 19

АГ

Алексей Гевондян... in PHP
надо вынести этот синтаксис в одно место, и тогда не вижу проблемы. если он будет размазан по всему проекту - то да, плохо.
источник

АС

Альберт Степанцев... in PHP
Андрей Крошкин
Вощем история с локами мне не очень нравится, возможно есть какое-то более элегантное решение без них
решение очень простое - позвольте базе данных работать
источник

АС

Альберт Степанцев... in PHP
а не изобретайте свои механизмы поверх БД
источник

АК

Андрей Крошкин... in PHP
Sergei Baikin
Ну тогда вопрос а почему клиент пишет одно и тоже каждую секунду?
Возможно строит разобраться с первопричиной а не костыли пихать?
Ага, подождать следующего релиза и исправить это на клиентах. А до следующего релиза забить.
источник

АС

Альберт Степанцев... in PHP
выглядит это так, как будто бы вы не разобрались в транзакциях и локах и пытаетесь придумать свои
источник

АС

Альберт Степанцев... in PHP
»  Т.е. я должен проверить существует ли запись в таблице для данного пользователя и обновить её или создать новую.
Вот тут у вас ошибка
фатальная
источник

АС

Альберт Степанцев... in PHP
такая проверка совершенно бессмысленная
потому что между вашим SELECT с проверкой и следующим INSERT запись может появиться
источник

АС

Альберт Степанцев... in PHP
вам уже сказали - используйте UPSERT, конкретная форма зависит от вашей БД
источник

ЛZ

Личинка Кайтера Zori... in PHP
Upsert зло
источник

АК

Андрей Крошкин... in PHP
Альберт Степанцев
вам уже сказали - используйте UPSERT, конкретная форма зависит от вашей БД
И грузите мастер ими...ага ага
источник

АС

Альберт Степанцев... in PHP
грузить тупыми ненужными селектами - лучше?
источник

АК

Андрей Крошкин... in PHP
Альберт Степанцев
грузить тупыми ненужными селектами - лучше?
Так локи же, никто никого селектами не грузит.
источник

АС

Альберт Степанцев... in PHP
да делайте как хотите
только неясно - зачем с вопросами приходить, если вас ответы не устраивают?
источник

АК

Андрей Крошкин... in PHP
Альберт Степанцев
да делайте как хотите
только неясно - зачем с вопросами приходить, если вас ответы не устраивают?
Это называется дискуссия. Мне стало интересно кто как решает.
источник

АГ

Алексей Гевондян... in PHP
Андрей Крошкин
Это называется дискуссия. Мне стало интересно кто как решает.
я бы все же пообщался еще с девопсами / dba, чтобы больше мнений услышать.
источник

АГ

Алексей Гевондян... in PHP
проблема не про разработку / пхп, а про взаимодействие с бд все-таки
источник

ВУ

Валентин Удальцов... in PHP
Андрей Крошкин
Это если на нативном, но мы стараемся не прибегать к нему.
И очень плохо. Взять богатую фичами бд и обрезать её ормкой, а потом удивляться, что задачи не решаются.
источник

NO

Nex Otaku in PHP
Андрей Крошкин
Ребят, такой вопрос созрел: Кто как решает проблему отставания слейвов? Понятно, что на какое-то небольшое время они будут отставать. Вот например, клиентское приложение присылает нам свой часовой пояс и мы должны его сохранить в базу с привязкой к пользователю, идентификатор пользователя уникален в таблице. Т.е. я должен проверить существует ли запись в таблице для данного пользователя и обновить её или создать новую. Но чтение всегда со слейва.
"Но чтение всегда со слейва."

Вот здесь и заключается ваша ошибка.

Если у вас используется мастер-слейв репликация, то чтение нельзя делать всегда со слейва, потому что сразу полезут проблемы подобные описанной.

В тех местах где нужно твёрдо знать актуальное состояние, читайте из мастера. В остальных — со слейва. В описанном вами случае читать нужно из мастера.
источник

АК

Андрей Крошкин... in PHP
Валентин Удальцов
И очень плохо. Взять богатую фичами бд и обрезать её ормкой, а потом удивляться, что задачи не решаются.
Меня это тоже печалит.
источник

АК

Андрей Крошкин... in PHP
Nex Otaku
"Но чтение всегда со слейва."

Вот здесь и заключается ваша ошибка.

Если у вас используется мастер-слейв репликация, то чтение нельзя делать всегда со слейва, потому что сразу полезут проблемы подобные описанной.

В тех местах где нужно твёрдо знать актуальное состояние, читайте из мастера. В остальных — со слейва. В описанном вами случае читать нужно из мастера.
Всё так, в рамках текущей задачи это было бы отличным решением.
источник