sql >> Databáze >  >> RDS >> Mysql

Jak přistupovat k MySQL z více vláken současně

Jako správce poměrně velké C aplikace, která volá MySQL z více vláken, mohu říci, že jsem neměl žádné problémy s jednoduchým vytvořením nového připojení v každém vláknu. Některá upozornění, na která jsem narazil:

  • Upravit:zdá se, že tato odrážka platí pouze pro verze <5.5; příslušnou verzi naleznete na této stránce : Jak říkáte, že již děláte, odkazujte proti libmysqlclient_r .
  • Zavolejte mysql_library_init() (jednou z main() ). Přečtěte si dokumenty o použití ve vícevláknových prostředích, abyste zjistili, proč je to nutné.
  • Vytvořte nový MYSQL struktura pomocí mysql_init() v každém vláknu. To má vedlejší účinek volání mysql_thread_init() pro tebe. mysql_real_connect() jako obvykle uvnitř každého vlákna s jeho strukturou MYSQL specifickou pro vlákno.
  • Pokud vytváříte/ničíte mnoho vláken, budete chtít použít mysql_thread_end() na konci každého vlákna (a mysql_library_end() na konci main() ). Je to každopádně dobrá praxe.

V zásadě nesdílejte MYSQL struktury nebo cokoli vytvořeného specificky pro tuto strukturu (tj. MYSQL_STMT s) a bude fungovat, jak očekáváte.

Zdá se mi to jako méně práce než vytvoření fondu připojení.



  1. Použití UUID jako primárního klíče s Laravel 5

  2. Jak mohu prohledávat všechny sloupce v tabulce?

  3. Můžete pomoci upravit dotaz nebo jiný dotaz pro získání očekávaného výsledku

  4. Jak najít jedinečné páry ze dvou sloupců v SQL?