Quando utilizzare un socket MySQL e quando utilizzare un host: porta?


19

Molte applicazioni mi consentono di connettermi a Mysql utilizzando un nome utente, una password host e una porta. Alcuni mi permettono di configurare un socket invece di host:port.

C'è qualche chiaro vantaggio dell'uno rispetto all'altro? Posso immaginare che un socket funzioni solo quando MySQL si trova sulla stessa macchina. È così? E se è così, ci sono dei vantaggi nell'usare quel socket invece di connettersi a localhost:3306?

Non ho troppa familiarità con i dettagli della rete e dei socket, quindi forse mi mancano completamente alcune informazioni cruciali e la mia domanda è semplicemente stupida; in tal caso, potresti spiegare cosa mi sto perdendo?

Risposte:


19

Bene, è semplice

Socket è una comunicazione basata su file e non è possibile accedere al socket da un'altra macchina.

D'altra parte, le porte sono aperte al mondo (dipende dalla configurazione) e puoi accedere a mysql da un'altra macchina usando la combinazione host + porta.

Inoltre, per quanto io capisca i socket, sono solo una combinazione di host + porta, solo nel formato del file. Quindi, non vedo alcun chiaro beneficio nell'utilizzare nessuno di essi (per quanto ne sappia la mia conoscenza).

Personalmente preferisco usare host + port, poiché il mio codice diventa più flessibile, in quanto posso spostarlo sull'altra macchina, senza cambiare molto.

Copia incolla da alcuni vecchi post :

Le prese Unix sono un po 'più veloci in quanto non si ha il tcp-overhead. Se ti rendi conto che questa perdita di prestazioni è una questione di carico del server. Se non hai un carico di server molto elevato, non lo riconoscerai.

Se usi Jails (FreeBSD) o qualche altra tecnologia di virtualizzazione per separare, ad esempio, MySQL-Server dal Webserver, usi spesso l'installazione tcp / ip invece dei socket. Tuttavia, le regole del firewall devono limitare l'accesso.

Devi scoprire se il tuo sistema è sotto carico, quindi un socket è un must o puoi concentrarti su un bel design del sistema (separare i servizi), quindi una soluzione tcp / ip sarebbe migliore.

Quindi fai una lunga risposta breve:

Sì, c'è una differenza di prestazioni, le prese sono più veloci. Se non si verifica un carico elevato del server, è sufficiente scegliere ciò che si adatta meglio al design del sistema.


Ma quando ho entrambi, quando mysqld vive sulla stessa macchina del client; ci sono differenze nell'usare l'uno rispetto all'altro? Uno è più leggero, più performante, soggetto a errori o qualunque altro rispetto all'altro?
Berkes,

Ho appena aggiornato la risposta con qualche informazione in più.
GeekRide,

E qualche altra informazione.
GeekRide,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.