Mysql
 sql >> Database >  >> RDS >> Mysql

È più veloce connettere/utilizzare MySQL su localhost anziché su un dominio (anche se il dominio si risolve sullo stesso computer)?

L'utilizzo diretto dell'indirizzo IP di qualsiasi interfaccia sull'host locale - sia l'interfaccia di loopback (127.0.0.1) o qualsiasi altra - è l'opzione con le prestazioni assolutamente migliori. I pacchetti verranno effettivamente instradati attraverso l'interfaccia di loopback (indipendentemente dall'IP effettivamente utilizzato) a - praticamente - velocità della CPU.

Ci sono tre ragioni, tuttavia, per preferire 127.0.0.1 agli IP delle altre interfacce:

  • L'interfaccia di loopback è fondamentale per il funzionamento del sistema e come tale viene inizializzata molto presto nel processo di avvio e quasi sempre disponibile.

  • Non è influenzato da fattori esterni:mentre la rimozione del cavo eth0 non interromperà di per sé l'accesso di localhost a se stesso tramite l'IP di eth0, lo rovinare le cose se si dispone di uno dei tanti sistemi di "autoconfigurazione" che spegneranno felicemente l'interfaccia in caso di perdita di collegamento.

  • Se hai una configurazione del firewall, è possibile che la catena di regole sia più lunga (e quindi leggermente peggiore in termini di prestazioni) quando sono coinvolti gli IP delle interfacce pubbliche.

Se stai usando nomi host, il nome host localhost sarà normalmente risolto da una ricerca /etc/hosts che è molto veloce, anche se l'utilizzo dell'IP rimuove del tutto questa ricerca. A seconda della tua configurazione, molti sono anche memorizzati nella cache in modo che sia quasi incredibilmente veloce in seguito.

Se utilizzi un nome host pubblico, ciò potrebbe comportare una query DNS che implica un maggiore utilizzo della CPU e latenza di rete. L'utilizzo di un server dei nomi di memorizzazione nella cache sull'host locale rimuoverà principalmente questo problema. Tieni presente, tuttavia, che potrebbe esserci ancora un problema se il tuo servizio DNS diventa instabile.

L'unico vantaggio dell'utilizzo di un hostname pubblico sarebbe se fosse qualcosa come db.example.com. che ti consente di spostare il tuo database su un server separato senza dover modificare la configurazione dei client.

Dato che stai usando JDBC, presumo che tu stia riutilizzando una singola connessione per tutte le tue query, nel qual caso l'overhead di risoluzione del nome host stesso dovrebbe essere trascurabile in tutti i casi, a meno che tu non debba avere a che fare con un server DNS rotto. Tuttavia, potrebbe esserci del merito nella scelta dell'indirizzo 127.0.0.1 per la sua configurazione del firewall potenzialmente più efficiente.