SELECT и UPDATE одновременно в многопотоке

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
Как альтернатива локам в самом MySQL, можно всю работу с БД перенести в кубик C# и просто лочить его ... никакой другой поток не вклинится в работу с БД
Код:
lock(SyncObject){
// тут работаем с БД
}
 
  • Спасибо
Реакции: boorik2

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Локается вся таблица?
Таблица.

потоки отваливаются не успев дождаться пока лок снимется.
Вообщем у меня получается что бы не сыпались ошибки по таймаут разлока таблица нормально шаблон может работать в 25 потоков. Если больше, начинаются потоки отваливается по ошибке. Судя по всему, особенности метода лока.
 
  • Спасибо
Реакции: boorik2

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Как альтернатива локам в самом MySQL, можно всю работу с БД перенести в кубик C# и просто лочить его ... никакой другой поток не вклинится в работу с БД
Код:
lock(SyncObject){
// тут работаем с БД
}
Конвертировать в С#? Он по моему с ошибкой конвертиться. Не знаю, может пофиксили. Можете выложить рабочий пример запроса?
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Локается вся таблица?
или только строки, с которыми связан запрос?
В принципе, если лочить только запросы а не всю таблицу как в приведенном примере, это значительно улучшило бы ситуацию с ожиданием снятия лока.
 

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
Конвертировать в С#? Он по моему с ошибкой конвертиться. Не знаю, может пофиксили. Можете выложить рабочий пример запроса?
готового примера к сожалению нет ... это так, мысли вслух про то как избежать того что разные потоки вклиниваются
 

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
В принципе, если лочить только запросы а не всю таблицу как в приведенном примере, это значительно улучшило бы ситуацию с ожиданием снятия лока.
Это должен поддерживать движок ... например таблицы MyISAM в принципе не имеют поддержки локов на уровне строк, а InnoDB имеет. Но у вас все равно 2 отдельных запроса и между ними кто то может вклиниться
 
  • Спасибо
Реакции: one

inotoxic

Client
Регистрация
20.04.2015
Сообщения
354
Благодарностей
164
Баллы
43
Вообщем у меня получается что бы не сыпались ошибки по таймаут разлока таблица нормально шаблон может работать в 25 потоков. Если больше, начинаются потоки отваливается по ошибке. Судя по всему, особенности метода лока.
Может ограничение на кол-во потоков стоит на уровне БД ?
Проверить можно запросом
SQL:
show variables like 'max_connections';
Стандартное ограничение 30 потокв
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
У меня выставленно с запасом.

Код:
max_connections = 550
 

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
Камрады, у кого свежая версия ZP ? Там поправили код C# получаемый из кубика для работы с MySQL ?
А то сейчас срочно понадобилось заюзать БД, а в моей 5.11.4 код при конвертации в C# получается не рабочий.
Буду премного благодарен если кинете рабочую версию кода с помещением результата в список ... ну и для запросов без ответа и скаляра то же не помешал бы, там видимо код немного различается.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)