aelena.com

1 August 2008

Averigua las veces que se ejecutan tus SPs

Filed under: DataBase, DBA, SQL Server — admin @ 11:34

Con esta consulta podemos ver (en SQL Server 2005) el número de ejecuciones de nuestros procedimientos almacenados de una base de datos que indicamos en la línea 7:

   1:  SELECT DB_NAME(st.dbid) DBName
   2:  ,OBJECT_NAME(st.objectid) StoredProcedure
   3:  ,max(cp.usecounts) Execution_count
   4:  FROM sys.dm_exec_cached_plans cp
   5:  CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) st
   6:  where DB_NAME(st.dbid) is not null
   7:  and cp.objtype = ‘proc’
   8:  AND DB_NAME(st.dbid) = ‘NOMBRE DE TU BASE DE DATOS’
   9:  group by cp.plan_handle, DB_NAME(st.dbid),
  10:  OBJECT_NAME(objectid)
  11:  order by max(cp.usecounts)

Si queremos las estadísticas para todas las bases de datos del servidor, comentad la línea 7.

Saludos

Averigua el tamaño de las filas de tus tablas

Filed under: DataBase, DBA, Filas, Row Size, SQL Server, T-SQL, Tamaño Filas — admin @ 11:33

Este es un procedimiento que nos dirá cuanto “pesan” las filas de nuestras tablas según las hayamos definido. Nos puede resultar útil para preparar nuestras bases de datos para unos volúmenes de datos determinados.

   1:   
   2:  CREATE PROCEDURE [dbo].[FindRowSize]
   3:  AS
   4:  BEGIN
   5:  DECLARE @rowsize int;
   6:  DECLARE @lineaSize int;
   7:  DECLARE @anexoSize int;
   8:  SET NOCOUNT ON;
   9:  CREATE TABLE #TBLSUMMARY ( tablename varchar(75), rowsize int );
  10:  DECLARE tablesize_cursor CURSOR FOR
  11:  SELECT name FROM sys.tables WHERE type_desc = ‘USER_TABLE’
  12:  OPEN tablesize_cursor
  13:  DECLARE @tablename sysname;
  14:  FETCH NEXT FROM tablesize_cursor INTO @tablename;
  15:  WHILE (@@FETCH_STATUS <> -1)
  16:  BEGIN
  17:  IF (@@FETCH_STATUS <> -2)
  18:  BEGIN
  19:   
  20:  SET @rowsize = (select sum(max_length) from sys.columns where
  21:  object_id in ( select object_id from sys.tables where name=@tablename ));
  22:   
  23:  INSERT INTO #TBLSUMMARY VALUES (@tablename,@rowsize);
  24:   
  25:  END;
  26:  FETCH NEXT FROM tablesize_cursor INTO @tablename;
  27:  END;
  28:  CLOSE tablesize_cursor;
  29:  DEALLOCATE tablesize_cursor;
  30:   
  31:  SELECT * FROM #TBLSUMMARY;
  32:  DROP TABLE #TBLSUMMARY;

Se hace un cursor sobre la colección de tablas de usuario y se suman las longitudes de cada uno de los campos.

Se va guardando todo en una tabla temporal que consultamos una vez terminado todo el proceso.

Saludos