![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - Изоляция, SELECT FOR UPDATE |
|
MySQL - Изоляция, SELECT FOR UPDATE
|
Пользователь Сообщения: 78 |
Добрый день!
Оптимизирую код, вычищал места где запросы проходят не атомарно. К примеру, есть основная таблица аккаунтов, есть гостевая. Переделываю в связи с ОЧЕНЬ большим количеством параллельных потоков, и высокой вероятностью обращения к одному иденту из разных потоков. 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 |
|