2012-07-19 13 views
6

¿Hay alguna diferencia entre la velocidad de obtención de datos si las filas dinámicas se mueven hacia el final.¿Las columnas de texto deberían moverse hacia el final?

ejemplo: int, int, int, text es mejor que int int text int?

mi guía me ha informado sobre este hecho, ¿cómo es que no se obtiene dicha información de internet? por favor ayuda ?

+0

Estaría * muy * sorprendido si realmente puede medir la diferencia de rendimiento. –

Respuesta

3

Esto se debe a la alineación de datos. INT toma 4 bytes, por lo que los procesadores de 32 bits (equivalentes a 4 bytes) funcionarán con datos en secuencias de 4 bytes. Ser capaz de extraer los datos en el orden que mejor se adapte al procesador dará lugar a resultados más rápidos y un mejor rendimiento.

Referencia: http://en.wikipedia.org/wiki/Data_structure_alignment

Ahora, esto es un problema encontrado a menudo en la transferencia de datos a través de un canal de comunicación (porque ciertos compiladores típicamente optimizar su estructura de datos mediante la adición de un byte reservado a 4 bytes align ciertos miembros) Sin embargo, MySQL también tiene en cuenta la alineación de 4 bytes con los motores NDBCLUSTER. Esto significa que al colocar su estructura TEXT entre los valores INT, fuerza más recuperación de datos de la necesaria.

Así:

INTINTINTINTTEXT procesará más rápido que INTINTTEXTINTINT como el procesador puede recuperar de 16 bytes (los cuatro INT) inmediatamente sin preocuparse por el tamaño de TEXT.

Para más detalles, consulte la documentación de MySQL :

http://dev.mysql.com/doc/refman/5.5/en/storage-requirements.html

1

TEXT y BLOB datos no se almacenan en el mismo espacio que la propia columna. Se almacenan en un área especial reservada para este propósito.

Estas columnas son siempre más lentas de recuperar, pero la cantidad de ralentización varía considerablemente según la afinación de su sistema y la carga de datos. Algunas veces es irrelevante, y algunas veces resulta en una fuerte paliza. Solo tenga en cuenta que debe usar un campo VARCHAR corto sobre un campo TEXT si puede gestionarlo, ya que la longitud mucho más larga de los campos blob no es gratuita.

Dicho esto, las columnas TEXT se almacenan en la fila como un puntero a los datos reales, lo que los hace significativamente más pequeños que VARCHAR en la mayoría de los casos. Si no los selecciona, no se cargan, y no incurre en la búsqueda adicional requerida para ensamblar sus datos.

Para estar seguro de que esto se aplica a su versión de MySQL y su ajuste, cree dos tablas grandes llenas de datos representativos y compárelo usted mismo.

Cuestiones relacionadas