有什么方法可以找出数据库表的大小吗?
我的 sql 2008 服务器中有大约 10 个表。
目前,我的 mdf 约为 3.5Gig。 (我在一些表中还有一些二进制数据)。 所以,我想知道是否有办法可以看到哪些桌子的尺寸最大。
这可能吗?
也许它是索引或 FTS 目录?
i've got around 10 tables in my sql 2008 server.
Currently, my mdf is around 3.5Gig. (I also have some binary data in some of the tables). So, I'm wondering if there's a way i could see which tables are the biggest in size.
Is this possible?
Maybe it's an index or FTS catalog instead?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
运行此:
采取来自 Robert Caine 博客
编辑了要解析的代码,单引号中的几个字符使用了特殊的单引号,以及 - 符号。
此代码适用于 Microsoft SQL 2005+
run this:
taken from Robert Caine blog
Edited the code to parse, several chars that were in single quote used a special single quote, as well the -- sign.
This code is for Microsoft SQL 2005+
sys.allocations_units 包含您需要的信息。 您可以使用 sys.partitions 将分区的所有分配单元分组在一起并且还获得更有用的object_id而不是深奥的allocation_unit_id。
是的,所有表(堆或集群)都是“分区”,该术语并不指分区表。 sys.partitions 还具有您可能感兴趣的“行”列。
sys.allocations_units has the information you need. You join with sys.partitions to group all allocation units of a partition together and also to obtain the more usable object_id rather than the esoteric allocation_unit_id.
And yes, all tables (heap or clustered) are '
partitions
', the terms does not refer to partitioned tables. sys.partitions also has the 'rows' column that may interest you.在 SQL 2008+ 中:右键单击 SSMS 中的数据库名称,选择
报告
,然后选择标准报告
,然后按表列出的磁盘使用情况
。In SQL 2008+: right-click on the DB name in SSMS, select
Reports
, thenStandard Reports
, thenDisk Usage by Table
.此查询显示当前数据库中每个表的大小。
This query shows the size of each table in the current database.
有时我运行这个...它将所有表获取到临时表,循环它并获取所有表的大小。 结果数据在@tablesizes中,所以你可以按照你喜欢的方式查询它。
适用于 Sql Server >2005
Sometimes I run this... It gets all tables to temp table, loops it through and gets sizes for all tables. Result data is in @tablesizes, so you can query it how you like.
Works in Sql Server >2005
你可以使用:
You could use: