上一篇
场景引入:
某天,DBA老王发现SQL Server 2000的数据库突然变卡了,硬盘空间报警📢,老板甩来灵魂拷问:"到底是哪个表在疯狂吃空间?" 别慌!今天手把手教你用几种简单方法揪出"空间杀手"表~
sp_spaceused
(最快捷)-- 查看单个表大小(含索引) EXEC sp_spaceused '表名' -- 查看所有表大小(需手动遍历) EXEC sp_MSforeachtable 'EXEC sp_spaceused [?]'
输出示例:
name rows reserved data index_size unused
------- ------ -------- -------- ---------- ------
Orders 15000 1024 KB 800 KB 200 KB 24 KB
小贴士:
reserved
=总占用空间 data
=纯数据大小 DBCC UPDATEUSAGE(0)
更新统计更准确✨ SELECT t.name AS 表名, p.rows AS 行数, SUM(a.total_pages) * 8 AS 总空间_KB, SUM(a.used_pages) * 8 AS 已用空间_KB FROM sys.tables t INNER JOIN sys.partitions p ON t.object_id = p.object_id INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id GROUP BY t.name, p.rows ORDER BY 总空间_KB DESC
优势:
✅ 一次性列出所有表大小排行
✅ 精确到KB单位
-- 显示所有对象的空间使用详情 DBCC SHOWFILESTATS DBCC UPDATEUSAGE(0) WITH COUNT_ROWS, NO_INFOMSGS
注意:
⚠️ 需要SA权限
⚠️ 结果较原始,适合技术排查
EXEC sp_helpdb '数据库名' -- 查看数据库总大小
DBCC CLEANTABLE
或重建索引 方法 | 适用场景 | 精度 |
---|---|---|
sp_spaceused |
快速单表检查 | 中等 |
系统表联合查询 | 批量分析/排行榜 | 高 |
DBCC命令 | 底层技术分析 | 最高 |
下次再遇到"数据库变胖了"的问题,掏出这几招,5分钟定位问题表!🚀
(注:本文方法基于SQL Server 2000环境验证,新版本有更丰富的DMV视图可用)
本文由 宾向露 于2025-07-27发表在【云服务器提供商】,文中图片由(宾向露)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/456450.html
发表评论