2011-03-25 13 views

Respuesta

7

El consejo general dado en postgres docs (read the tip) es que los campos de longitud variable suelen tener un mejor rendimiento porque da como resultado menos datos, por lo que la tabla se adapta a menos bloques de disco y ocupa menos espacio en la memoria caché. Las CPU modernas son mucho más rápidas que la memoria y los discos que la sobrecarga del campo de longitud variable vale la reducción en IO.

Observe que postgresql almacena valores NULOS en un mapa de bits al comienzo de la fila y omite el campo si el valor es NULO. Entonces, cualquier columna que se pueda anular tiene básicamente un ancho variable. La forma en que postgresql almacena los datos (Database page layout) sugiere que recuperar la última columna sería más lento que la primera columna. Pero esto probablemente solo tendrá un impacto notable si tiene muchas columnas y la mayoría de los datos estaban en caché para comenzar. De lo contrario, el disco io será el factor dominante.

0

Por lo que sé, no lo hace no

Comprobar este enlace hacia fuera para hablar de temas relacionados tipos de datos mi conclusión de esta lectura es lo exhibiciones especiales comportamiento MySQL, PostgreSQL no que para mí es buena. http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/

+0

A menos que omita algo en esas pruebas, las pruebas se realizan con datos de longitud fija. Por lo tanto, cuando las pruebas dicen un varchar (50), la información siempre tiene 50 caracteres. Lo que significa que estas pruebas son el peor escenario posible para las columnas varchar ya que no se benefician de su capacidad para almacenar menos datos para valores más cortos. – Eelke

0

presumiblemente más performante

Yo nunca creer nada "mito rendimiento" a menos que lo prueba con mi propio conjunto de datos y con una carga de trabajo que es típico de mi solicitud.

Si necesita saber si su carga de trabajo es lo suficientemente rápido en DBMS X con sus datos , no se ven en ninguna otra cosa que los números que obtiene de un punto de referencia en su entorno realista con el hardware que coincide con la producción .

Cualquier otro enfoque puede reemplazarse mirando a la buena bola de cristal

+0

Créanme, soy el primero en pronunciar el mantra "perfil, perfil, perfil". Si sigo esto, lo probaré ampliamente. De todos modos, la pregunta es válida: algunas bases de datos tienen un comportamiento específico y especial para este caso, y me gustaría saber si Postgres es uno de ellos. Esto es útil para saber, independientemente de cualquier carga de trabajo específica. –

+0

@Frank: la pregunta es: ¿Importa? Y una vez que se excede el umbral TOAST para un valor de columna, las cosas se vuelven aún menos comparables. –

+1

"Go measure" no es válido ni constructivo. -1 y vota para cerrar. –

Cuestiones relacionadas