Чтобы уточнить:
Я использую свое общедоступное имя хоста для подключения к базе данных MySQL. Имя хоста преобразуется во внешний IP-адрес моего сервера (например, 1.2.3.4). Данные, которые я отправляю / получаю через соединение MySQL, вообще проходят через Интернет? Было бы быстрее использовать localhost? Будет ли это занимать пропускную способность моего сервера?
Если вы хотите быть уверены, вы можете использовать traceroute 1.2.3.4
. Будет выведен список всех маршрутизаторов между хостом, на котором выполняется команда, и устройством с IP-адресом 1.2.3.4.
Если вы используете "localhost" в качестве имени хоста для подключения к серверу MySQL, MySQL не будет использовать TCP, а сокеты. Это должен быть самый быстрый способ подключения к локально работающему серверу MySQL.
Если у вашего сервера внешний IP-адрес настроен «правильно», то есть он не находится за брандмауэром или прокси-сервером во внутренней сети, трафик не будет покидать ваш сервер, поскольку он знает, что целевой IP-адрес является той же системой.
Вы ничего не упоминаете о своем оборудовании для маршрутизации или коммутации, но вы можете сделать все возможное, чтобы ваши данные выходили наружу, прежде чем вернуться, но на самом деле почти наверняка ваши данные не будут отправляться таким образом.
Нет, если все на одной машине, она не покидает машину.
если IP-конфигурация вашего сервера на его машине использует общедоступный IP-адрес, то трафик не будет покидать ваш сервер (но безопаснее быть уверенным и в любом случае использовать localhost для повышения производительности)
если ваш IP-адрес nat'ed, а ваш маршрутизатор имеет общедоступный IP-адрес, а ваш сервер имеет внутренний IP-адрес, то, по крайней мере, трафик, скорее всего, покинет ваш сервер и будет отражен обратно на ваш сервер от маршрутизатора, предполагая, что маршрутизатор выполняет отражение порта как часть его перенаправления портов - так что в некотором смысле трафик не будет покидать вашу сеть, но некоторый трафик будет покидать ваш сервер
без какой-либо информации о настройке сети я не могу быть более точным, чем это
Отключите кабель Ethernet или отключите Wi-Fi и попробуйте подключение к базе данных, и вы получите ответ. Без суеты, без суеты!
Ваши результаты могут отличаться, но я могу получить доступ к своей системе через внешний адрес, если маршрутизатор отключен от Интернета. Однако для этого мне пришлось настроить маршрутизатор с соответствующим фиксированным IP-адресом, поскольку он обычно выдается провайдером через DHCP.
Что касается разницы в скорости, теоретически использование localhost должно быть быстрее, поскольку оно устраняет различные накладные расходы, связанные с прохождением сети. На самом деле разница должна быть настолько минимальной, что вы никогда не сможете ее заметить.
В дополнение к traceroute (уже упомянутой) вы можете использовать tcpdump или wirehark и следить за тем, чтобы любые соединения mysql были маршрутизированы с вашего хоста. Localhost всегда должен быть быстрее.