sql >> Base de Datos >  >> RDS >> Mysql

¿Es más rápido conectar/usar MySQL en localhost en lugar de un dominio (incluso si el dominio se resuelve en la misma computadora)?

El uso directo de la dirección IP de cualquier interfaz en el host local, ya sea la interfaz de bucle invertido (127.0.0.1) o cualquier otra, es la opción con el mejor rendimiento absoluto. Los paquetes se enrutarán realmente a través de la interfaz de bucle invertido (sin importar qué IP se use realmente) prácticamente a la velocidad de la CPU.

Sin embargo, hay tres razones para preferir 127.0.0.1 a las IP de las otras interfaces:

  • La interfaz loopback es crucial para el funcionamiento del sistema y, como tal, se inicializa muy temprano en el proceso de arranque y casi siempre está disponible.

  • No se ve afectado por factores externos:si bien quitar el cable eth0 no interrumpirá por sí mismo el acceso de localhost a sí mismo a través de la IP de eth0, lo hará. estropee las cosas si tiene alguno de los muchos sistemas de "autoconfiguración" que felizmente cerrarán la interfaz en caso de pérdida de enlace.

  • Si tiene una configuración de firewall, es muy posible que la cadena de reglas sea más larga (y, por lo tanto, un poco peor en cuanto a rendimiento) cuando las direcciones IP de las interfaces públicas están involucradas.

Si está utilizando nombres de host, el nombre de host localhost normalmente se resolverá mediante una búsqueda en /etc/hosts que es muy rápido, aunque usar la IP directamente elimina esta búsqueda por completo. Dependiendo de su configuración, también puede almacenarse en caché en la memoria para que sea casi increíblemente rápido más adelante.

Si usa un nombre de host público, esto puede implicar una consulta de DNS que implica un uso adicional de CPU y latencia de red. El uso de un servidor de nombres de almacenamiento en caché en el host local eliminará en su mayoría este problema. Sin embargo, tenga en cuenta que aún podría haber un problema si su servicio DNS se vuelve inestable.

La única ventaja de usar un nombre de host público sería si es algo como db.example.com. lo que le permite mover su base de datos a un servidor separado sin tener que cambiar la configuración de los clientes.

Dado que está utilizando JDBC, supongo que está reutilizando una sola conexión para todas sus consultas, en cuyo caso la sobrecarga de resolución del nombre de host debería ser insignificante en todos los casos, a menos que tenga que lidiar con un servidor DNS roto. Sin embargo, aún puede haber algo de mérito en elegir la dirección 127.0.0.1 para su configuración de firewall potencialmente más eficiente.