Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać dostęp do MySQL z wielu wątków jednocześnie?

Jako opiekun dość dużej aplikacji w języku C, która wykonuje wywołania MySQL z wielu wątków, mogę powiedzieć, że nie miałem problemów z prostym nawiązaniem nowego połączenia w każdym wątku. Kilka zastrzeżeń, na które się natknąłem:

  • Edytuj:wydaje się, że ten punkt dotyczy tylko wersji <5.5; zobacz tę stronę, aby uzyskać odpowiednią wersję : Tak jak mówisz, że już to robisz, link do libmysqlclient_r .
  • Zadzwoń mysql_library_init() (raz, od main() ). Przeczytaj dokumentację na temat używania w środowiskach wielowątkowych, aby zobaczyć, dlaczego jest to konieczne.
  • Utwórz nowy MYSQL struktura przy użyciu mysql_init() w każdym wątku. Ma to efekt uboczny wywołania mysql_thread_init () dla Was. mysql_real_connect() jak zwykle wewnątrz każdego wątku, z jego specyficzną dla wątku strukturą MYSQL.
  • Jeśli tworzysz/niszczysz wiele wątków, będziesz chciał użyć mysql_thread_end() na końcu każdego wątku (i mysql_library_end() na końcu main() ). W każdym razie to dobra praktyka.

Zasadniczo nie udostępniaj MYSQL struktury lub cokolwiek utworzonego specjalnie dla tej struktury (np. MYSQL_STMT s) i będzie działać zgodnie z oczekiwaniami.

Wydaje mi się, że to mniej pracy niż tworzenie puli połączeń.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z prostego dostawcy członkostwa z mysql

  2. Ukrywanie prawdziwego identyfikatora obiektu bazy danych w adresach URL

  3. Czy moduł MySQLdb obsługuje przygotowane instrukcje?

  4. Jak zbudować prosty system oceniania i oceny na 5 gwiazdek?

  5. Nieudane przetwarzanie format-parameters za pomocą mysql.connector w Pythonie