2010-10-22 13 views
11

Hemos notado que MySQL informa un número muy elevado de tablas de discos temporales (más de 10.000), esto se informa mediante Server Density. Estábamos tratando de entender un poco más sobre esto.Número alto de tablas temporales de disco de MySQL

  • ¿Por qué las tablas de discos temporales son creadas por MySQL?
  • ¿Qué impacto tienen en el rendimiento?
  • ¿Alguna vez los eliminó MySQL o este número solo aumentará?

Respuesta

15

Las tablas de temperatura se pueden crear por muchas razones. Cualquier operación de selección que tenga un gran conjunto de datos y requiera clasificación se escribirá en una sola. Las tablas temporales reales creadas por consultas directamente (tipo de tabla TEMPORAL) se realizan por conexión, por lo que si tiene una secuencia de comandos con 50 conexiones cada una haciendo la misma tabla temporal, eso es 50 conjuntos de archivos temporales en disco para ellas . grupo de razones de creación de tabla temporal por orden y por La E/S basada en disco es generalmente la parte más costosa de un DBMS, por lo que si estas tablas son para conjuntos de datos grandes, probablemente limite el rendimiento de DB al de su sistema de E/S Pero en general, al existir, solo están masticando espacio en disco y no mucho más.

Las tablas de temperatura para la clasificación deben limpiarse cuando finaliza la consulta. La tabla Temp del tipo 'TEMPORARY' se limpiará cuando la conexión a la que están conectados esté cerrada. Si está utilizando conexiones persistentes, entonces las tablas TEMPORALES se mantendrán hasta que usted (o un programa) LAS DEJEN caer de forma manual.

+0

ah veo, así que si estuviéramos utilizando conexiones persistentes en un servidor ocupado, podríamos ver que el valor aumentara a un valor grande, pero no hay nada de qué preocuparse? – Tom

+1

depende de cómo se crean las tablas. crear una tabla temporal 'A' en una conexión está bien. las reutilizaciones posteriores de la conexión solo reutilizarán la misma tabla. pero si los estás generando con nombres aleatorios, estarás filtrando esas tablas temporales hasta que se cierre la conexión y se limpie mysql. –

+0

¿Fugas donde, en el disco, en la memoria? – Tom

1

Ha definido muchos índices en las tablas. ¿Alguna vez has pensado sobre cómo funciona la indexación?

Simplemente un índice es una tabla temporal en dbase que mantiene ordenada una copia de la columna indexada. Cuando se inserta una nueva fila, dBase pone un nuevo registro en la tabla temporal en el lugar correcto para un índice tiene los siguientes resultados:

A) Ventajas:

1) Aumento de la velocidad de búsqueda porque la tabla se ordena en una tabla temporal basado en campo indexado (s)

B) Desventajas:

1) Reduzca la velocidad (crear, actualizar, eliminar) porque mismas acciones deben realizarse en las mesas de trabajo temporal si es necesario.

2) El tamaño de la base de datos aumenta debido al uso de tablas temporales.

Conclusión:

La indexación es un compromiso de mayor tamaño db e inserción más lento y la búsqueda rápida de gran cantidad de datos. Utilice la indexación en los campos que con frecuencia los denomina criterios de búsqueda (DONDE) y elimine índices adicionales para optimizar su diseño de base de datos.

6

Antes que nada, lea the answer by Marc B Es la razón de por qué tiene muchas tablas temporales. De todos modos, las tablas temporales en sí no están mal, lo malo es la "tabla temporal en disco" que es lenta y causa gran parte del disco IO.

Para evitar una tabla temporal para almacenar en el disco tratar de seguir estos pasos:

  • comprobar el valor de max_heap_table_size variables
  • comprobar el valor de tmp_table_size variables
  • Compruebe el porcentaje de las tablas de disco entre todas las tablas temporales. Simplemente compare show global status like 'Created_tmp_%tables' estos dos números. Si el porcentaje no es demasiado grande, no hay nada de qué preocuparse.
+0

Los valores de max_heap_table_size y tmp_table_size ¿qué son valores buenos/malos? – Tom

+0

Depende mucho de su proyecto específico. Entonces no hay consejos generales sobre valores. Lo único que puedo sugerir es que evite las tablas temporales en disco. – Vadim

Cuestiones relacionadas