Существует ли конкретный метод в Java, который проверяет, жив ли сервер MySQL?
Ping сервер MySQL
Ответ 1
Предполагая, что вы работаете на Java 6 или выше, вы можете использовать стандартный метод JDBC Connection.isValid(int timeoutInSecs). Копая в источник MySQL Connector/J, фактическая реализация использует com.mysql.jdbc.ConnectionImpl.pingInternal() для отправки простого пакета ping в БД и возвращает true, пока возвращается верный ответ.
Ответ 2
Стандартный соединитель JDBC MySQL, ConnectorJ, имеет легкий пинг. Из документов:
MySQL Connector/J имеет возможность выполнять легкий ping против сервера, чтобы проверить соединение. В случае сбалансированных по нагрузке соединений это выполняется по отношению к всем активным объединенным внутренним соединениям, которые сохраняются. Это полезно для приложений Java, использующих пулы соединений, поскольку пул может использовать эту функцию для проверки соединений.
В принципе, убедитесь, что ваш запрос "ping" начинается с точно текста /* ping */
. Подробности в связанных документах выше. Это позволяет вам использовать механизм pinging, а не выполнять (слегка) более тяжелую работу.
Итак, в основном, выполняя запрос:
/* ping */ SELECT 1
... запускает механизм ping, а не выполняет "работу" SELECT 1
.
Имейте в виду, если вы говорите о проверке сервера MySQL, к которому вы в настоящее время не подключены, просто действие подключения к нему проверяет его там и отвечает. Вышеупомянутое в основном касается проверки того, что существующее соединение все еще действует.
Ответ 3
Это зависит от того, какой метод вы используете для подключения к базе данных. Некоторые драйверы, например MySQL Connector/J имеют команду ping:
/**
* Detect if the connection is still good by sending a ping command
* to the server.
*
* @throws SQLException
* if the ping fails
*/
public abstract void ping() throws SQLException;
Если вы не поддерживаете этот интерфейс, тогда простой метод, который всегда работает, - это подключение к базе данных, как обычно, и выполнение следующего запроса:
SELECT 1
Вы должны вернуть результирующий набор, содержащий одну строку, с одним столбцом, содержащим значение 1. Если это сработает, ваш MySQL работает.