Коли використовувати MySQL-сокет і коли використовувати порт host: port?


19

Багато програм дозволяють мені підключитися до Mysql за допомогою імені користувача, хоста пароля та порту. Деякі дозволяють мені налаштувати сокет замість host:port.

Чи є явна вигода одного над іншим? Я можу уявити, що сокет працює лише тоді, коли MySQL знаходиться на одній машині. Невже це так? І якщо так, чи є переваги над використанням цього сокета замість підключення до localhost:3306?

Я не надто знайомий із внутрішніми та вихідними мережами та розетками, тому, можливо, мені зовсім не вистачає якоїсь важливої ​​інформації, і моє запитання просто нерозумно; якщо так, ви могли б пояснити, чого я пропускаю?

Відповіді:


19

Ну, це просто.

Socket - це файлова комунікація, і ви не можете отримати доступ до сокета з іншої машини.

З іншого боку, порти відкриті для світу (залежить від конфігурації), і ви можете отримати доступ до mysql з іншої машини за допомогою комбінації хост + порт.

Крім того, наскільки я розумію сокети, вони просто комбінація хост + порт, просто у файловому форматі. Отже, я не бачу чіткої користі у використанні будь-якого з них (стільки ж моїх знань).

Хоча я особисто вважаю за краще використовувати хост + порт, оскільки мій код стає більш гнучким, оскільки я можу перемістити його на іншу машину, не змінюючи сильно.

Скопіюйте вставку зі старої публікації :

Unix-розетки трохи швидші, оскільки у вас немає tcp-overhead. Якщо ви усвідомлюєте, що це втрата продуктивності - це питання завантаження сервера. Якщо у вас не дуже велике завантаження сервера, ви не впізнаєте його.

Якщо ви використовуєте Jails (FreeBSD) або якусь іншу технологію віртуалізації для відділення, наприклад, MySQL-сервера від веб-сервера, ви часто використовуєте налаштування tcp / ip замість сокетів. Однак, правила брандмауера повинні обмежувати доступ.

Вам потрібно з’ясувати, чи піддається вашій системі велике навантаження, щоб розетка була необхідною, або ви можете зосередитись на приємному дизайні системи (роздільні послуги), тоді рішення tcp / ip було б краще.

Тож зробіть довгу відповідь короткою:

Так, є різниця в продуктивності, розетки швидше. Якщо ви не страждаєте від великої завантаженості сервера, просто виберіть те, що краще відповідає дизайну вашої системи.


Але коли я маю обоє, коли mysqld живе на тій же машині, що і клієнт; Чи є відмінності у використанні одного над іншим? Чи є один легший, ефективніший, схильний до помилок чи що інший?
berkes

Щойно оновив відповідь ще трохи інформації.
GeekRide

І ще трохи інформації.
GeekRide
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.