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

Consejos de ajuste de rendimiento de MySQL para optimizar la base de datos

El lenguaje de consulta estructurado (SQL) es un lenguaje de programación de propósito especial que se utiliza para almacenar, manipular y recuperar datos de la base de datos. Ha encontrado aplicaciones en muchos sistemas de bases de datos relacionales, incluidos MySQL, Postgres, Oracle, SQL Server y otros.

Mediante el uso de sentencias SQL, los desarrolladores realizan fácilmente varias operaciones funcionales de la base de datos, como la creación, actualización y eliminación de datos.

A medida que crecen los volúmenes de datos y la tecnología se vuelve cada vez más compleja, se vuelve más importante optimizar las bases de datos MySQL adecuadamente para brindar una experiencia de usuario final y reducir los costos de infraestructura. Las herramientas de ajuste del rendimiento de MySQL pueden ayudar a los profesionales de bases de datos a identificar rápidamente cuellos de botella, identificar operaciones insuficientes mediante una revisión de los planes de ejecución de consultas y eliminar cualquier juego de adivinanzas.

Con la complejidad adicional de los crecientes volúmenes de datos y las cargas de trabajo en constante cambio, ahora es necesario ajustar el rendimiento de la base de datos y optimizar las consultas de MySQL para maximizar la utilización de los recursos y el rendimiento del sistema.

Hay varias razones que hacen que el ajuste de SQL sea un poco complejo para los desarrolladores. En primer lugar, requiere una amplia experiencia técnica para escribir y comprender diferentes planes de ejecución. Mientras que escribir sentencias SQL limpias y completas es responsabilidad de quien obtiene un conocimiento completo de ellas.

Además de su complejidad, el ajuste requiere mucho tiempo. Porque cuando tiene una gran cantidad de declaraciones SQL para clasificar, genera un poco de incertidumbre saber qué declaraciones debe ajustar y cuál debe dejar. Y aunque cada declaración es diferente, su enfoque de ajuste también varía según sus respectivas funcionalidades.


Prepárese para la actualización Core Web Vitals

Libro electrónico para acelerar su sitio web antes de que empiece a perder tráfico.

Gracias

Su lista está en camino a su bandeja de entrada.


En este tutorial, discutiré cómo mejorar el rendimiento de MySQL usando algunos consejos prácticos para ajustar el rendimiento. Entonces, veámoslos en detalle a continuación:

Los beneficios de la optimización del rendimiento de MySQL

La principal ventaja de identificar el factor impulsor del rendimiento para la base de datos le permite evitar el aprovisionamiento excesivo y reducir los costos al dimensionar correctamente sus servidores. También le brinda información sobre si mover el almacenamiento de datos o agregar capacidad del servidor traerá una mejora en el rendimiento o no, y si es así, cuánto será.

La base de datos de ajuste para la optimización del rendimiento de consultas de MySQL no presenta desafíos pálidos. Sin embargo, una vez ajustada correctamente, la base de datos brinda resultados de rendimiento que valen la pena con excelentes funcionalidades. No solo reduce la carga de tareas no deseadas, sino que también optimiza la base de datos MySQL para una recuperación de datos más rápida.

También te puede interesar: Consejos de rendimiento de PHP para optimizar sus sitios web

Optimizar consultas con las pautas de optimización de consultas de MySQL

Siga estas prácticas recomendadas para ajustar el rendimiento de MySQL y optimizar la velocidad de la base de datos.

En primer lugar, asegúrese de indexar todos los predicados en las cláusulas WHERE, JOIN, ORDER BY y GROUP BY. WebSphere Commerce hace mucho hincapié en la indexación de predicados para aumentar el rendimiento de SQL. Debido a que la indexación incorrecta de las consultas SQL puede causar exploraciones de tablas, lo que eventualmente conduce a problemas de bloqueo y otros problemas.

Por lo tanto, recomiendo indexar todas las columnas predicadas para que la base de datos pueda experimentar la optimización de consultas de MySQL.

También te puede interesar: Guía de optimización del rendimiento de Laravel

Evite usar funciones en predicados

La base de datos no usa un índice si tiene alguna función predefinida en la columna.

Por ejemplo:

SELECT * FROM TABLE1 WHERE UPPER(COL1)='ABC'Copy

Debido a la función SUPERIOR(), la base de datos no utiliza el índice en COL1. Si no hay forma de evitar esa función en SQL, deberá crear un nuevo índice basado en funciones o generar columnas personalizadas en la base de datos para mejorar el rendimiento.

