Serie de bases de datos imprescindibles: herramientas de ajuste y supervisión del rendimiento de la base de datos

Autor: Zen y el arte de la programación informática

1. Introducción a los antecedentes

Como técnico senior, debemos comprender qué indicadores de desempeño, herramientas y técnicas necesitamos en nuestro trabajo para controlar mejor el negocio y mejorar la calidad del servicio. Entonces, ¿cómo podemos monitorear, analizar y optimizar de manera efectiva el rendimiento de la base de datos? Este artículo presentará las herramientas de ajuste y monitoreo del rendimiento de la base de datos desde los siguientes aspectos:

  1. Análisis y ajuste de parámetros de configuración.

  2. Análisis y optimización de registros lentos de SQL

  3. Análisis estadístico de consulta lenta.

  4. Análisis de comportamiento del optimizador de consultas

  5. Recomendación y construcción de índices InnoDB y MyISAM.

  6. Análisis de la tasa de aciertos de caché

  7. Análisis de distribución de tablas de datos.

  8. TPS/QPS y análisis de consumo de recursos

  9. Estrategia de respaldo y selección de herramientas.

  10. Introducción a las principales herramientas de ajuste del rendimiento de las bases de datos de código abierto

2. Conceptos centrales y conexiones

Primero, presentamos algunos conceptos y sustantivos básicos relacionados con las bases de datos para ayudar a los lectores a comprender los conceptos y métodos de las herramientas de monitoreo del rendimiento de las bases de datos.

  1. CPU: se refiere al procesador de una computadora, que es responsable de ejecutar las instrucciones del programa.

  2. QPS (Queries Per Second): Es el número de consultas que el servidor puede responder por segundo. Generalmente se usa en aplicaciones web. El resultado es el número de solicitudes dividido por el tiempo de respuesta del servidor, que refleja la capacidad de carga del sitio web. .

  3. QPM (Consultas por minuto): la cantidad de consultas a las que responde el servidor por minuto.

  4. RPS (solicitudes por segundo): la cantidad de solicitudes que el servidor puede recibir por segundo.

  5. RPM (solicitudes por minuto): la cantidad de solicitudes recibidas por el servidor por minuto.

  6. TPS (Transacciones por segundo): la cantidad de veces que se completa una transacción por segundo.

  7. TPMS (Transacción por minuto): la cantidad de transacciones completadas por minuto.

  8. Utilización de la CPU: la utilización de la CPU se refiere a la proporción de tiempo que la CPU procesa tareas por unidad de tiempo.

  9. Espera de IO: tiempo de espera de E/S, que se refiere al tiempo que la CPU espera que las solicitudes de E/S suspendan la operación.

  10. Cambio de contexto: el cambio de contexto significa que la CPU se ejecuta en el proceso en primer plano y cambia al proceso en segundo plano, o viceversa.

  11. Conexiones: Número de conexiones, que se refiere a la cantidad de conexiones que utiliza actualmente el servidor.

  12. Subprocesos: número de subprocesos, se refiere a la cantidad de subprocesos que utiliza actualmente el servidor.

  13. Grupo de búfer: el grupo de búfer es un búfer que se utiliza para almacenar datos en la memoria de la computadora y se utiliza para almacenar en caché el acceso a los datos.

  14. Intercambio: el intercambio de páginas significa que cuando la memoria física del sistema es escasa, algunas páginas de la memoria virtual almacenadas temporalmente en el disco se almacenan en la memoria, lo que se denomina intercambio de páginas.

  15. Tamaño del índice: el tamaño del índice se refiere al tamaño del archivo de índice creado en la tabla de la base de datos.

  16. Tasa de aciertos del índice: la tasa de aciertos del índice se refiere a la relación entre el número de veces que se lee el archivo de índice y el número total de escaneos de índice.

  17. Análisis del comportamiento del optimizador de consultas: análisis del comportamiento del optimizador de consultas, que obtiene el comportamiento generado por el optimizador de consultas de la base de datos al ejecutar una declaración SQL específica a través de registros u otros métodos, como si se elige un escaneo de índice o un escaneo de tabla completo, si se habilitan índices y otra información, para determinar si la consulta existe Problemas de eficiencia.

  18. Esperar evento: esperar un evento es un proceso de esperar a que ocurra una condición específica.

  19. Bloqueos: bloqueo, un mecanismo de sincronización utilizado para evitar que varias transacciones simultáneas accedan a los recursos de la base de datos al mismo tiempo.

  20. Registro de consultas lentas de MySQL: registro de consultas lentas de MySQL, que registra las declaraciones de consulta en MySQL cuyo tiempo de ejecución excede el umbral y se utiliza para localizar el cuello de botella de rendimiento de la base de datos.

  21. Herramienta de monitoreo: herramienta de monitoreo, que se utiliza para recopilar, analizar y mostrar varios indicadores de rendimiento del servidor, como la utilización de la CPU, el tiempo de respuesta de la solicitud de E/S, la cantidad de conexiones, TPS, etc., para que los administradores puedan monitorear el estado de ejecución de la base de datos Monitoreo y gestión en tiempo real.

  22. Profiler: generador de perfiles de rendimiento, que puede contar el tiempo, la memoria y la información de llamada de función ocupada por el código cuando se está ejecutando.

  23. Consultas lentas: las consultas lentas se refieren a consultas cuyo tiempo de ejecución excede un cierto umbral (como 1 segundo).

  24. Herramientas de creación de perfiles de bases de datos: herramientas de creación de perfiles de rendimiento de bases de datos, como Show Profile, pt-query-digest, sysbench, etc. proporcionadas por MySQL, que pueden recopilar información sobre el rendimiento de la base de datos, como solicitudes de E/S, retrasos en las consultas y contención de bloqueo, a través de registros. contadores de rendimiento, etc. Utilice esperar.

  25. Esquema de rendimiento: el esquema de rendimiento proporciona una interfaz unificada para recopilar datos de rendimiento de varios módulos dentro de MySQL, incluidas variables de estado del servidor, metadatos, información de bloqueo, estadísticas de índice, etc.

3. Explicación detallada de los principios básicos del algoritmo, pasos operativos específicos y fórmulas del modelo matemático.

(1) Análisis y ajuste de parámetros de configuración.

Las configuraciones de parámetros clave que afectan el rendimiento de la base de datos generalmente se pueden encontrar en el archivo de configuración mysqld.cnf, incluidos innodb_buffer_pool_size, innodb_log_file_size, innodb_thread_concurrency, etc. Entre ellos, innodb_buffer_pool_size es el parámetro más importante. Configurarlo demasiado pequeño puede resultar en una baja eficiencia en la consulta de datos. Configurarlo demasiado grande puede causar un consumo excesivo de memoria e incluso causar tiempo de inactividad del sistema; innodb_log_file_size se usa para controlar el tamaño del registro de transacciones. El valor predeterminado es 5M, demasiado pequeño puede causar fallas en el envío de transacciones o fallas del servidor, demasiado grande puede afectar la capacidad del disco del servidor; innodb_thread_concurrency se usa para controlar la cantidad de subprocesos simultáneos cuando InnoDB realiza operaciones de escritura, el valor predeterminado es 8. Por lo tanto, se recomienda ajustar los parámetros de acuerdo con el entorno real y monitorear y alarmar parámetros importantes.

(2) Análisis y optimización de registros lentos de SQL

El registro de consultas lentas registra las declaraciones SQL en la base de datos cuyo tiempo de ejecución excede el umbral. Generalmente es un problema que los desarrolladores a menudo ignoran. El análisis y la optimización del registro de consultas lentas pueden revelar algunos posibles cuellos de botella en el rendimiento. Primero, verifique el registro lento de SQL a través del comando SHOW WARNINGS. Si hay mensajes de consulta lentos, puede verificar más a fondo el analizador de rendimiento de MySQL (como pt-query-digest, sysbench) para obtener información más detallada; en segundo lugar, para la consulta lenta. análisis de registros, se descubre que para las declaraciones SQL, primero puede verificar si hay errores de sintaxis en la declaración y si hay problemas con el plan de consulta, y luego intentar usar EXPLAIN para analizar la declaración SQL u optimizar el plan de consulta. Si realmente hay una gran sobrecarga de rendimiento, también puede considerar optimizar o dividir la consulta en el lado comercial.

(3) Análisis estadístico de consulta lenta

El análisis de estadísticas de consultas lentas se basa en el análisis estadístico de registros históricos de consultas lentas y recopila información como la frecuencia de ejecución y el tiempo promedio de ejecución de diferentes declaraciones SQL de acuerdo con un cierto rango de tiempo, descubriendo así puntos calientes y anomalías en consultas lentas. El análisis estadístico de consultas lentas generalmente incluye los siguientes pasos:

  1. Obtener registros de consultas lentas: MySQL proporciona dos formas de obtener registros de consultas lentas, una es a través de archivos de registro y la otra a través de herramientas de monitoreo de consultas lentas.

  2. Analice registros de consultas lentas: analice registros de consultas lentas, extraiga declaraciones SQL, tiempo de ejecución, dirección IP del cliente y otra información, y analice esta información para encontrar las declaraciones SQL que consumen más tiempo, como el tiempo promedio de ejecución, la frecuencia de ejecución, etc.

  3. Clasifique y cuente consultas lentas: clasifique y cuente consultas lentas por tipo, frecuencia, grado de impacto, etc., y encuentre consultas lentas comunes y específicas, como SQL de larga duración, SQL de alta frecuencia y consultas lentas.

  4. Genere informes: genere informes, como informes HTML, tablas de Excel, etc., para mostrar resultados estadísticos de consultas lentas y evaluar los cuellos de botella en el rendimiento del sistema y las direcciones de optimización de SQL.

(4) Análisis del comportamiento del optimizador de consultas

El análisis del comportamiento del optimizador de consultas se refiere a obtener el comportamiento generado por el optimizador de consultas de la base de datos al ejecutar declaraciones SQL específicas a través de registros u otros métodos, y analizar sus índices seleccionados, métodos de escaneo, retornos de tablas, etc., para determinar si existen problemas de eficiencia en el consulta. MySQL proporciona herramientas de análisis del comportamiento del optimizador de consultas pt-query-digest y sysbench, que pueden proporcionar información detallada sobre la ejecución de declaraciones SQL, como escaneo de índice, escaneo completo de tabla, retorno de tabla, etc.

(5) Recomendación y construcción del índice InnoDB y MyISAM

En un entorno de producción real, la elección de MyISAM e InnoDB debe determinarse en función de escenarios específicos y después de analizar factores como el modo de lectura y escritura de la base de datos, el tamaño de la tabla, la longitud del campo, la selección de columnas de índice y la complejidad de la consulta.

  1. MyISAM es adecuado para tablas con pequeño volumen de datos e inserción intensiva.

  2. InnoDB es adecuado para grandes volúmenes de datos y tablas que requieren mucha actualización.

  3. Al elegir un motor de tablas, se recomienda dar prioridad a InnoDB, que admite transacciones.

  4. Cuando InnoDB selecciona un índice, debe seleccionar el tipo de índice correspondiente según la naturaleza del índice y la frecuencia de las consultas.

  5. Al crear un índice, debe seleccionar columnas de índice que cubran y combinaciones de columnas de índice según las necesidades comerciales.

  6. Para tablas de datos actualizadas con frecuencia, puede utilizar MyISAM en lugar de InnoDB.

  7. Para una gran cantidad de tablas de datos, debe transferir gradualmente de MyISAM a InnoDB para evitar la presión de escritura en la base de datos principal a través del mecanismo de bloqueo.

  8. No utilice la tabla SELECT * FROM para evitar generar una gran cantidad de paquetes de red no válidos y consumo de memoria.

  9. No incluya condiciones de rango en los índices de unión, ya que esto dará como resultado conversiones implícitas.

(6) Análisis de la tasa de aciertos de la caché

La proporción de aciertos de caché mide la proporción de solicitudes de consulta con respecto al número de aciertos de caché, es decir, proporción de aciertos de caché = número de aciertos/número de consultas. Cuanto mayor sea la tasa de aciertos de la caché, menos aciertos de la caché y mayor será la eficiencia de la caché. En términos generales, una tasa de aciertos de caché superior al 90% es el mejor estado. Cuando es inferior al 50%, se requiere planificación de caché o mantenimiento de invalidación de caché.

(7) Análisis de distribución de la tabla de datos.

El análisis de distribución de la tabla de datos se refiere al rango de distribución de datos, las reglas de distribución, etc. de la tabla de la base de datos. La distribución de datos se puede dividir en las siguientes categorías:

  1. Partición horizontal: la división horizontal consiste en dividir los mismos datos estructurados en varias subtablas de acuerdo con una determinada dimensión (como fecha, región, ID de usuario, etc.), y cada subtabla solo contiene datos de una determinada partición.

  2. Partición vertical: la división vertical consiste en dividir la tabla en varias subtablas según funciones, temas, fuentes de datos, etc.

  3. Partición híbrida: la división híbrida es una tabla que tiene división horizontal y división vertical, es decir, una combinación de ambas.

  4. Tabla distribuida: una tabla distribuida se refiere a una tabla almacenada en varios servidores de bases de datos. Dado que las tablas distribuidas se distribuyen en diferentes servidores, no pueden utilizar el índice global de la base de datos, pero pueden reducir la sobrecarga de la red durante las operaciones entre tablas.

(8) TPS/QPS y análisis de consumo de recursos

TPS (Transacción por segundo) es la cantidad de transacciones procesadas por segundo, es decir, el rendimiento de la base de datos. QPS (consulta por segundo) es la cantidad de consultas enviadas por segundo, que está determinada por el rendimiento del hardware del servidor de la base de datos. TPS y QPS son indicadores importantes para medir las capacidades de procesamiento de la base de datos. El consumo de recursos incluye principalmente CPU, memoria, ancho de banda de red, espacio en disco, etc. El análisis del consumo de recursos consiste en analizar el consumo de recursos, determinar el estado de ejecución de la base de datos y asignar recursos del servidor de acuerdo con las necesidades comerciales.

(9) Estrategia de respaldo y selección de herramientas

La estrategia de respaldo determina la seguridad y disponibilidad de los datos. Sin copia de seguridad, existe el riesgo de pérdida de datos. Al elegir una herramienta de copia de seguridad, debe elegir herramientas de copia de seguridad regular, copia de seguridad diferencial o copia de seguridad incremental según el volumen de negocio y la frecuencia de la copia de seguridad. El método de copia de seguridad regular puede conservar una instantánea de toda la base de datos y realizar copias de seguridad periódicas, lo que puede garantizar la integridad y disponibilidad de los datos, pero requiere mucho espacio en disco; la copia de seguridad diferencial utiliza un método incremental para comparar la copia de seguridad más reciente. y solo guarda las partes modificadas de los datos. Puede ahorrar espacio en el disco, pero no puede garantizar la integridad y disponibilidad de los datos; la copia de seguridad incremental se realiza sobre la base de una copia de seguridad regular y solo realiza una copia de seguridad de los datos actualizados, lo que ahorra tiempo y espacio en la copia de seguridad. , pero aún no puede garantizar completamente la integridad y disponibilidad de los datos. Al elegir una herramienta de respaldo, también debe prestar atención a los requisitos de autorización del software. Algunos programas gratuitos tienen un período de autorización más corto, pero las funciones proporcionadas también son limitadas; el período de autorización del software pago es generalmente más largo, pero el soporte de funciones adquirido es más rico y la garantía de rendimiento proporcionada es más confiable.

(10) Introducción a las principales herramientas de ajuste del rendimiento de las bases de datos de código abierto

Actualmente, las principales herramientas de ajuste del rendimiento de las bases de datos de código abierto incluyen:

  1. mytop: una herramienta en tiempo real para monitorear el rendimiento del servidor MySQL.

  2. pt-query-digest: una herramienta que proporciona un análisis del comportamiento del optimizador de consultas MySQL.

  3. sysbench: proporciona una variedad de herramientas de prueba de carga de bases de datos, incluidas las pruebas de TPS.

  4. innotop: una herramienta para monitorear el estado de ejecución de InnoDB.

  5. mysqltuner: una herramienta que proporciona sugerencias de optimización de bases de datos y análisis de rendimiento.

Supongo que te gusta

Origin blog.csdn.net/universsky2015/article/details/133594441
Recomendado
Clasificación