
Извините, если моя формулировка не совсем верна — я новичок во всем этом.
Цель:Я пытаюсь улучшить скорость получения данных из моей базы данных.
Настраивать:
Я размещаю БД на сервере A. БД также доступна через веб-сайт, например www . mydbweb . com (конечно, это не мой настоящий веб-сайт). Этот доступ на стороне сервера осуществляется через Nginx с маршрутами к чему-то вроде localhost:1234
.
Вопрос:Если я войду на сервер и сделаю запрос к БД через веб-сайт (т. е. www.mydbweb.com
), данные будут извлечены через сеть (верно?), но если я сделаю запрос напрямую localhost:1234
, будет ли это означать, что данные не будут передаваться через сеть?
В общем, есть ли способ пропустить получение данных через сеть? Я считаю, что сеть вносит некоторую задержку или узкое место для больших запросов данных.
решение1
Это немного зависит от ОС и конфигурации сети, но, как правило, существенной разницы в скорости при взаимодействии с внешним IP-адресом сервера или IP-адресом локального хоста/петли обратной связи нет, поскольку обычно операционная система и сетевой стек знают, что внешний IP-адрес также является «этой машиной», и пакеты не отправляются по сети, а остаются в памяти.
Однако дополнительный уровень абстракции nginx на пути между вашим приложением и базой данных увеличит задержку по сравнению с прямым взаимодействием этих двух компонентов.
Самый быстрый способ подключить ваше приложение к вашей базе данных (когда они оба работают на одном хосте) — через сокет Unix (для базы данных, работающей на Linux или аналогичной ОС Unix) или аналогичное прямое соединение. Такое соединение устраняет необходимость инкапсулировать запросы и ответы в сетевые пакеты.