Pregunta

Para la presentación de informes y análisis de rendimiento más rápido, queremos insertar nuestros registros del servidor web en SQL Server. Esto nos permitirá ver los patrones de tráfico, problemas, retrasos en tiempo casi real.

Tenemos un demonio que escucha los eventos de petición / respuesta de nuestros equilibradores de carga a granel y insertos en la base de datos.

Sin embargo, moverse por 1 GB de registros por día y sólo tenemos que mantener alrededor de una semana alrededor de (al menos en esta forma cruda).

¿Qué es la mejor manera de almacenar estos datos y la mejor manera de eliminar las entradas antiguas?

Hemos hablado de almacenamiento de datos de cada día en su propia mesa, por ejemplo, Log_2011_04_07 tendría todas las entradas para ese día, y después de descartar la tabla más antigua. Un punto de vista podría ser creado para abarcar todas las tablas día para facilitar la consulta. Es la factible?

¿Fue útil?

Solución

Usted debe mirar a la partición.

http://technet.microsoft.com/en-us/library /dd578580%28SQL.100%29.aspx

Lo bueno de partición es que tiene un solo nombre de la tabla (en comparación con el enfoque de múltiples tablas) para que sus instrucciones de inserción permanecen estáticas. Funciona con todas las aplicaciones - es completamente transparente para consultas. Usted no tiene que preocuparse de lo que sucede si se termina con diferentes índices o estadísticas sobre cada una de las mesas, ya sea.

crear una función de partición que decide cómo dividir la tabla en varias tablas detrás de la escena. La función sólo puede tener un parámetro / campo de entrada, y en su caso, sería un campo de fecha. La función se puede romper la mesa por fecha, semana, mes o año. - en su caso, que querría fecha, período de 24 horas

A continuación, crear un trabajo del Agente SQL Server que utiliza T-SQL para cambiar al último partición de todos los días. El borrado se convierte en una operación de metadatos, y está ardiendo rápido. Cambiar la partición, a continuación, colocar el viejo uno.

Otros consejos

Hemos desarrollado un producto de la tala webstatistic hace 6 años que nos permite hacer un seguimiento de cada clic de una visita de los usuarios.

Lo que hicimos fueron para grabar buld cada visita que usted escribió y que el demonio programado analizar los registros y normalizar los datos para su posterior consulta de tarde. Tan pronto como los datos / registro se ha analizado, se retiró a mantener baja la estructura de datos.

Para nuestra próxima versión del producto, que distribuirá las granel-colectores por separado en las páginas web y luego usar el demonio para recoger los datos y limpiar después mediante la emisión de comandos para la mayor parte de servicio.

De esta manera podemos manejar un "mantenimiento programado" sin perder datos.

En cuanto a la cuestión de la limpieza en el servidor central, nuestro plan actual es agregar "marcas de tiempo" para poder archivar datos después de ejemplo. De 3 meses.

Hemos pensado que esto al igual que las texturas de correlación MIP en 3D juegos / prestación. Cuanto más se acerque, los datos más detallados, cuanto más lejos, más "agrupados" y menos detallados.

Así que en el día a día, podemos observar los patrones de visitantes, pero después de 3 meses aquellos datos enviaban realmente relevante y comprimir los datos en menos detalles.

que no hemos decidido si vamos a romper la base de datos en trozos de esto para mantener el "nivel de detalle" pr separados. base de datos. Pero acabamos de fuerza, ya que hay algunos problemas nameing si almacenamos diferentes niveles en la misma base de datos.

Esperamos que usted puede utilizar esto para algo? Yo te puedo proporcionarle a ejemplo de código como parte del producto de la empresa.

Crear otra tabla Daily_tables con dos columnas: Table_name y Date_table_created. En el código que crea una nueva tabla al día (que carga los registros de la tela), añadir otra entrada para rellenar la tabla Daily_tables con el nombre de la tabla creada, y la marca de tiempo (fecha y hora actual). Crear un trabajo de agente de SQL que se ejecutará una secuencia de comandos TSQL todas las semanas. El TSQL debe retirar todos los nombres de las tablas (Table_name) de los Daily_tables con una marca de tiempo Date_table_created que es más antigua que la de 7 días.

Hope esto es lo que estabas buscando :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top