2008-11-07 6 views
7

MySQL ofrece muchas maneras (en Windows) para conectarse a ella, esos son:¿La mejor manera de conectarse a MySQL localmente?

  • Memoria compartida
  • Las canalizaciones con nombre
  • TCP/IP

Mi pregunta es, si MySQL se ejecute en la misma máquina del servidor web, entonces ¿qué método es mejor para la seguridad y el rendimiento?

P.S. Este es un escenario de servidor web, sin granja de servidores web.

Gracias

Respuesta

-2

TCP/IP en todos los casos.

+0

¿Podría proporcionar algunos argumentos para apoyar esto? –

+0

TCP/IP no es más seguro ni más rápido. – Alnitak

6

En términos de rendimiento si ambos se ejecutan en la misma máquina, la memoria compartida es la mejor opción ya que no se encontrará con problemas con el software de firewall que puede estar en la máquina o instalarse en una fecha posterior.

Sin embargo, si en el futuro necesita separar el servidor web y la base de datos debido a la ampliación, deberá realizar cambios para respaldar esto.

Por lo tanto, a la larga, la mejor opción es ir con TCP/IP, ya que esto permitirá que los servidores se separen con el mínimo de angustia.

+1

Estoy de acuerdo con la ventana de TCP/IP –

0

La memoria compartida o las canalizaciones con nombre proporcionan menos carga que TCP/IP, sin embargo, ¿las ventanas incluso admiten canalizaciones con nombre?

TCP/IP es la forma más compatible y escalable de ir por otro lado, y muchos conectores ni siquiera admiten algo más afaik.

No debe restringir su escenario a "la misma máquina" o plataforma "windows" si no es necesario, siempre es bueno tener en cuenta la escalabilidad.

+0

que admite canalizaciones con nombre, pero SQL Server 2005 sí tenía un par de inconvenientes al configurarlo porque a veces usaba la ruta incorrecta para la tubería. Creo que 2008 solucionó la mayoría de ellos sin embargo. – Jimoc

0

Simplemente use 'localhost' por el momento.

1

Diría canalizaciones con nombre ya que proporciona una diferencia significativa que TCP/IP (probado con volcado grande importado).

Pero puede que tenga que considerar cómo se realizará la aplicación real en el servidor web utilizando cualquiera de estas conexiones, ya que el controlador podría no ser capaz de trabajar con canalizaciones con nombre, por ejemplo.

Tuve problemas con php (en Windows) y conductos con nombre por lo que necesitaría verificar esa parte de la historia también.

1

Por razones de seguridad, es claramente beneficioso desactivar la red TCP/IP. Estoy trabajando en una aplicación .NET, y no he tenido problemas para conectarme a través de una tubería con nombre usando el conector MySql. También funciona con las herramientas de GUI de Mysql :), y eso es todo lo que necesito.

3

TCP/IP en todos los casos

diría lo mismo, que es la única configuración que se prueba a fondo en el desarrollo. También

1) los tubos con nombre no son una garantía de seguridad. Se puede acceder a ellos a través de \ ServerName \ pipe \ PipeName (y Connector/NET puede hacer exactamente eso, incluso si el cliente C no lo hace).

2) La memoria compartida tiene algunas deficiencias. Por ejemplo, es imposible saber si el cliente de memoria compartida ha muerto. Es decir, si la aplicación ha finalizado sin desconectarse, en el lado del servidor, los recursos no se limpian (durante el período n wait_timeout, que es de 8 horas de forma predeterminada). Además, hay una sincronización excesiva cuando se utiliza la memoria compartida.

3) El acceso TCP de Localhost es muy rápido, al menos en Windows moderno, aunque creo que no fue el caso hasta Vista/WS2008. Lo comparé con las tuberías, no hay una diferencia notable. En cuanto a la seguridad, esto es para lo que sirve el cortafuegos.

4

La memoria compartida es 4 veces más rápida que tcp/ip. Para insertar una fila simple en la tabla, se necesitan ~ 200 microsegundos usando tcp/ip y ~ 55 microsegundos utilizando la memoria compartida (en mi i5 3ghz). Probado usando c/conector. El aumento de la velocidad de red/conector es solo aproximadamente 3 veces.

0

Para un mejor rendimiento le puedo sugerir algunas muestras en función de dónde se encuentran cliente y el servidor:

misma máquina: la memoria compartida, tuberías y luego con nombre, a continuación, TCP/IP

diferente máquina : TCP/IP

La razón es que cuando está en la misma máquina, la memoria compartida evita la ida y vuelta a través de la pila de red alojada en el sistema operativo. La memoria compartida es un método de IPC más eficiente.

Cuestiones relacionadas