Catégories
Uncategorized

Mémo MySQL

image_pdfimage_print

Connexions persistantes

Les connexions persistantes permettent de ré-utiliser une connexion déjà ouverte par PHP. Elles ne se terminent pas à la fin de l’exécution d’un script. L’intérêt est de limiter le temps de latence dû à l’ouverture de la connexion, ce qui peut-être utile lorsque le serveur de base de données et HTTP ne se situent pas sur le même serveur physique.

Dans le cas d’Apache, une connexion par processus fils est ouverte, il faut donc en tenir compte lorsqu’on fixe la valeur « max_connections » du serveur MySQL. En effet, deux requêtes consécutives peuvent être gérées par des processus Apache différents, ce qui engendre l’ouverture d’une connexion persistante pour chaque processus ! La charge de la machine, en terme de mémoire utilisée notamment, va augmenter de façon proportionnelle aux nombres de connexions simultanées.

Attention, une transaction qui n’est pas terminée, restera active entre les requêtes Apache ! De même, quand vous bloquez (lock) une table, normalement elle est débloquée lorsque la connexion est fermée, mais comme les connexions persistantes ne se ferment pas (sic), les tables que vous avez quittées en état bloquées resteront bloquées, et la seule façon de les déloquer sera d’attendre que la connexion atteigne le timeout (« wait_timeout ») ou de tuer le processus MySQL. Pour finir, les options de connexions restent actives entre les appels, par exemple :

mysql_query("SET SESSION character_set_results = 'UTF8'");

Dans MySQL, les tables temporaires sont visibles uniquement par la connexion courante, mais si vous avez une connexion persistante, la table temporaire sera visible par tous les scripts qui partagent la même connexion persistante.

Laisser un commentaire