Trucos útiles para encontrar y corregir consultas lentas en la base de datos de WordPress
Publicado: 2019-04-17Las consultas SQL moderadas pueden afectar la ejecución del sitio de desarrollo de aplicaciones de WordPress. De vez en cuando, las consultas moderadas son un efecto secundario de SQL estructurado inadecuadamente que nunca debería haberse hecho de esa manera.
Es más, en algunos casos, las consultas moderadas eran, en realidad, preguntas rápidas en un momento dado; sin embargo, a medida que el sitio se hacía más experimentado, la consulta se volvía cada vez más lenta, incapaz de mantenerse al tanto de la base de datos que se extendía.
A pesar de cómo el SQL se moderó, uno debe investigar un par de enfoques para descubrir y solucionar problemas en el desarrollo de aplicaciones de WordPress. Aquí y allá, uno puede necesitar cierta aplicación web y es posible que no tenga suficiente energía, aptitud o plan de gastos para realizar mejoras personalizadas. Crear sin ninguna preparación puede ser la respuesta para algunos problemas, pero puede tomar más tiempo que comenzar desde una base de código actual. WordPress se estructuró inicialmente como una plataforma de blogs, y sigue destacándose por eso. Sea como fuere, se ha convertido en un sistema de administración de contenido (CMS) completamente desarrollado y, para algunos propósitos, incluso puede crear una aplicación web sólida, rápidamente y con un presupuesto fundamentalmente más bajo que el desarrollo personalizado. Si bien WordPress ofrece aplicaciones de desarrollo integradas, se puede usar para aplicaciones web para que sea más útil. Las estructuras inherentes de la página y la publicación se pueden utilizar para muchas cosas, pero si uno necesita que se incluyan, busquen o cuestionen, controlen y muestren información y campos personalizados, se requiere algo de trabajo adicional.
Búsqueda de consultas lentas
Encontrar el origen de las preguntas moderadas incluye dos etapas:
- Averiguar qué preguntas son realmente las moderadas.
- Identificar el programa que los está operando.
Uno debe echar un vistazo a dos módulos y un SaaS que pueden permitirles encontrar consultas moderadas.
Supervisión de consultas
Para disponer de información sobre la página que se está ejecutando actualmente, se puede utilizar este módulo. Además de un conjunto completo de datos sobre las actividades internas de WordPress, ofrece un desglose punto por punto de:
- ¿Cuántas preguntas se produjeron sobre esta demanda?
- ¿Qué consulta en la página tomó la cantidad máxima de tiempo?
- ¿Qué capacidades invirtieron más energía en las preguntas de SQL?
- Si esas consultas se originaron en módulos, temas o el centro de WordPress
La pantalla de consulta incluso reconoce preguntas moderadas con contenido rojo desconcertante, lo que hace que sea muy sencillo seleccionar el problema SQL.
Barra de depuración
Otro instrumento fenomenal para encontrar SQL moderadamente frío es el antiguo y confiable módulo de barra de depuración. La barra de depuración proporciona datos sobre el funcionamiento interno de WordPress cuando una página se carga con asuntos como:
- Parámetros de WP_Query
- Solicitud de datos (conteo de coordinación de reglas de modernización)
- Consultas SQL producidas por la presente página
Para habilitar el seguimiento de SQL en la barra de depuración, el usuario debe asegurarse de permitir SAVEQUERIES en algún lugar del sitio, probablemente en wp-config.php
Precaución: SAVEQUERIES afecta la ejecución en el sitio y, presumiblemente, no debe utilizarse en un servidor de generación. Sin embargo, se puede utilizar en una máquina de avance.
Encontrar el SQL moderado no es extremadamente fácil con la barra de depuración. Por ejemplo, no proporciona tablas ordenables ni presenta consultas moderadas para el usuario. Lo que proporciona Debug Bar es una capacidad de seguimiento que dirige al usuario precisamente hacia la dirección del origen de una pregunta.
Este es un resumen de los documentos que se cargan y las capacidades que resultan en la consulta que se está ejecutando. La mayoría de las veces, uno está interesado en la sección de continuación absoluta en el resumen; este es el lugar donde se ejecutó la pregunta moderada y donde uno debe comenzar su cacería. Lo conveniente de tener la configuración de cada capacidad que genera esta pregunta es que puede revelar una idea de por qué se ejecutó el SQL en cualquier caso.
nuevareliquia
NewRelic es una administración que mide y supervisa la ejecución del desarrollo de aplicaciones web, incluido el desarrollo de aplicaciones de WordPress. La administración da una tonelada métrica de datos sobre la ejecución del sitio. Es todo menos difícil perder todo el sentido de la dirección en la información que NewRelic le brinda al usuario detalles cada minuto para las consultas de SQL.
Hay dos contrastes notables entre NewRelic y los módulos a los que nos referimos antes:
- NewRelic brinda mucha más información sobre la ejecución de PHP, hasta el cálculo exacto del tiempo empleado en cada función.
- NewRelic rastrea cada demanda al sitio fuera de la vista, por lo que uno puede consultarlo más tarde para descubrir SQL moderado. Los módulos solo le dan la página actual.
Es importante que NewRelic tenga un nivel de configuración gratuito que brinde información general sobre el funcionamiento del sitio, sin embargo, tendrá que pasar a un nivel de pago para las probabilidades y extremos sofisticados para verificar demandas únicas y encontrar consultas moderadas.
Comprender una consulta lenta con EXPLAIN
Hasta este punto, los dispositivos han sido protegidos para encontrar preguntas moderadas. Actualmente se debe saber por qué esas investigaciones están obstaculizando las cosas.
La consigna de MySQL EXPLAIN puede permitir, ejem, aclarar lo que está pasando. Agregar EXPLAIN al comienzo de una consulta indica cómo MySQL ejecuta una pregunta. Para consultas complicadas, EXPLAIN puede ayudar a distinguir enfoques moderados en los SQL, por ejemplo, subconsultas moderadas o actividades derrochadoras.
Corrección de consultas lentas
Dado que se sabe que las consultas son moderadas, y EXPLAIN le ha revelado al usuario por qué es así, se deben considerar algunas opciones para solucionar esos problemas somnolientos.
Opción 1: torcer la pregunta
Puede haber una pregunta que esté poniendo la pantalla de Editar publicación a un ritmo muy lento. La consulta era una pieza del cuadro meta de Campos personalizados.
La pieza definitiva de SQL está trayendo una lista de meta_keys de la tabla ks29so_postmeta que con toda probabilidad no comienza con el signo de subrayado. La explicación GROUP BY implica que cada resultado es especial.
Al ejecutar esta consulta varias veces, este es el tiempo que puede tomar:
1.7145 seg
1.7911 seg
1.8076 seg
1.7707 seg
1.8456 seg
Se podría desarrollar una consulta que dé como resultado resultados similares. Tiene que ser elegido como meta_keys único en su clase. Excepcional es una palabra equivalente a particular, ¡que resulta ser una explicación de SQL!
Opción 2: agregar un índice
Mientras el usuario ejecuta una pregunta SQL en una tabla MySQL establecida, necesita examinar toda la tabla para entender cuáles son las líneas que son significativas para la consulta en particular. En el momento en que la mesa se vuelve grande, esa verificación comienza a tomar bastante tiempo.
Ahí es donde entran los archivos MySQL. Las listas toman la información en una tabla y la organizan de tal manera que hace que la información sea mucho menos difícil de encontrar. Al ordenar la información de una manera específica, los archivos ayudan a reducir la cantidad de filtrado que realiza MySQL para cada consulta.
Los archivos se pueden agregar a segmentos individuales o en varias secciones.
Con un archivo en meta_key, el primer tiempo de preguntas de SQL se parece un poco a esto:
0.0041 seg
0.0023 seg
0.0030 seg
0.0025 seg
0.0019 seg
Esto es extremadamente inteligente.
Una expresión de alerta en los archivos: cada vez que INSERTAR hace una columna o se utiliza ACTUALIZAR en una tabla, la lista se vuelve a determinar, lo que puede ser una actividad costosa. Los registros hacen que la lectura de la tabla sea más rápida, pero escribir en ella es más lento. Si bien una lista de índice colocada correctamente puede funcionar extremadamente bien, uno no debe obsesionarse con ella sin verificar los impactos generales de la lista en la base de datos.
Opción 3: almacenar en caché los resultados de la consulta
Una vez que se da cuenta de que hay una pregunta moderada. En lugar de cambiar la pregunta, puede haber un escenario en el que simplemente deje de lado los efectos secundarios de la investigación. De esa manera, uno limitaría la frecuencia con la que se realizaba la consulta y obtendría un "pase libre" la mayoría de las veces.
La API de transitorios de WordPress es una de las formas de reservar las consultas. Los transitorios se utilizan para descartar las consecuencias de tareas costosas, por ejemplo,
- Solicitudes a sitios externos (por ejemplo, obtener publicaciones continuas de Facebook)
- Lentos bultos de manejo (por ejemplo buscando cuerdas enormes con una articulación habitual)
- ¡Consultas lentas en la base de datos!
Elegir un enfoque
Hay una serie de alternativas que se han presentado, y lo más probable es que haya diecisiete enfoques diferentes para comprender esta investigación moderada. ¿Qué enfoque se debe tomar?
La opción 1 (cambiar la pregunta) arrojó resultados brillantes. Sin embargo, se debe considerar la posibilidad de que la consulta modificada generalmente no tenga resultados similares. Sin darse cuenta, uno podría borrar el código con una pregunta algo fuera de lugar.
La alternativa 2 (que incluye un registro) no siempre es concebible dependiendo de la tabla y las secciones utilizadas por la consulta. Debido a las tablas del centro de desarrollo de aplicaciones de WordPress, habría que hacer hincapié en los otros efectos de los archivos:
- ¿La rutina de actualización del centro espera listas adicionales?
- ¿Incluir un archivo moderará otras consultas, como INSERTAR y ACTUALIZAR?
La alternativa 3 (reservar los resultados por medio de personas sin hogar) tiene un efecto insignificante: el usuario no necesita cambiar la primera consulta y no es necesario ajustar la estructura de la base de datos.
Por lo general, las personas optan por la opción 3. En el caso específico de uno, puede elegir otra alternativa según la pregunta que está solucionando o el sitio específico que tiene problemas de SQL. Ciertamente, no existe una respuesta única para la mayoría de los problemas de ejecución, por lo que uno puede diferir con la decisión del otro, ¡o intentar cada uno de los tres sin demorar un momento!
Mantenerse actualizado
Ha esbozado un problema genuino aquí. El cuadro de campos personalizados en CSS-Tricks realmente fue un delincuente para algunas consultas de bases de datos extremadamente moderadas. También ha esbozado varios caminos hacia arreglos potenciales.
Concebir nuevas ideas
Hay diferentes metodologías que uno puede tomar para intentar y acelerar la ejecución de preguntas que incluyen más trabajo que simplemente ajustar la consulta o incluir una lista. Una de las partes más lentas de la pregunta es el trabajo realizado para unir las tablas para pasar de la identificación del cliente a la identificación del artículo, y uno debe hacer esto para cada cliente.
Se podría desnormalizar la información haciendo una tabla que almacene la información del permiso, junto con la identificación del cliente y la identificación del artículo para todas las licencias y simplemente consultar eso para un cliente en particular. Sería necesario modificar la tabla utilizando activadores de MySQL en INSERTAR/ACTUALIZAR/ELIMINAR en la tabla de licencias (u otros dependiendo de cómo podría cambiar la información), sin embargo, esto mejoraría significativamente la ejecución de cuestionar esa información.
Por lo tanto, si varias combinaciones moderan la pregunta en MySQL, puede ser más rápido dividir la pregunta en al menos dos articulaciones y ejecutarlas de forma independiente en PHP y luego recopilar y canalizar los resultados en el código.