|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - Изоляция, SELECT FOR UPDATE |
|
MySQL - Изоляция, SELECT FOR UPDATE
|
Пользователь Сообщения: 78 |
Профиль | Отправить PM | Цитировать
Добрый день!
Оптимизирую код, вычищал места где запросы проходят не атомарно. К примеру, есть основная таблица аккаунтов, есть гостевая. Переделываю в связи с ОЧЕНЬ большим количеством параллельных потоков, и высокой вероятностью обращения к одному иденту из разных потоков. UPDATE main_acc SET balance=(balance-"tarif") WHERE id="XXXX" //это главная таблица UPDATE guest_acc SET balance = (SELECT balance FROM main_acc WHERE id="XXXX" LIMIT 1 FOR UPDATE) WHERE main_id="XXXX" //это "альтернативные локации" Тарификация, короче. Было иначе, сначала считывал, потом обновлял. И тут возник вопрос, а что будет, если другой поток спросит SELECT id FROM main_acc WHERE hex_ident="HEX" - к слову, поле hex_ident не является первичным, но является уникальным. Если строка в этот момент будет в блокировке, то что произойдет? Будет ждать освобождения строки, надеюсь??? Т.е если под критерий SELECT...WHERE попадают строки находящиеся в блокировке, они не исключаются из выборки? А то чревато ложным появлением ситуации "account not found" со всеми вытекающими прискорбными последствиями |
|
Отправлено: 10:16, 25-02-2019 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать evpu, по-хорошему, документацию читать надо. Бо, хоть принципы у реляционных баз данных и общие, но реализация может иметь отличия в ту или иную сторону, причём не только у разных продуктов, но у разных версий одного и того же продукта.
|
Отправлено: 14:05, 25-02-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:30, 25-02-2019 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Изоляция графов аудиоустройств грузит проц | DimonNT | Microsoft Windows 10 | 1 | 06-08-2015 19:12 | |
Прочее - [решено] Изоляция машин от других в сети. | volodija@vk | Сетевое оборудование | 9 | 29-05-2015 14:39 | |
Прочее - Изоляция Сети от ПК из других сетей | volodija@vk | Сетевое оборудование | 11 | 16-04-2015 08:13 | |
2008 - Изоляция одной сети от другой. Необходим совет. | DemonSKED | Windows Server 2008/2008 R2 | 23 | 19-11-2010 16:57 | |
Изоляция пользователей | fire_on_line | Microsoft Windows NT/2000/2003 | 9 | 18-07-2006 00:21 |
|