【问题标题】:Table size calculation and optimization表大小计算和优化
【发布时间】:2015-09-30 02:24:45
【问题描述】:

我有一个包含以下列数据类型的表格:

(BIGINT,NOTNULL)   X 5 
(TINYINT,NOTNULL)  X 2 
(DATETIME,NOTNULL) X 1

该表有大约 300M 的记录,使用了将近 180GB 的磁盘空间。

EXEC sp_spaceused N'my_table';

返回这个结果:

rows        reserved        data            index_size      unused
278475702   123318224 KB    24262784 KB     98972504 KB     82936 KB

但我认为配置或设计有问题。如何判断这个磁盘使用是对还是错?

有没有办法优化这张表的磁盘使用率?

【问题讨论】:

  • 是否有唯一索引/主键?哪种类型?
  • @Shnugo 是的,两者都存在。

标签: sql-server database-design sql-server-2012


【解决方案1】:

有一些不错的报告可用于更轻松地分析磁盘使用情况,但这不会减少:http://blog.sqlauthority.com/2014/08/01/sql-server-ssms-disk-usage-report/

如果数据库曾经变大并且您删除了很多数据,您可以使用DBCC SHRINKFILE 函数来减小大小。鉴于您预留了 123GB,我认为这对您有很大帮助。

此外,完全重建索​​引也有很大帮助。

  • 删除所有非聚集索引并在之后重新创建它们
  • 重新索引聚集索引(如果有的话)
  • 如果您没有聚集索引,请创建它(并在之后选择删除它)。这会重新组织您的表格并释放行间使用的空间。

【讨论】:

    猜你喜欢
    • 2012-07-26
    • 2016-01-24
    • 2011-03-18
    • 2023-03-22
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2020-05-29
    • 2013-04-25
    相关资源
    最近更新 更多