Многие приложения позволяют мне подключаться к Mysql, используя имя пользователя, пароль хоста и порт. Некоторые позволяют мне настроить сокет вместо host:port
.
Есть ли явное преимущество одного перед другим? Я могу представить, что сокет работает только тогда, когда MySQL находится на той же машине. Это так? И если да, то есть ли преимущества использования этого сокета вместо подключения к localhost:3306
?
Я не слишком хорошо знаком с сетями и сокетами, поэтому, возможно, я полностью упускаю какую-то важную информацию, и мой вопрос просто глуп; если да, не могли бы вы объяснить, что мне не хватает?
Ну все просто.
Socket - это обмен данными на основе файлов, и вы не можете получить доступ к сокету с другой машины.
С другой стороны, порты открыты для всего мира (в зависимости от конфигурации), и вы можете получить доступ к mysql с другого компьютера, используя комбинацию хост + порт.
Кроме того, насколько я понимаю, сокеты - это просто комбинация хоста + порта, только в формате файла. Итак, я не вижу явной пользы в использовании любого из них (насколько мне известно).
Хотя я лично предпочитаю использовать хост + порт, поскольку мой код становится более гибким, так как я могу перенести его на другую машину, не сильно меняя.
Скопировать вставку из какой-то старый пост:
Сокеты Unix работают немного быстрее, так как у вас нет tcp-overhead. Если вы понимаете, что эта потеря производительности связана с нагрузкой на сервер. Если у вас не очень высокая загрузка сервера, вы этого не узнаете.
Если вы используете Jails (FreeBSD) или какую-либо другую технологию виртуализации для разделения, например, MySQL-сервер с веб-сервера, вы часто используете настройку tcp / ip вместо сокетов. Однако правила брандмауэра должны ограничивать доступ.
Вам нужно выяснить, находится ли ваша система под большой нагрузкой, поэтому сокет является обязательным, или вы можете сосредоточиться на хорошем дизайне системы (разделение служб), тогда решение tcp / ip будет лучше.
Так что сделайте длинный ответ коротким:
Да, разница в производительности есть, сокеты быстрее. Если вы не испытываете высокой нагрузки на сервер, просто выберите то, что лучше подходит для вашей системы.