Evite usar un comodín (%) al comienzo de un predicado

El predicado LIKE '%abc' provoca un escaneo completo de la tabla. Por ejemplo:

SELECT * FROM TABLE1 WHERE COL1 LIKE '%ABC'Copy

En la mayoría de los casos, este uso de comodines conlleva importantes limitaciones de rendimiento.

Evite columnas innecesarias en la cláusula SELECT

En lugar de usar 'SELECT *', siempre especifique columnas en la cláusula SELECT para mejorar el rendimiento de MySQL. Debido a que las columnas innecesarias causan una carga adicional en la base de datos, lo que ralentiza su rendimiento y también todo el proceso sistemático.

Use unión interna, en lugar de unión externa si es posible

Use la unión externa solo cuando sea necesario. Su uso innecesario no solo limita el rendimiento de la base de datos, sino que también limita las opciones de optimización de consultas de MySQL, lo que da como resultado una ejecución más lenta de las instrucciones SQL.

Utilice DISTINCT y UNION solo si es necesario

El uso de operadores UNION y DISTINCT sin ningún propósito importante provoca una clasificación no deseada y una ralentización de la ejecución de SQL. En lugar de UNION, el uso de UNION ALL brinda más eficiencia en el proceso y mejora el rendimiento de MySQL con mayor precisión.

La cláusula ORDER BY es obligatoria en SQL si espera obtener un resultado ordenado

La palabra clave ORDER BY ordena el conjunto de resultados en columnas de declaraciones predefinidas. Aunque la declaración brinda una ventaja para los administradores de la base de datos para obtener los datos ordenados, también produce un pequeño impacto en el rendimiento en la ejecución de SQL. Debido a que la consulta primero necesita ordenar los datos para producir el conjunto de resultados final, lo que provoca una operación un poco compleja en la ejecución de SQL.

También te puede interesar: Cómo unir dos tablas en MySQL

No use MySQL como cola

Las colas pueden afectar el rendimiento de su base de datos directamente desde el núcleo y podrían ingresar en las bases de datos de su aplicación sin su conocimiento. Por ejemplo, si está configurando un estado para un elemento en particular para que un "proceso relevante" pueda acceder a él, sin querer está creando una cola. Lo que hace es acumular tiempo de carga adicional para acceder al recurso sin ningún motivo importante.

Las colas causan problemas por dos razones principales. Serializan su carga de trabajo, lo que impide la finalización de tareas en paralelo y, a menudo, dan como resultado una tabla que contiene trabajo en proceso, así como datos históricos de trabajos ya completados. No solo agrega latencia a la aplicación, sino que también obstaculiza el ajuste del rendimiento de MySQL.

También te puede interesar: Cómo usar Redis para hacer cola

Comprender los Cuatro Recursos Fundamentales

Necesita cuatro recursos fundamentales para hacer funciones de base de datos. CPU, disco, memoria y red. Si alguno de estos no funciona correctamente, en última instancia, afecta al servidor de la base de datos y genera un rendimiento deficiente.

Para comprender correctamente los recursos fundamentales, debe centrarse en dos áreas particulares, es decir, elegir el hardware adecuado y solucionar problemas con él.

Asegúrese siempre de utilizar componentes de rendimiento completos al elegir el hardware para la base de datos MySQL. No solo opte por lo mejor de la pila, sino que también asegúrese de que exista el equilibrio adecuado entre ellos. A menudo, hemos visto que las organizaciones tienden a seleccionar servidores con CPU rápidas y discos grandes, pero se confunden con memoria insuficiente, lo que finalmente acaba con el rendimiento.

En algunos escenarios, agregar memoria se vuelve muy importante para mejorar el rendimiento cuando se trata de la magnitud. Parece un poco contradictorio, pero en la mayoría de los casos, la sobreutilización de los discos afecta directamente al rendimiento de la base de datos. Dado que la deficiencia de suficiente memoria para almacenar los datos del servidor resulta costosa al descarrilar el rendimiento de la base de datos.

Cuando se trata de solucionar problemas, siempre controle el rendimiento de los cuatro recursos fundamentales. Validar cualitativamente que se están desempeñando de acuerdo a las necesidades de mejora en las normas. Tomar esta auditoría en consideración regularmente resolverá rápidamente los principales problemas que ocurran.

Consultas de paginación

