Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да зададете изчакване за MySQL заявка с помощта на C API

Добре, намерих решение.. Благодарение на Will и PRR (моят колега).

Азне мога стартирайте нова нишка за всяка заявка, тъй като това е приложение в реално време, което трябва да обработва 1000+ съобщения в секунда..(все пак благодарение на R.. за идеята).

Също така, не беше възможно да се прекрати връзката през библиотеката, нито да се отмени/убие заявката, тъй като проблемът беше в DB сървъра..

И ето едно решение с груба сила, но все пак много по-добро от _EXIT( FAILURE ) :Ето свързания въпрос:"Как да принудим затваряне сокет на Linux?" - така че току-що затворих сокета с помощта на системно повикване.

Важна ЗАБЕЛЕЖКА :(благодаря на Will) - Оказа се, че обвивката на нашата MySQL библиотека има флаг "fail-safe", така че при затворен сокет (или друга критична грешка) се опитва да "реши" проблема, така че отново отваря сокета , само по себе си, в моя случай. И така, току-що изключих тази опция и всичко е наред сега - изпълнението е прекратено поради изключение - това е "най-мекият" начин да направите това.
Това трябва да стане чрез друга нишка, разбира се - a таймер, например.

РЕДАКТИРАНЕ: Времето за изчакване наистина работи за версии след 5.0.25. Но поне на RHEL4 и RHEL5 изчакванията се утрояват по някаква причина! Например, ако някои от изчакванията са зададени на 20 секунди, реалното изчакване е ~60 секунди..
Освен това, друго важно нещо е, че тези изчаквания (както всички други опции) ТРЯБВА се задаваслед mysql_init ипреди mysql_connect или mysql_real_connect .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Правилен формат за PDO и MySQL IN/NOT IN заявки

  2. По-добър начин да изберете всички колони от първата таблица и само една колона от втората таблица при вътрешно свързване

  3. грешка (обектът 'datetime.datetime' няма атрибут 'split') в django 1.11.4

  4. Достъпът е отказан за потребител ''@'localhost' (използвайки парола:НЕ)

  5. MySQL при каскада за изтриване. Пример за тест