数据库计算每个表所占空间和记录数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库计算每个表所占空间和记录数相关的知识,希望对你有一定的参考价值。

sql server

 1 USE database_20160215
 2 GO
 3 
 4 SELECT
 5 TableName = obj.name,
 6 TotalRows = prt.rows,
 7 [SpaceUsed(KB)] = SUM(alloc.used_pages)*8
 8 FROM sys.objects obj
 9 JOIN sys.indexes idx on obj.object_id = idx.object_id
10 JOIN sys.partitions prt on obj.object_id = prt.object_id
11 JOIN sys.allocation_units alloc on alloc.container_id = prt.partition_id
12 WHERE
13 obj.type = U AND idx.index_id IN (0, 1)
14 GROUP BY obj.name, prt.rows
15 ORDER BY TableName

 

mysql

/*这里面的单位是Byte*/
SELECT
    TABLE_NAME,
    DATA_LENGTH,
    INDEX_LENGTH,
    DATA_LENGTH + INDEX_LENGTH,
    TABLE_ROWS
FROM
    information_schema. TABLES
WHERE
    TABLE_SCHEMA = ‘database_20160215;

 

Oracle

/*查某一用户下的表*/
select SEGMENT_NAME, TABLESPACE_NAME, sum(BYTES) ||  Bytes
  from USER_extents
 where SEGMENT_TYPE = TABLE
 group by SEGMENT_NAME,
          TABLESPACE_NAME

/*查所有的表*/
select SEGMENT_NAME, TABLESPACE_NAME, sum(BYTES) ||  Bytes
  from dba_extents
 where SEGMENT_TYPE = TABLE
 group by SEGMENT_NAME, TABLESPACE_NAME

 

以上是关于数据库计算每个表所占空间和记录数的主要内容,如果未能解决你的问题,请参考以下文章

mysql查看每个数据库所占磁盘大小

C语言中如何计算一个数组占内存多少空间?

查看mysql数据库和表所占用空间

C语言中如何计算一个数组占内存多少空间

C语言数组占空间多

Oracle 常用脚本整理