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

Как да получите достъп до MySQL от няколко нишки едновременно

Като поддържащ доста голямо C приложение, което прави MySQL извиквания от множество нишки, мога да кажа, че не съм имал проблеми просто да направя нова връзка във всяка нишка. Някои предупреждения, на които се натъкнах:

  • Редактиране:изглежда, че този куршум се отнася само за версии <5.5; вижте тази страница за вашата подходяща версия : Както казвате, че вече го правите, свържете се с libmysqlclient_r .
  • Обадете се на mysql_library_init() (веднъж, от main() ). Прочетете документите за използването в многонишкови среди, за да видите защо е необходимо.
  • Направете нов MYSQL структура, използваща mysql_init() във всяка нишка. Това има страничния ефект от извикването на mysql_thread_init () за теб. mysql_real_connect() както обикновено във всяка нишка, с нейната специфична за нишка MYSQL структура.
  • Ако създавате/унищожавате много нишки, ще искате да използвате mysql_thread_end() в края на всяка нишка (и mysql_library_end() в края на main() ). Така или иначе е добра практика.

По принцип не споделяйте MYSQL структури или нещо създадено специфично за тази структура (т.е. MYSQL_STMT s) и ще работи, както очаквате.

Това ми изглежда по-малко работа от създаването на пул за връзки.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL и JSON - трансформирайте масива в редове

  2. Как се прави моделиране на наследяване в релационни бази данни?

  3. Датата на PHP/Mysql е запазена като '0000-00-00'

  4. Името на MySQL схема с тире не ми позволява да изпълня заявка от командния ред

  5. ограничение на записите на mysql workbench