Mejores prácticas de la database SQL: ¿uso de tablas de file?

No soy un DBA entrenado, pero realizo algunas tareas SQL y tengo esta pregunta:

En las bases de datos SQL he notado que las tablas de file de uso que imitan a otra tabla con exactamente los mismos campos y que se utilizan para aceptar filas de la tabla original cuando se consideran para el file. Como he visto ejemplos donde esas tablas residen en la misma database y en la misma unidad, mi suposition es que esto se hizo para boost el performance. Tales tablas no tenían más de 10 millones de filas en ellas …

  • ¿Por qué se haría esto en lugar de usar una columna para designar el estado de la fila, como un boolean para un indicador activo / activo?
  • ¿En qué punto mejoraría esto el performance?
  • ¿Cuál sería el mejor patrón para estructurar esto correctamente, dado que los datos pueden necesitar ser consultados (o unidos con los datos actuales)?
  • ¿Qué más hay para decir sobre esto?

La noción de archivar es física, no lógica. Lógicamente, la tabla de file contiene exactamente la misma entidad y debe ser la misma tabla.

Las preocupaciones físicas tienden a ser pragmáticas. La noción general es que la "database también se está volviendo (grande / lenta). Archivar loggings hace que sea más fácil hacer cosas como:

  1. Optimizar la estructura del índice de manera diferente. Las tablas de file pueden tener más índices sin afectar el performance de inserción / actualización en la tabla de trabajo. Además, los índices se pueden rebuild con páginas completas, mientras que la tabla de trabajo generalmente querrá tener páginas que estén 50% llenas y equilibradas.

  2. Optimice los medios de almacenamiento de manera diferente. Puede colocar la tabla de files en unidades de disco más lentas / less costosas que quizás tengan más capacidad.

  3. Optimizar las estrategias de copy de security de manera diferente. Las tablas de trabajo pueden requerir copys de security en caliente o envío de loggings, mientras que las tablas de file pueden usar instantáneas.

  4. Optimice la replicación de manera diferente, si la está usando. Si una tabla de file solo se actualiza una vez al día mediante un lote nocturno, puede usar la instantánea en lugar de la replicación transaccional.

  5. Diferentes niveles de acceso. Quizás desee diferentes niveles de acceso de security para la tabla de files.

  6. Bloquear contención. Si su table de trabajo está muy caliente, preferiría que sus desarrolladores de MIS accedan a la tabla de files donde es less probable que detengan sus operaciones cuando ejecuten algo y olviden especificar la semántica de lectura sucia.

La mejor práctica sería no utilizar tablas de files, sino mover los datos de la database OLTP a una database MIS, depósito de datos o mercados de datos con datos desnormalizados. Pero algunas organizaciones tendrán problemas para justificar el costo de un sistema DB adicional (que no es barato). Hay muchos less obstáculos para agregar una tabla adicional a una database existente.

Lo digo con frecuencia, pero …

Varias tablas de estructura idéntica casi nunca tienen sentido.

Una bandera de estado es una idea mucho mejor. Existen forms adecuadas de boost el performance (particionamiento / indexing) sin desnormalizar datos o crear networkingundancias. 10 millones de loggings son bastante pequeños en el mundo de los rdbms modernos, por lo que lo que está viendo es el producto de una mala planificación o una mala comprensión de las bases de datos.

    Intereting Posts