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

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

| 0 / 0 |
