Con el volumen de datos que decís no hay ningún problema.
La tabla puede ser
Dbo.Logs( idUsuario int, Entrada datetime not null, Salida datetime null
) 
 
O sea unos 22 bytes por registro.
En 2 años de registro ocupa unos 0,6 gigabytes.
 
Estoy pensando que si Salida is null entonces está logueado.
 
Podes crear un indice con idUsuario, Entrada
O Entrada, idUsuario
O ambos
 
Pero: si por Entrada, te va a traer 25 o 26 millones de filas, el índice
no es de mucha ayuda o directamente estorba; salvo que traigas períodos
menores.
 
Traer 26 millones de filas siempre va a tardar algùn tiempo más o menos
significativo, pero la estadística de “quiénes se loguearon los últimos
2 meses y cuanto tiempo estuvieron logueados”, no creo que sea el tipo
de función donde el tiempo sea lo más crítico del universo. Si tarda un
minuto en armarla no creo que los gerentes se suiciden (o te maten). Se
puede emplear ese minuto para algo constructivo, como ser: pensar para
qué les puede ser útil semejante consulta. ;-)
 
Si no, tendrías que mantener información resumida, tipo cubos o algo por
el estilo, para que la consulta sea “instantánea”.
 
Saludos
Daniel
-----Mensaje original-----
De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Diego Jancic
Enviado el: Sábado, 02 de Junio de 2007 03:14 a.m.
Para: Daniel Aisenberg
Asunto: [dbms] Diseño en Performance
 
Hola gente!
Estamos en el laburo empezando un nuevo proyecto y hay una parte en
donde hay un log de usuarios logueados (cuando se loguea y cuando se
desloguea).
Esa información va a crecer muy rapido por la naturaleza de ser un log
(puede llegar a crecer unos 50000 registros por dia y si todo va muy
bien mejor aun..), y adicionalmente tiene que poder ser consultable para
saber quien esta logueado en ese momento de forma rapida. Tambien tiene
que ser viable hacer una estadistica de un periodo de 6 meses (maximo)
sin que se muera.
 
La pregunta no apunta a saber como optimizarlo, sino a saber si
SQLServer puede ser configurado para trabajar con tanta info despues de
2 años (calculemos unos 25 millones de registros).
Puedo confiar en que contratando a un buen DBA eso se va a poder dividir
en diferentes archivos y hacer lo necesario para que funcione bien o es
conveniente copiar la información a otro lugar (otra tabla u otra DB) y
realizar las consultas hacia ahí… Básicamente lo necesito para
contemplar esa logica adicional en la aplicación.
 
Una pequeña información de cuales serian las tecnicas para optimizarlo
seran bienvenidos.
 
Muchas Gracias,
Diego

No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.472 / Virus Database: 269.8.6/828 - Release Date:
01/06/2007 11:22 a.m.

Responder a