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

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

Ответы [ 2 ]

12 голосов
/ 05 декабря 2010

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

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

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

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

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

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

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

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

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

3 голосов
/ 05 декабря 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...