3 votos

Afinación del rendimiento de MySQL

Estoy buscando una sucinta lista de común trampas y optimizaciones para la optimización de un servidor de MySQL, como se utiliza para mediados de-tamaño de los sitios web.

En general, el tipo de asesoramiento que estoy buscando aquí es la información de que un ordinario desarrollador o administrador puede implementar fácilmente que le dará un beneficio que se pueda medir el rendimiento de su sitio.

Como un ejemplo

He aquí un consejo me cogió de la lectura de Alto Rendimiento de MySQL que yo frecuente ver a usar para:

Cuando se utiliza el motor de almacenamiento MyISAM (el valor predeterminado), el servidor va a bloquear toda la tabla, cuando el desempeño de operación DELETE o UPDATE, o cuando se realiza una INSERCIÓN que no llega al final de la tabla (porque hay un "agujero" a la izquierda de una anterior de ELIMINAR). No hay otras consultas puede utilizar la tabla hasta que la operación ha terminado.

Por lo tanto, usted debe usar InnoDB o de otras de nivel de fila de bloqueo de motores en cualquier utilizan la tabla, si se ve un montón de modificación de uso de ninguna operación distinta a la de "INSERTAR".

5voto

Sean Reifschneider Puntos 4951

Aquí están algunas de las cosas que me he topado con MySQL optimización:

Si usted ve que su servidor de base de datos (MySQL procesos en particular) están utilizando la mayoría de el tiempo de CPU, probablemente significa que usted está de índices que faltan o que usted necesita para optimizar las consultas.

Gire lento en la consulta de registro y proseguir las consultas lentas para averiguar cómo pueden ser optimizadas. El uso de "explicar" con el paso lento de consultas para averiguar por qué son lentos. La documentación de MySQL tiene varias secciones acerca de cómo interpretar estos resultados.

El uso de memcached para almacenar en caché el resultado de cualquier consulta puede para como usted puede. Esto es extremadamente rápido, y capaz de caché de muchas cosas que el interior de la consulta de MySQL almacenamiento en caché no se puede, pero sólo puede ser utilizado en los casos donde se sabe que los datos se pueden almacenar en caché a largo plazo o manualmente caducar el caché.

Set up "munin" en el sistema de base de datos para comenzar a recolectar información acerca de la utilización del sistema de base de datos y la carga de las consultas.

Asegúrese de que su sistema tiene suficiente memoria RAM que no son de intercambio, y espero que también lo suficiente como para hacer unos pocos si cualquier disco de lee (uso vmstat o munin para controlar este). Lo que significa que los datos se sirve de MySQL o de disco, las memorias caché de búfer.

Sean

1voto

jimmyorr Puntos 3004

No es bastante el tema, pero la optimización de MySQL sólo no necesariamente resultará en la optimización del rendimiento de la web. Lo que se describe arriba es sólo un caso de los millones de personas posible. Es a menudo el caso en que web app? ¿Cómo funciona esta característica particular de MyIssam ralentiza su sitio web? (Teniendo en cuenta que MyIssam es de decenas o cientos de veces más rápido que InnoDB). ¿Cómo descubriste que es su caso?

Básicamente, tu pregunta no tiene sentido hasta que realmente el perfil de su aplicación y encontrar el cuello de botella. De lo contrario, algunas común aconseja estaría en contradicción el uno con el otro.

Por otra parte, la optimización del rendimiento generalmente es todo acerca de las compensaciones. Usted tendrá que sacrificar la optimización para el otro.

Aquí es un buen artículo para empezar: http://www.flounder.com/optimization.htm

No se trata de MySQL ni acerca de las aplicaciones web, se trata de la optimización.

1voto

user13993 Puntos 257

Una cosa que puede afectar negativamente el rendimiento de MySQL es la creación de disco en las tablas temporales.

Puede ejecutar durante varios minutos:

mysqladmin -u root -p ext -ri 30 | grep Created_tmp_disk

y si el número es alto y creciente puede considerar la posibilidad de poner el MySQL tmpdir en una RAM basado en sistema de archivos (por ejemplo, tmpfs).

En cierto sentido, esto podría ser tratar el síntoma y no la causa, pero puede proporcionar algo de alivio rápido, mientras que se considera si/cómo tratar la causa. El siguiente enlace proporciona información acerca de cómo utiliza MySQL interna de tablas temporales:

http://dev.mysql.com/doc/refman/5.0/en/internal-temporary-tables.html

Saludos

0voto

karmawhore Puntos 3147

@TechieGurl, con respecto a su orden de búsqueda de los condicionales, que estás equivocado. Que se fija en una primera versión de 4.x. El optimizador de consultas toma una serie de métricas en juego, y el uso de una clave que coincida con la mayoría de los constantes condicionales a distancia, condicionales, etc. y baraja parámetros basados en fin, suponiendo que el SQL no contiene una orden de precedencia, que podría excluir dicha optimización.

MyISAM responderá de los resultados de la clave, InnoDB, por lo general no y bloqueo de una fila al responder como parte de ÁCIDO cumplimiento y es por diseño en lugar de la culpa.

0voto

mike_dowler Puntos 111

Todos los grandes consejos. Otro dato que quiero agregar es que a veces los índices que tienen no son suficientes. Usted podría pensar que la adición de un índice con las filas más consultado es suficiente, pero el orden en que están en el índice afecta mucho el rendimiento. Especialmente para InnoDB que trata de obtener los datos que necesita en el índice sin tener el obtener la fila (es decir: la búsqueda en disco). Si usted tiene una gran cantidad de la tabla que se presenta preguntó casi por igual en las 2 formas, esto ayuda a tener un índice de exactamente el orden de búsqueda para ambos tipos de consultas. Podría parecer redundante, pero en realidad codazos el optimizador en la dirección correcta :)

También, las variables de Servidor, el 'fuera de la caja' MySQL de mi.cnf archivo nunca es la correcta. Sirve mucho para tomar algún tiempo para examinar su contenido y ajustar los valores basados en sus configuraciones de hardware y los tipos de consultas que obtener la mayoría de los

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: