如何查詢Table占用空間的大小
Oracle和DB2都支持分區表,但是我們得知道什么樣的表適合使用分區表技術,Oracle的官方建議是超過2G的Table就要使用分區表。下面來總結一下,各DB中如何獲得這些大小信息:
Oracle 10G中:
查詢出當前用戶的表所占用的空間大小,并按大小進行降序排列:
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name order by Sum(bytes)/1024/1024 desc
查詢出系統表空間的大小,并按大小進行降序排列(需要SYSDBA的權限):
Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name order by Sum(bytes)/1024/1024 desc
這個在OEMC中也可以看,但是如果沒有裝的話,SQL語句還是比較方便的。
DB2中:
查看某個Table的大小可以在控制中心中用圖形界面查看。
DB2中有兩種方式去查看:
一.查看表的使用頁數,平均每頁行數,平均行大小(需要對表做runstats才獲得準確的數據)
SELECT SUBSTR(a.tabname,1,10) AS table, PAGESIZE, b.CARD, b.npages ,
CASE WHEN (b.NPAGES > 0) THEN (b.CARD / b.NPAGES) ELSE -1 END AS ROWS_PER_PAGE,
SUM(AVGCOLLEN) AVG_ROW_SIZE FROM SYSCAT.COLUMNS a, SYSCAT.TABLES b, SYSCAT.TABLESPACES c
WHERE a.tabschema = b.tabschema AND a.tabname = b.tabname AND b.tbspaceid = c.tbspaceid
AND a.tabname = 'tabname' GROUP BY a.tabschema, a.tabname, pagesize, card, npages
二.查看表的大小(獲得的數據準確,但查詢語句執行很慢,需要去掃描物理表)
SELECT SUBSTR(TABSCHEMA,1,18) TABSCHEMA,
SUBSTR(TABNAME,1,30) TABNAME,
SUM(DATA_OBJECT_P_SIZE) DATA_OBJECT_P_SIZE,
SUM(INDEX_OBJECT_P_SIZE) INDEX_OBJECT_P_SIZE,
SUM(LONG_OBJECT_P_SIZE) LONG_OBJECT_P_SIZE,
SUM(LOB_OBJECT_L_SIZE) LOB_OBJECT_L_SIZE,
SUM(LOB_OBJECT_P_SIZE) LOB_OBJECT_P_SIZE,
SUM(XML_OBJECT_P_SIZE) XML_OBJECT_P_SIZE
FROM SYSIBMADM.ADMINTABINFO
WHERE TABSCHEMA='TABSCHNAME' and TABNAME='TABNAME'
GROUP BY TABSCHEMA, TABNAME;
統計業務表數據量
Select tabschema,tabname,sum(data_object_p_size),sum(index_object_p_size),sum(xml_object_p_size) from sysibmadm.admintabinfo
where tabschema='模式A' and tabname like '%表名%'
group by tabschema,tabname
order by tabname
SQL Server中:
執行統計并查看指定表名的表大小:
exec sp_spaceused '表名', true;
posted on 2014-02-07 17:53 順其自然EVO 閱讀(421) 評論(0) 編輯 收藏 所屬分類: db2