Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 387

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

02.08.2019, 11:19. Показов 2204. Ответов 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,912
05.08.2019, 12:35
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
ТС сказал, что между чтением и вставкой ещё ряд телодвижений происходит. Т.е. не допустимо, чтобы чтобы две транзакции приняли решение о вставке одной и той же записи.
Тогда нужно сразу добавлять временную ("фиктивную") запись, затем выполнять все телодвижения и затем обновлять.
Иначе получается, что первый процесс блокирует всю таблицу на чтение. Остальные процессы ждут, даже если работают с другим гуидом. А самое неприятное - процессы, которые ничего не собираются добавлять, тоже ждут.

Цитата Сообщение от Usaga Посмотреть сообщение
Я бы рассмотрел вариант с отдельной таблицей для разруливания блокировок.
Добавлять временную запись ("собираюсь вставить такой гуид") в другую таблицу? Если по какой-то причине в основную таблицу временную запись вставлять нельзя, то придётся так и делать.
0
Эксперт .NET
 Аватар для Usaga
14745 / 9519 / 1364
Регистрация: 21.01.2016
Сообщений: 35,916
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
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера 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, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru