Le moyen le moins cher de déterminer si une connexion MySQL est toujours en vie

J'ai un pool de connexions MySQL pour un web-base de données du service. Quand il commence à une requête, il faut une connexion à partir de la piscine à utiliser. Le problème est que si il y a eu une longue pause depuis cette connexion particulière a été utilisé, le serveur peut avoir expiré et fermé à son extrémité. Je aimerais être en mesure de le détecter dans la piscine de gestion de code.

Le truc, c'est que L'environnement dans lequel je code me donne seulement un très abstraite de l'API dans la connexion. Je ne peut en principe exécuter des instructions SQL. Je n'ai pas accès à la réelle prise ou d'un accès direct à la base de l'API client.

Donc, la question est: Ce qui est le moins cher MySQL déclaration je peux les exécuter sur la connexion afin de déterminer si elle est en travail. Par exemple SELECT 1; devrait fonctionner, mais je me demandais si il y a quelque chose d'encore moins cher? Peut-être quelque chose qui ne va même pas dans le fil, mais est gérée dans le client MySQL lib et efficacement des réponses à la même question?

Précisions: je ne suis pas concerné, il s'agit de vérifier si le serveur MySQL est en cours d'exécution, ou si c'est la configuration de base de données est suffisante pour répondre aux requêtes. Si ces choses sont en bas, puis par la suite SQL que le service s'exécute permettra d'obtenir et de gérer l'erreur approprié. Je ne suis vraiment intéressé à si la connexion TCP est ouvert... car si le serveur a fermé, puis le service web de SQL obtiendrez un message d'erreur qui signifie "juste rebranchez-le et essayez à nouveau", et qui serait un inconvénient à faire une fois dans la fange du code de service.

Fermeture: La /* ping */ hack est exactement le genre de chose que je cherchais, mais hélas n'est disponible que via JDBC. La lecture par le biais de la documentation pour ce hack, il est clair qu'il a été mis là pour exactement la même raison que je l'ai voulu. Pour les curieux, je travaille dans Haskelà l'aide de HDBC et HDBC-mysql. Je vais demander à l'auteur de HDBC-mysql pour ajouter un moyen d'appeler mysql_ping() soit directement ou par l'intermédiaire d'un semblable hack.

Vlad DO 1 était aussi le genre de chose que je recherchais, et comme les autres hack n'est pas disponible à l'extérieur de JDBC, je vais être en utilisant.

Merci à tous pour le grand débat, en particulier par @Vlad!

source d'informationauteur MtnViewMark