2011-06-15 21 views

Respuesta

10
  1. partición vertical para tablas de gran tamaño para reducir la E/S y la memoria caché requisitos - columnas separadas que se consultan a menudo vs raramente.

  2. Añadiendo una columna a un sistema de producción cuando el alter table es "demasiado caro".

  3. Super-type/subtype patrón.

  4. Partición vertical para beneficiarse de la eliminación de la tabla (unión) - Proporcionar el optimizador es compatible (una vez más para reducir la E/S y la memoria caché).

  5. Anchor modeling - similar a 4, pero hasta 6NF.

0

sí en general.

Una excepción puede ser si desea asignar privilegios de manera diferente a un subconjunto de columnas.

también consideran que esto es cierto solo cuando se requieren ambos lados.

0

Una razón sería poner los datos a los que se accede con frecuencia en una tabla y los datos a los que se accede con poca frecuencia en otra tabla. Sería más rápido y ahorraría algo de memoria.

Pero tendría que tener mi brazo torcido antes de hacerlo.

1

En ocasiones es útil para bloqueos de mesa. Cuando agrega una columna a una base de datos, toda la tabla se bloquea hasta que se reescribe completamente. Esto tiene poco o ningún impacto cuando su base de datos tiene 100k filas. Pero si usted ha 100M filas o hileras 1B, es una historia completamente diferente ...

Es también útil para evitar filas muertas que toman demasiado espacio. Si está utilizando MVCC y algunas de sus columnas se sobreescriben con regularidad, de vez en cuando tiene sentido para colocarlos en una tabla separada. Podría decirse, auto-aspiradora finalmente entra en acción, pero en aras de la preservación de trabajo en el disco duro, vacío mejor algunos campos int en una tabla separada que todo un montón de filas enteras llenas de texto, varchar (n) y que saben qué más.

Una última razón sería el abuso de select * en ORM. Si está almacenando imágenes o publicaciones de blogs/artículos, por ejemplo, puede tener sentido almacenar el campo blob/texto en una tabla separada. Porque cada vez que se carga por una razón u otra, su ORM cargará toda la fila. Cuando solo necesita la URL de su imagen o publicación, lo último que desea es extraer todo el binario/texto de la base de datos; y sin embargo, su ORM hará exactamente eso ...

Cuestiones relacionadas