Les serveurs MySQL de Free sont bridés: le moteur InnoDB n’est pas activé et vous n’avez pas les droits nécessaires pour verrouiller des tables avec l’appel LOCK TABLES normalement disponible avec MyISAM. Comment faire dans ce cas pour gérer la concurrence? En utilisant la fonction GET_LOCK(str, timeout). L’argument str identifie le verrou (on peut ainsi simuler l’utilisation de multiples verrous) et timeout indique le délai d’expiration de la requête de blocage.

Cette fonction permet d’établir des sections critiques dans votre code, cela implique donc que la bonne gestion de la concurrence ne relève plus du SGBD mais qu’elle est désormais de votre responsabilité. Avec cette méthode vous pouvez facilement verrouiller des tables indépendamment les une des autres, ainsi que des lignes (l’identifiant d’un verrou de ligne correspondra alors à la concaténation du nom de la table et de l’identifiant de la ligne).