Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So greifen Sie gleichzeitig von mehreren Threads auf MySQL zu

Als Betreuer einer ziemlich großen C-Anwendung, die MySQL-Aufrufe von mehreren Threads aus durchführt, kann ich sagen, dass ich keine Probleme damit hatte, einfach in jedem Thread eine neue Verbindung herzustellen. Einige Vorbehalte, auf die ich gestoßen bin:

  • Bearbeiten:Anscheinend gilt dieser Aufzählungspunkt nur für Versionen <5.5; siehe diese Seite für Ihre passende Version : Wie Sie sagen, dass Sie es bereits tun, verknüpfen Sie mit libmysqlclient_r .
  • Rufen Sie mysql_library_init() (einmal von main() ). Lesen Sie die Dokumentation zur Verwendung in Multithread-Umgebungen, um zu sehen, warum dies notwendig ist.
  • Erstellen Sie ein neues MYSQL Struktur mit mysql_init() in jedem Thread. Dies hat den Nebeneffekt, dass mysql_thread_init aufgerufen wird () für dich. mysql_real_connect() wie üblich in jedem Thread, mit seiner Thread-spezifischen MYSQL-Struktur.
  • Wenn Sie viele Threads erstellen/zerstören, sollten Sie mysql_thread_end() am Ende jedes Threads (und mysql_library_end() am Ende von main() ). Es ist sowieso eine gute Übung.

Teilen Sie MYSQL grundsätzlich nicht Strukturen oder alles, was speziell für diese Struktur erstellt wurde (z. B. MYSQL_STMT s) und es funktioniert wie erwartet.

Das scheint mir weniger Arbeit zu sein, als einen Verbindungspool zu erstellen.