Listar as maiores tabelas / coleções
Oracle
SELECT segment_name, segment_type,
ROUND(bytes/1024/1024, 1) AS mb
FROM dba_segments
WHERE segment_type IN ('TABLE','TABLE PARTITION')
ORDER BY bytes DESC
FETCH FIRST 10 ROWS ONLY;Remova o filtro segment_type para ver também os índices.
PostgreSQL
SELECT relname AS table,
pg_size_pretty(pg_total_relation_size(relid)) AS total
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC
LIMIT 10;pg_total_relation_size é a soma de tabela + índices + TOAST; use pg_relation_size apenas para a tabela.
MySQL
SELECT table_name,
ROUND((data_length + index_length)/1024/1024, 1) AS mb
FROM information_schema.tables
WHERE table_schema = DATABASE()
ORDER BY (data_length + index_length) DESC
LIMIT 10;Para um schema específico, use WHERE table_schema = 'name'.
SQL Server
SELECT TOP 10 OBJECT_NAME(object_id) AS table_name,
SUM(reserved_page_count) * 8 / 1024 AS mb
FROM sys.dm_db_partition_stats
GROUP BY object_id
ORDER BY mb DESC;reserved_page_count abrange todas as páginas reservadas (dados + índices).
MongoDB
db.getCollectionNames()
.map(c => ({ name: c, mb: +(db[c].stats().storageSize/1048576).toFixed(1) }))
.sort((a, b) => b.mb - a.mb)
.slice(0, 10)storageSize é o tamanho comprimido em disco. O custo de stats() é baixo mesmo em coleções grandes.
Redis
redis-cli --bigkeys
# To rank by memory (bytes): redis-cli --memkeysAmbos varrem todo o keyspace com SCAN (não bloqueiam o servidor, mas adicionam carga); a diferença é a métrica: --bigkeys informa as maiores chaves por contagem de elementos/comprimento em cada tipo, --memkeys pelo consumo de memória via MEMORY USAGE. Para uma única chave, use MEMORY USAGE <key>.