Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.12.2017, 08:07
|
|||
|---|---|---|---|
|
|||
Транзакции и блокировки в MySQL |
|||
|
#18+
Всем привет. Перечитал много статей по транзакциям и блокировкам в MySQL, но пока так и не понял, что следует использовать для моего случая. Имеется таблица clients с полем balance, где записан баланс пользователя. Пользователь в интерфейсе вводит сумму, которую хочет списать и в результате поле balance должно быть обновлено для данного клиента. Как защитить себя от того, что два процесса могут одновременно считать и записать данные в одну строку. Таблица InnoDB. Заранее благодарен за помощь в этом вопросе! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.12.2017, 08:27
|
|||
|---|---|---|---|
Транзакции и блокировки в MySQL |
|||
|
#18+
BIS-10-2Как защитить себя от того, что два процесса могут одновременно считать и записать данные в одну строку.Зависит от того, каким кодом это выполняется. Если используется тупое Код: sql 1. 2. 3. то никакие транзакции/блокировки не помогут (ну то есть можно, конечно, заблокировать запись при её открытии, но это будет как бы не хуже). Можно использовать контролирующее Код: sql 1. 2. 3. 4. после чего смотреть affected_rows на предмет того, выполнено ли обновление. Если нет - выводить сообщение "Пока Вы тут телились, кто-то изменил значение". А вообще надо плясать от логики процесса - возможно, обновление можно разрешить даже в случае, когда текущее значение изменено другим пользователем - например, контролировать, что после обновления баланс не снесёт в минус... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.12.2017, 23:18
|
|||
|---|---|---|---|
Транзакции и блокировки в MySQL |
|||
|
#18+
если прочитать и списать по времени недалеко друг от друга то start transaction isolation level serializable если далеко то вариант Акины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&tablet=1&tid=1830194]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 148ms |

| 0 / 0 |
