У меня есть 2 сервера, каждый в двух разных местах. Мне нужно разместить приложение на одном, а сервер базы данных - на другом.
С сервера приложений, если я пингую сервер базы данных, в среднем я получаю около 30 мс.
У меня вопрос:
When I query the database from the app;
Это займет
30 ms + database_server_query_run_time
Или;
Это займет
30 ms + database_server_query_run_time
+ 30 мс
Я хотел бы понять это, пожалуйста.
Обычно требуется больше, чем эти два варианта.
Ping измеряет только время от клиента до сервера и обратно (rtt - время приема-передачи)
Обычно базы данных используют TCP, поэтому вам сначала нужно отправить пакет SYN, чтобы начать квитирование TCP (для упрощения, скажем, 15 мс * + время процессора, затем вы получаете и SYN / ACK (15 мс + время процессора), отправляете обратно ACK и запрос (как минимум 15 мс + время ЦП), затем время, необходимое БД для обработки запроса, а затем время (15 мс + ЦП), чтобы получить данные обратно, и еще немного, чтобы подтвердить и закрыть соединение.
Это, конечно, не считая аутентификации (имя пользователя / пароль) в базе данных и никакого шифрования (ssl-рукопожатия / DH или что-то еще, что необходимо).
* половина времени туда и обратно, при условии, что маршрут туда и обратно симметричен (половина времени, чтобы добраться туда, а половина - обратно ... время обработки процессора для ответа ping очень короткое)
Время пинга - туда и обратно. Если задуматься - как можно измерить время в один конец? Таким образом, это займет 30 мс плюс время запроса.