Muitas bibliotecas de pool de conexões de banco de dados fornecem a capacidade de testar suas conexões SQL quanto à ociosidade. Por exemplo, a biblioteca de pool JDBC c3p0 possui uma propriedade chamada preferredTestQuery
, que é executada na conexão em intervalos configurados. Da mesma forma, o Apache Commons DBCP possui validationQuery
.
Muitos exemplos de consultas que eu vi são para o MySQL e recomendo usar SELECT 1;
como valor para a consulta de teste. No entanto, essa consulta não funciona em alguns bancos de dados (por exemplo, HSQLDB, para o qual SELECT 1
espera uma FROM
cláusula).
Existe uma consulta independente de banco de dados que seja equivalente eficiente, mas funcionará para todos os bancos de dados SQL?
Editar:
Se não houver (o que parece ser o caso), alguém pode sugerir um conjunto de consultas SQL que funcionem para vários provedores de banco de dados? Minha intenção seria determinar programaticamente uma instrução que eu possa usar com base na configuração do meu provedor de banco de dados.