Las aplicaciones que paginan tienden a hacer que el servidor se caiga. Al mostrarle una página de resultados, con un enlace para ir a la página siguiente, estas aplicaciones generalmente se agrupan y ordenan de manera que no pueden usar índices, y emplean una función de LÍMITE y compensación que hace que el servidor haga muchas cosas. generar trabajo y luego descartar filas.

Puede encontrar optimizaciones dentro de la propia interfaz de usuario. En lugar de mostrar el número exacto de páginas en los resultados y enlaces a una página individual, puede mostrar un enlace a la página siguiente. También puede evitar que las personas visiten páginas irrelevantes.

En el lado de la consulta, en lugar de usar LIMIT con desplazamiento, puede seleccionar una fila más de la que necesita, y cuando el usuario hace clic en el enlace "página siguiente", puede designar esa fila final como el punto de partida para el siguiente conjunto de resultados. . Por ejemplo, si el usuario ha visto una página con las filas 101 a 120, también deberá seleccionar la fila 121; para representar la página siguiente, consultaría el servidor en busca de filas mayores o iguales a 121, límite 21.

Optimización de subconsultas de MySQL

El consejo más importante que puedo darte sobre las subconsultas es que debes preferir una unión siempre que sea posible, al menos en las versiones actuales de MySQL.

Las subconsultas son objeto de un intenso trabajo por parte del equipo de optimización, y las próximas versiones de MySQL pueden tener más optimizaciones de subconsultas. Controle cuáles de las optimizaciones terminarán en el código publicado y cuánta diferencia harán. Mi punto aquí es que "preferir una unión" no es un consejo a prueba de futuro. El servidor es cada vez más inteligente y los casos en los que tiene que decirle cómo hacer algo en lugar de qué resultados devolver son cada vez menos.

Caché de consultas de MySQL

Uno de los aspectos más importantes de la medición del rendimiento es el almacenamiento en caché del contenido. MySQL proporciona almacenamiento en caché de consultas de base de datos que almacena en caché el texto de la instrucción SELECT y el resultado obtenido. Por lo tanto, cada vez que crea una base de datos duplicada, llama a la caché de consultas de MySQL, le responderá y mostrará el resultado de la caché, y ninguna llamada se analizará repetidamente. De esta forma, puede maximizar el proceso de optimización de caché de MySQL.

Para configurar la caché de consultas de MySQL, debe agregar algunas configuraciones a MySQL. En primer lugar, debe verificar si el caché de consultas está disponible o no con el siguiente comando:

mysql> SHOW VARIABLES LIKE 'have_query_cache';

Esto mostrará el resultado, SÍ. Esto significa que la memoria caché de MySQL funciona bien.

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| have_query_cache | YES   |

+------------------+-------+

Ahora, puede configurar el tamaño y el tipo de caché de consultas de MySQL. Recuerde que el tamaño mínimo predeterminado es de 40 KB. El tamaño máximo puede ser de 32 MB. Puede configurar MySQL query_cache_size usando el siguiente comando:

mysql> SET GLOBAL query_cache_size = 40000;

El tipo de caché de consultas puede determinar el comportamiento de todas las conexiones. También puede deshabilitar la caché de consultas para consultas como:

mysql> SET SESSION query_cache_type = OFF;

También puede establecer valores como 0,1 y 2 para configurar el estado de la conexión.

Usar Memcached para el almacenamiento en caché de MySQL

Memcached es un sistema de almacenamiento en caché de memoria distribuida. Acelera los sitios web que tienen grandes bases de datos dinámicas al almacenar el objeto de la base de datos en la memoria dinámica para reducir la presión en un servidor, cada vez que una fuente de datos externa solicita una lectura. Una capa de Memcached reduce la cantidad de veces que la base de datos realiza una solicitud.

Memcached almacena los valores (v) con la clave (k) y recupera los valores (v) con la clave (k) sin siquiera analizar las consultas de la base de datos y se mantiene alejado de todas estas molestias.

Para leer más sobre Memcached, puede leer la guía sobre cómo configurar Memcache en php.

¡Terminando!

Este artículo proporciona en detalle, la cuenta de las mejores prácticas para la optimización de la base de datos y consejos útiles para ajustar el rendimiento de MySQL que todo desarrollador debe conocer. Es una guía completa para aquellos desarrolladores de back-end que no están seguros del bajo rendimiento de su base de datos y necesitan algunas técnicas prácticas para optimizar la base de datos MySQL desde el núcleo.

Si desea agregar sus pensamientos sobre el tema o desea hacer algunas preguntas al respecto, no dude en escribir sus comentarios en la sección de comentarios.