Prácticas recomendadas para resolver problemas de rendimiento de la base de datos
Este artículo explica cómo solucionar problemas de base de datos que afectan negativamente al rendimiento de la base de datos en Adobe Systems Commerce en sitios de infraestructura en la nube.
Versiones relacionadas
Adobe Commerce en la infraestructura en la nube
Identificar y resolver consultas de larga duración
Determine si tiene alguna consulta MySQL de ejecución lenta. Según el plan de infraestructura en la nube de Adobe Commerce y, por lo tanto, la disponibilidad de las herramientas, puede hacer lo siguiente.
Analizar consultas de base de datos con MySQL
Puede utilizar MySQL para identificar y resolver consultas de larga ejecución en cualquier proyecto de infraestructura en la nube de Adobe Commerce.
- Ejecute la
SHOW \[FULL\] PROCESSLIST
instrucción. - Si ve consultas de larga duración, ejecute MySQL
EXPLAIN
yEXPLAIN ANALYZE
para cada una de ellas, para averiguar qué hace que el consulta funcione durante mucho tiempo. - En función de los problemas encontrados, tome medidas para solucionar el consulta de modo que se ejecute más rápidamente.
Análisis de consultas con Percona Toolkit (solo para arquitectura Pro)
Si su proyecto Adobe Systems Commerce está implementado en la arquitectura Pro, puede usar Percona Toolkit para analizar consultas.
-
Ejecute el
pt-query-digest --type=slowlog
comando contra MySQL slow consulta logs.- Para encontrar la ubicación de los registros de consultas lentas, consulte Log locations > Service Logs(https://experienceleague.adobe.com/es/docs/commerce-cloud-service/user-guide/develop/test/log-locations?lang=es#service-logs) en nuestra documentación para desarrolladores.
- Consulte la documentación de Percona Toolkit > pt-query-digest.
-
En función de los problemas encontrados, realice pasos para corregir la consulta de modo que se ejecute más rápidamente.
Comprobar que todas las tablas tienen una clave principal
La definición de claves principales es un requisito para el buen diseño de bases de datos y tablas. Las claves principales proporcionan una forma de identificar una sola fila en cualquier tabla de forma exclusiva.
Si tiene tablas sin una clave principal, el motor de base de datos predeterminado para Adobe Systems Commerce (InnoDB) utiliza la primera clave única, no nula, como clave principal. Si no hay ninguna clave única disponible, InnoDB crea una clave principal oculta (6 bytes). El problema con una clave principal definida implícitamente es que usted no tiene control sobre ella. Además, el valor implícito se asigna globalmente a todas las tablas sin claves principales. Esta configuración puede causar problemas de contención si realiza escrituras simultáneas en estas tablas. Esto puede posible cliente a problemas de rendimiento, ya que las tablas también comparten el incremento del índice de clave principal oculta global.
Para evitar estos problemas, defina una clave principal para las tablas que no tengan una.
Identificar y actualizar tablas sin una clave principal
-
Identifique tablas sin una clave principal mediante la siguiente consulta SQL:
code language-sql SELECT table_catalog, table_schema, table_name, engine FROM information_schema.tables WHERE (table_catalog, table_schema, table_name) NOT IN (SELECT table_catalog, table_schema, table_name FROM information_schema.table_constraints WHERE constraint_type = 'PRIMARY KEY') AND table_schema NOT IN ('information_schema', 'pg_catalog');
-
Para cualquier tabla que no tenga una clave principal, agregue una clave principal actualizando
db_schema.xml
(el esquema declarativo) con un nodo similar al siguiente:code language-html <constraint xsi:type="primary" referenceId="PRIMARY"> <column name="id_column"/> </constraint>
Cuando agregue el nodo, reemplace las variables
referenceID
ycolumn name
por sus valores personalizados.
Para obtener más información, consulte Configurar esquema declarativo en nuestra documentación para desarrolladores.
Identificación y eliminación de índices duplicados
Identifique los índices duplicado de la base de datos y elimínelos.
Comprobar duplicado índices
Para comprobar si hay índices duplicado en la arquitectura Pro o Starter nube, ejecute el siguiente consulta SQL.
SELECT s.INDEXED_COL,GROUP_CONCAT(INDEX_NAME) FROM (SELECT INDEX_NAME,GROUP_CONCAT(CONCAT(TABLE_NAME,'.',COLUMN_NAME) ORDER BY CONCAT(SEQ_IN_INDEX,COLUMN_NAME)) 'INDEXED_COL' FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_SCHEMA = 'db?' GROUP BY INDEX_NAME)as s GROUP BY INDEXED_COL HAVING COUNT(1)>1
La consulta devuelve los nombres de las columnas y los nombres de los índices duplicado.
Los comerciantes de arquitectura profesional también pueden ejecutar la comprobación utilizando el comando Percona Toolkit [pt-duplicate-key checker](https://www.percona.com/doc/percona-toolkit/LATEST/pt-duplicate-key-checker.html%C2%A0)
.
Quitar duplicado índices
Utilice la instrucción SQL DROP INDEX para quitar los índices duplicados.
DROP INDEX
Más información
Prácticas recomendadas de configuración de bases de datos para implementaciones en la nube