Tengo un escenario en el que hay una gran cantidad de datos de estado sobre un elemento. El estado del elemento se actualiza de minuto a minuto, y habrá cerca de 50,000 artículos en el futuro cercano. De modo que, en un mes, habrá alrededor de 2,232,000,000 filas de datos. Debo mantener al menos 3 meses en la tabla principal, antes de archivar datos anteriores.Particionado para el rendimiento de consultas en SQL Server 2008
Debo planificar consultas rápidas, basadas en un elemento específico (su ID) y un rango de datos (por lo general, hasta un rango de un mes) - p. seleccione A, B, C de la Tabla donde ID de elemento = 3000 y Fecha entre '2010-10-01' y '2010-10-31 23: 59: 59.999'
Entonces mi pregunta es cómo diseñar una estructura de partición para lograr eso?
Actualmente, estoy partición basada en "el identificador único del artículo" el (un int) mod "el número de particiones", de manera que todas las particiones se distribuyen por igual. Pero tiene el inconveniente de mantener una columna adicional en la tabla para actuar como la columna de partición a la función de partición, por lo tanto, mapear la fila a su partición. Todo eso agrega un poco de almacenamiento adicional. Además, cada partición se asigna a un grupo de archivos diferente.
Eso es un poco de carga. Lea [aquí] (http://sqlblog.com/blogs/paul_nielsen/archive/2007/12/12/10-lessons-from-35k-tps.aspx) sobre escritura de alto volumen (tiene 50k filas * por segundo * entrante). Me intriga cómo va a resolver esto: no tengo experiencia con ese volumen/tasa de aumento) en absoluto – gbn
¿Está tratando de diseñar para la eficacia de la consulta de escritura o la eficiencia de la consulta de lectura? ¿Qué tipo de cargas de lectura tienes? –
¿Puede darnos más información sobre qué columnas hay en la tabla y qué tamaño de columna (ancho) devuelve en la consulta? –