2011-08-17 24 views
5

Tenemos un software simple "crm-like" en nuestra compañía. Hay algunas consultas complejas que tomaron algo de tiempo, consultas de uso diario ... así que estoy probando algunas modificaciones para usar tablas temporales para reemplazar todas las combinaciones y subconsultas complejas que necesitamos.Tablas temporales MYSQL - Cómo ver las activas

Hasta ahora vamos realmente bien, obtuvimos una velocidad del 90% +.

Como es una aplicación web (codeigniter + mysql), planeo ponerlo en un entorno de "prueba de producción" para que el 50% de los usuarios pueda ayudarme a probarlo. Me gustaría supervisar las tablas que están activas, y si es posible para cada conexión.

Mi pregunta es: ¿hay alguna manera de que pueda ver todas las TABLAS TEMPORALES que están activas en la instancia de mysql? Tal vez ver sus datos?

Leí algo sobre un PLUGIN o algo así, pero el artículo estaba muy desordenado y no pude entender.

Muchas gracias y disculpas por mi inglés, no mi idioma nativo.

+0

pertenece a http://www.serverfault.com Preguntas y respuestas para administradores de sistemas y profesionales de soporte de escritorio – Mchl

Respuesta

-1

Cuando su conjunto de datos crece, las tablas temporales no lo ayudarán. Al final, ¿cómo ayudan? Los datos deben copiarse en esas tablas después de calcular el resultado, ¿por qué no almacenar en caché los resultados con memcached?

Además, he visto bases de datos que son algo grandes (decenas de gigabytes) y se están ejecutando en una sola máquina y las consultas se estaban ejecutando rápidamente. Hay una pregunta si configuró su servidor de base de datos correctamente (software y hardware). Es posible que experimente una aceleración temporal, pero no hay garantía de que vaya a funcionar de forma permanente. Optimizaba la aplicación, las consultas, el software y el hardware necesarios para ejecutar la aplicación y luego almacenaba en caché los resultados con Memcache a menos que necesitara la última copia del resultado de la consulta.

+1

No estoy de acuerdo. Las tablas de temperatura son muy útiles para consultas complejas cuando tiene muchas actualizaciones con datos de muchas tablas. –

+0

@michaelhanon su desacuerdo no menciona ni hace referencia a un solo hecho. Simplemente significa que es tu opinión personal. Puedes estar en desacuerdo, pero eso no significa que estés en lo correcto. –

4

tabla temporal = temporal, se elimina inmediatamente después de la consulta

no existe una solución directa, excepto registrar todas las consultas y ejecutar uno por uno a examen, que consulta requiere

las variables del sistema tabla llamada tmp_table como Created_tmp_tables podría darle algunas ideas

mysql> show status like '%tmp%'; 
+-------------------------+-------+ 
| Variable_name   | Value | 
+-------------------------+-------+ 
| Created_tmp_disk_tables | 0  | 
| Created_tmp_files  | 0  | 
| Created_tmp_tables  | 0  | 
+-------------------------+-------+ 
1

Uno de los problemas de las tablas temporales es en realidad un seguimiento del uso, luego está la sobrecarga de la creación, indexación y eliminarlos - en particular con una apli web cationes donde la vida de la tabla temporal suele ser tan larga como la duración de la solicitud HTTP.

Cuando los resultados precompilados (es decir, vistas materializadas) serán beneficiosos, configuré una tabla convencional, agregando campos que hacen referencia al id de conexión MySQL/ID de sesión web/consulta fuente + tiempo generado dependiendo en el TTL para los datos y si se compartirá o no.

Además de obtener un seguimiento detallado del uso de la tabla, hace que sea mucho más fácil abordar el ajuste de consultas y, por supuesto, el esquema está mejor documentado.

-1

Creo que no tiene sentido ver las tablas temporales porque viven durante la conexión y mueren después de cerrar las conexiones. Pero hay un hecho importante sobre la tabla temporal. Por lo tanto, si usa una conexión persistente en sus scripts, la tabla temporal vivirá durante la vigencia de esta conexión y los clientes que usen esta tendrán acceso a las mismas tablas temporales. También en este caso, la tabla temporal consumirá recursos del sistema.Para evitarlo, debe eliminar las tablas temporales manualmente después de ejecutar la consulta necesaria de consulta que se utiliza esta tabla temporal.

Cuestiones relacionadas