Многие библиотеки пулов соединений с базами данных предоставляют возможность проверить свои соединения SQL на бездействие. Например, у библиотеки пулов JDBC c3p0 есть свойство под названием preferredTestQuery
, которое выполняется в соединении через заданные интервалы. Аналогично, у Apache Commons DBCP есть validationQuery
.
Многие примеры запросов, которые я видел, предназначены для MySQL и рекомендуют использовать SELECT 1;
в качестве значения для тестового запроса. Однако этот запрос не работает в некоторых базах данных (например, HSQLDB, для которого SELECT 1
ожидается FROM
предложение).
Существует ли независимый от базы данных запрос, который эквивалентно эффективен, но будет работать для всех баз данных SQL?
Редактировать:
Если нет (что, кажется, имеет место), может ли кто-нибудь предложить набор SQL-запросов, которые будут работать для различных поставщиков баз данных? Мое намерение состояло бы в том, чтобы программно определить оператор, который я могу использовать, основываясь на конфигурации моего поставщика базы данных.