cuando se trata de tablas innoDB grandes pero estrechas, ejecutando consultas de conteo (*) se pueden notar notablemente lentas. Esto se encontró en un escenario en el que una tabla que consta de ~ 9 millones de registros dio como resultado una operación de 6 segundos (*).
de acuerdo con la documentación de MySQL, lo que obliga a innodb a usar un índice para contar operaciones de conteo puede producir un rendimiento significativo de rendimiento ganancias. Esto se logra utilizando la sintaxis del índice de uso (index_name) en la consulta.
En el ejemplo dado, la siguiente consulta se empleó:
SELECT COUNT(id) FROM perf2 USE INDEX (PRIMARY);
Sin embargo, a pesar de usar el índice, el rendimiento permaneció abismal. Al buscar más opciones de solución de problemas, se descubrió que MySQL 5.1.6 introdujo una solución eficiente que involucra al programador de eventos y al almacenamiento de almacenamiento estadístico.
Tabla de estadísticas, la operación de recuento (*) puede optimizarse significativamente. El proceso implica crear una tabla de estadísticas para almacenar los datos de conteo:
CREATE TABLE stats (`key` VARCHAR(50) NOT NULL PRIMARY KEY, `value` VARCHAR(100) NOT NULL);
Posteriormente, se crea un evento para actualizar regularmente la tabla de estadísticas con el recuento actual:
CREATE EVENT update_stats
ON SCHEDULE
EVERY 5 MINUTE
DO
INSERT INTO stats (`key`, `value`)
VALUES ('data_count', (SELECT COUNT(id) FROM data))
ON DUPLICATE KEY UPDATE value=VALUES(value);
Esta solución autónoma permite intervalos de actualización personalizables, asegurando la precisión y frescura del recuento almacenado. Si bien puede no ser perfecto, ofrece mejoras considerables en el rendimiento en comparación con los métodos tradicionales.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3