Kiedy używać gniazda MySQL, a kiedy hosta: port?


19

Wiele aplikacji pozwala mi łączyć się z MySQL przy użyciu nazwy użytkownika, hasła hosta i portu. Niektóre pozwalają mi skonfigurować gniazdo zamiast host:port.

Czy jest jakaś wyraźna przewaga jednej nad drugą? Mogę sobie wyobrazić, że gniazdo działa tylko wtedy, gdy MySQL znajduje się na tym samym komputerze. Czy tak jest A jeśli tak, to czy są zalety korzystania z tego gniazda zamiast łączenia się z nim localhost:3306?

Nie znam się zbyt dobrze na sieciach i gniazdach, więc może zupełnie brakuje mi niektórych ważnych informacji, a moje pytanie jest po prostu głupie; jeśli tak, czy mógłbyś wyjaśnić, czego mi brakuje?

Odpowiedzi:


19

Cóż, to proste.

Socket to komunikacja oparta na plikach i nie można uzyskać dostępu do gniazda z innego komputera.

Z drugiej strony porty są otwarte na świat (w zależności od konfiguracji) i można uzyskać dostęp do mysql z innego komputera za pomocą kombinacji host + port.

Ponadto, o ile rozumiem gniazda, są one po prostu kombinacją hosta + portu, tylko w formacie pliku. Tak więc nie widzę żadnej wyraźnej korzyści z korzystania z żadnego z nich (tyle ile moja wiedza idzie).

Chociaż osobiście wolę używać hosta + portu, ponieważ mój kod staje się bardziej elastyczny, ponieważ mogę go przenieść na inny komputer, nie zmieniając wiele.

Skopiuj wklejanie z jakiegoś starego posta :

Gniazda unixowe są trochę szybsze, ponieważ nie masz narzutu TCP. Jeśli zauważysz, że utrata wydajności jest kwestią obciążenia serwera. Jeśli nie masz bardzo dużego obciążenia serwera, nie rozpoznasz go.

Jeśli używasz Jails (FreeBSD) lub innej technologii wirtualizacji, aby oddzielić np. MySQL-Server od Webserver, często używasz konfiguracji tcp / ip zamiast gniazd. Jednak reguły zapory muszą ograniczać dostęp.

Musisz dowiedzieć się, czy twój system jest obciążony, więc gniazdko jest koniecznością, lub możesz skupić się na ładnym projekcie systemu (oddzielanie usług), wtedy rozwiązanie tcp / ip byłoby lepsze.

Tak więc krótko odpowiedz:

Tak, istnieje różnica w wydajności, gniazda są szybsze. Jeśli nie odczuwasz dużego obciążenia serwera, po prostu wybierz to, co lepiej pasuje do projektu twojego systemu.


Ale gdy mam oba, gdy mysqld mieszka na tej samej maszynie co klient; czy istnieją różnice w stosowaniu jednego nad drugim? Czy jedno lżejsze, bardziej wydajne, podatne na błędy czy cokolwiek innego niż drugie?
berkes

Właśnie zaktualizowałem odpowiedź, dodając więcej informacji.
GeekRide

I więcej informacji.
GeekRide
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.