28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 387

Многопоточная обработка sql данных

02.08.2019, 11:19. Показов 2232. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Например, нужно обработать все уникальные входящие http запросы, и все уникальные запросы записать в базу.

Пусть уникальный параметр (из url строки) будет guid.

Как делаю я
сперва проверяем уникальный ли параметр
SQL
1
SELECT COUNT(guid) FROM mybasa WHERE `guid`="guid"
если count(guid)==0 то второй строчкой пишем в базу. Всё как бы хорошо, но есть НО

Если одновременно придут два запроса, то может получится так что оба на первом этапе проверят, что guid такого нет и оба запишутся в базу. Как этого правильно избежать ?

База mysql, таблица MyISAM (изменять тип нельзя)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.08.2019, 11:19
Ответы с готовыми решениями:

Многопоточная обработка блоков данных
Всех приветствую, проблема вот в чем, работая с многопоточностью в Qt столкнулся с вопросом как правильно обрабатывать блоки данных. ...

Многопоточная обработка данных + ввод/вывод
Доброго времени суток! Пишу небольшое консольное приложение, и у меня возникли некоторые вопросы. Надеюсь, кто-нибудь мне поможет. ...

Многопоточная обработка данных в 1С 8.х Как правильно и универсально это организовать ?
Добрый день. Есть алгоритм расчета, требующий больших ресурсов и есть понимание что его можно распаралелить по некому признаку. все...

21
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,915
05.08.2019, 12:35
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
ТС сказал, что между чтением и вставкой ещё ряд телодвижений происходит. Т.е. не допустимо, чтобы чтобы две транзакции приняли решение о вставке одной и той же записи.
Тогда нужно сразу добавлять временную ("фиктивную") запись, затем выполнять все телодвижения и затем обновлять.
Иначе получается, что первый процесс блокирует всю таблицу на чтение. Остальные процессы ждут, даже если работают с другим гуидом. А самое неприятное - процессы, которые ничего не собираются добавлять, тоже ждут.

Цитата Сообщение от Usaga Посмотреть сообщение
Я бы рассмотрел вариант с отдельной таблицей для разруливания блокировок.
Добавлять временную запись ("собираюсь вставить такой гуид") в другую таблицу? Если по какой-то причине в основную таблицу временную запись вставлять нельзя, то придётся так и делать.
0
Эксперт .NET
 Аватар для Usaga
14783 / 9557 / 1366
Регистрация: 21.01.2016
Сообщений: 36,033
05.08.2019, 12:42
Shamil1, добавлять "драфт" в основную таблицу может быть не безопасно. Это надо будет научить весь код, который с этой таблицей работает, различать драфты. Ну и отсутствие транзакций может мусор оставить в таблице.

Отдельная таблица тоже не верх элегантности, но её если что можно будет и дропнуть спокойно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.08.2019, 12:42

Многопоточная обработка
Здравствуйте! Есть while, который берет записи из базы данных и обрабатывает их с помощью методов класса, а затем результат записывает...

Многопоточная обработка
Здравствуйте, хочу сразу сказать, что это не вопрос, а больше ответ для тех, кто в нем нуждается/будет нуждаться. Очень много проблем...

Многопоточная обработка дерева
Есть следующий класс реализующий интерфейс Runnable: public class TreeHandler implements Runnable { private String name; ...

Многопоточная обработка изображений
Приложение должно обеспечивать запуск до 10 потоков, обрабатывающих до 10 различных изображений (размер и вид изображений могут быть...

Многопоточная обработка массива
В общем, есть два задания: 1. Реализуйте последовательную обработку элементов вектора, например, умножение элементов вектора на число....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Опции темы

Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru