Hace rato que no escribia, he andado como siempre en mucha cosa. Estoy jugando un poco con PostGreSQL y Azure, seguramente empezare a incluir esa informacion en futuras entradas a este blog.
La respuesta a la pregunta del titulo me ha servido muchas veces como administrador de una base de datos a lo largo de los años.
Esta consulta esta basada en una vista de systema que analiza el uso de los indices de nuestras tablas.
sys.dm_db_index_usage_stats
SELECT groupname = @groupname, casinoname = @casinoname, DB_NAME(a.database_id) Database_Name ,
b.name Table_Name ,
MAX(ISNULL(last_user_update,'2001-01-01')) last_user_update ,
MAX(ISNULL(last_user_seek,'2001-01-01')) last_user_seek ,
MAX(ISNULL(last_user_scan,'2001-01-01')) last_user_scan ,
MAX(ISNULL(last_user_lookup,'2001-01-01')) last_user_lookup
FROM sys.dm_db_index_usage_stats a
INNER JOIN sys.tables b ON b.object_id = a.object_id
INNER JOIN sys.indexes c ON c.object_id = a.object_id
AND c.index_id = a.index_id
WHERE b.name = 'playerbalances'
GROUP BY a.database_id ,
b.name
ORDER BY a.database_id ,
b.name ;<span data-mce-type="bookmark" id="mce_SELREST_start" data-mce-style="overflow:hidden;line-height:0" style="overflow:hidden;line-height:0" ></span>
Utilizando este mismo codigo podemos determinar cuando fue la ultima vez que se utilizo uno de nuestros indices
SELECT DB_NAME(a.database_id) Database_Name ,
b.name Table_Name ,
c.name Index_Name ,
MAX(ISNULL(last_user_update,'2001-01-01')) last_user_update ,
MAX(ISNULL(last_user_seek,'2001-01-01')) last_user_seek ,
MAX(ISNULL(last_user_scan,'2001-01-01')) last_user_scan ,
MAX(ISNULL(last_user_lookup,'2001-01-01')) last_user_lookup
FROM sys.dm_db_index_usage_stats a
INNER JOIN sys.tables b ON b.object_id = a.object_id
INNER JOIN sys.indexes c ON c.object_id = a.object_id
AND c.index_id = a.index_id
WHERE a.database_id = DB_ID()
GROUP BY a.database_id ,
b.name ,
c.name
ORDER BY a.database_id ,
b.name ,
c.name;
Toda pieza de informacion es valiosa, en este caso puede ayudarme a ver si mi politica de creacion de indices esta sirviendo o no, puede indicarme cuales tablas tienen mas trafico y ayudarme a tomar decisiones para mejorar un problema de contencion.
Saludos
