jueves, 26 de julio de 2018

Consultar el tamaño y el numero de registros en SQL SERVER , Postgresql y Mysql

Buenos dias, nuevamente estoy en la actualizacion del este blog hoy voy a tratar un tema de invetario de objetos  tanto en el tamaño que ocupan, como en el numero de registro en las diferenetes bases de datos.

Esto ayuda mucho cuando se realiza procesos de migracion o ETLs.

Por ejemplo con el siguiente script se puede calcular el numero de registros de las tablas de una base de datos en SQL SERVER:



select sysobjects.name
, sum(case when sysindexes.indid<2 then rows
else 0 end) as rows
, sum(case when sysindexes.indid in (0,1) then sysindexes.dpages
when sysindexes.indid=255 then sysindexes.used
else 0 end) * 8 as Data
, (sum(case when sysindexes.indid in (0,1,255) then sysindexes.used
else 0 end)
- sum(case when sysindexes.indid in (0,1) then sysindexes.dpages
when sysindexes.indid=255 then sysindexes.used
else 0 end))*8 as index_size
, (sum(case when sysindexes.indid in (0,1,255) then
sysindexes.reserved-sysindexes.used
else 0 end)*8) as unused,xtype
from sysobjects
join sysindexes
on sysobjects.id=sysindexes.id
where xtype='U'
group by sysobjects.name,xtype
order by 2 desc


En Postgresql se haría asi:

SELECT
nspname AS schemaname,relname,reltuples::integer,pg_size_pretty((relpages*8)::bigint*1024) AS "Tamaño Objeto"
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE nspname NOT IN ('pg_catalog', 'information_schema') AND relkind='r'
ORDER BY reltuples DESC;


En MySql es asi:


SELECT `table_schema` AS `Schema`, `table_name` AS `Table`, `engine` AS `Engine`, `table_rows` AS `Rows`, ROUND(((data_length + index_length) / 1024 / 1024), 3) `Size` 
FROM information_schema.TABLES WHERE table_schema NOT IN ('information_schema', 'mysql') ORDER BY (`Size`) DESC;



No hay comentarios:

Publicar un comentario