C API и получение необработанного сокета - PullRequest
1 голос
/ 16 сентября 2011

Я пишу приложение, которое должно взаимодействовать с MySQL. Это однопоточное приложение, которое использует системный вызов epoll linux для мультиплексирования клиентов, но проблема в том, что все останавливается всякий раз, когда я выполняю (тяжелые) запросы к базе данных. Поэтому я подумал получить настоящий сокет из mysql и поместить его в свой epoll, чтобы я тоже мог мультиплексировать базу данных. Это возможно?

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Статья http://jan.kneschke.de/2008/9/9/async-mysql-queries-with-c-api/ отвечает на вопрос. Работает с MySQL 5.6.

0 голосов
/ 16 сентября 2011

Это немного сложнее, чем это.Если «все останавливается» (можно только догадываться, что вы технически подразумеваете под этим), то ваш сервер MySQL, вероятно, перегружен.Мультиплексирование одного соединения не только, вероятно, не сработает, но и не решит эту корневую проблему.

Вместо этого исправьте ваши запросы и индексы, чтобы не происходило сканирование больших таблиц и сортировка файлов.

...