MySQL est très dépendant du paquet de threads utilisé. Ce qui fait que lors du choix d'une bonne plate-forme pour MySQL, le paquet des threads est très important.
Il y a au moins trois types de paquets de threads :
Threads utilisateurs dans un processus unique. Le changement
de threads est géré avec des alarmes et la bibliothèque des
threads gère les fonctions non-utilisables avec les threads
par des verrouillages. Les opérations de lectures,
d'écritures et de sélections sont usuellement gérées avec
une sélection spécifique aux threads qui passe à un autre
thread si celui en cours d'exécution attend des données. Si
les paquets des threads utilisateurs sont intégrés dans les
bibliothèques standards (threads FreeBSD et BSDI) le paquet
de thread nécessite moins de ressources que les paquets de
thread qui doivent mapper toutes les appels non-sûrs
(MIT-pthreads
, FSU Pthreads et RTS
threads). Avec quelques environnements, (SCO par exemple),
tous les appels système sont sûrs pour les threads, ce qui
fait que la liaison peut se faire très facilement (Pthreads
FSU sur SCO). Mauvais côté : Tous les appels mappés
prennent un peu de temps, et il est assez difficile de pouvoir
gérer toutes les situations. Il y a aussi souvent des appels
système qui ne sont pas gérés par le paquet de threads
(comme MIT-pthreads
et les sockets). La
gestion des threads n'est pas toujours optimale.
Threads utilisateurs dans des processus séparés. Les
changements de threads sont effectués par le noyau et toutes
les données sont partagées entre les threads. Le paquet de
thread gère les appels threads standards pour permettre le
partage entre les threads. LinuxThreads
utilise cette méthode. Mauvais côté : Beaucoup de
processus. La création des threads est lente. Si un thread
s'interrompt, les autres restent en suspens et vous devez tous
les terminer avant de redémarrer. Le changement de thread est
d'une certaine fa¸on consommateur de ressources.
Threads noyau. Le changement de threads est géré par la
bibliothèque de threads ou le noyau est très rapide. Tout
est fait en un seul processus, mais sur certains systèmes,
ps
peut montrer plusieurs threads. Si un
thread échoue, tout le processus échoue. La plupart des
appels système sont bons pour les threads et ne devraient
avoir besoin que d'une petite perte de performances. Solaris,
HP-UX, AIX et OSF/1 ont des threads noyau.
Avec quelques systèmes, les threads du noyau sont gérés en intégrant les threads niveau utilisateur dans les bibliothèques du système. Dans ces cas, le changement de thread ne peut être fait qu'avec la bibliothèque de threads et le noyau n'est pas vraiment ``attentif aux threads''.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.