Подтвердить что ты не робот

Быстрее ли подключаться/использовать MySQL на локальном хосте вместо домена (даже если домен разрешается на тот же компьютер)?

Если у меня есть MySQL, работающий на Linux, быстрее ли запускать запросы при подключении к локальному хосту, чем если я подключаюсь к домену, который разрешается в том же поле? Это от Java, использующего JDBC.

4b9b3361

Ответ 1

Непосредственно используя IP-адрес любого интерфейса на локальном хосте - либо интерфейс loopback (127.0.0.1), либо любой другой - это вариант с абсолютно лучшей производительностью. Пакеты будут фактически маршрутизироваться через интерфейс loopback (независимо от того, какой IP-адрес фактически используется) практически на скорости процессора.

Однако есть три причины предпочесть 127.0.0.1 над IP-адресами других интерфейсов:

  • Интерфейс loopback имеет решающее значение для работы системы и поэтому он инициализируется очень рано в процессе загрузки и почти всегда доступен.

  • На него не влияют внешние факторы: при удалении кабеля eth0 сам по себе не прерывает доступ localhost к себе через eth0 IP, он будет испорчен, если у вас есть какая-либо из многих систем "автоконфигурации", которые будут счастливо отключите интерфейс от потери связи.

  • Если у вас установлена ​​настройка брандмауэра, вполне возможно, что цепочка правил длиннее (и, следовательно, немного хуже по производительности), когда задействованы IP-адреса открытых интерфейсов.

Если вы используете имена хостов, имя хоста localhost будет обычно разрешено поиском /etc/hosts, который выполняется очень быстро, хотя использование IP напрямую удаляет этот поиск. В зависимости от вашей настройки многие из них также будут кэшироваться в памяти, чтобы она была почти ослепительно быстрой.

Если вы используете общедоступное имя хоста, это может быть связано с запросом DNS, что подразумевает добавленное использование ЦП и латентность сети. Использование кэширующего сервера имен на локальном узле в основном устранит эту проблему. Имейте в виду, однако, что может возникнуть проблема, если ваша служба DNS станет шелушащейся.

Единственное преимущество использования общедоступного имени хоста было бы, если бы это было похоже на db.example.com. который позволяет переместить вашу базу данных на отдельный сервер без необходимости изменения конфигурации клиентов.

Поскольку вы используете JDBC, я предполагаю, что вы повторно используете одно соединение для всех своих запросов, и в этом случае само имя для определения имени хоста должно быть незначительным во всех случаях, если только вам не придется иметь дело с поврежденным DNS-сервером. Тем не менее, может быть еще одна заслуга в выборе адреса 127.0.0.1 для его потенциально более эффективной настройки брандмауэра.

Ответ 2

localhost - это домен, который разрешает ваш компьютер, поэтому я бы сказал, что он точно так же быстро.

Использование сокета для файлов может привести к различию, хотя я не знаю, поддерживает ли JDBC его.

Ответ 3

localhost= 127.0.0.1, чтобы он мог быстро получить соединение. Хотя, если вы подключаетесь к своей базе данных, которая находится на том же хосте, что и ваш клиент, но делайте это через свой публичный IP, например, 10.245.35.xxx, например, соединение будет медленнее, так как оно будет проходить в Интернете и затем приземлитесь на 127.0.0.1.

Это еще хуже, если вы будете использовать my.cool.db.server.com, так как будут вызовы DNS, необходимые для перевода домена на IP, дальнейшее замедление соединения (ну, по крайней мере, начальное).

В общем, в большинстве случаев это не будет вашим узким местом в любом случае, поэтому не беспокойтесь о нем слишком много: -)