我目前有一个大小为 20GB 的数据库。
我已经运行了一些脚本来显示每个表的大小(以及其他非常有用的信息,例如索引内容),最大的表是 110 万条记录,占用了 150MB 的数据。我们有不到 50 个表,其中大部分占用的数据不到 1MB。
查看每个表的大小后,我不明白为什么收缩后数据库的大小不应为 1GB。 SqlServer (2005) 报告的可用可用空间量为 0%。日志模式设置为简单。在这一点上,我主要担心的是我觉得我有 19GB 的未使用空间。还有什么我应该看的吗?
通常我不会在意,而是将其作为被动研究项目,除非这种特殊情况要求我们每周进行一次备份和恢复以将副本放在卫星上(没有互联网,因此必须手动完成) )。我更愿意每周复制 1GB(或者即使降到 5GB!)而不是 20GB 的数据。
sp_spaceused 报告以下内容:
Navigator-Production 19184.56 MB 3.02 MB
它的第二部分:
19640872 KB 19512112 KB 108184 KB 20576 KB
虽然我发现了一些其他脚本(例如这里的两个服务器数据库大小问题中的一个,它们都报告了在上面或下面找到的相同信息)。
我使用的脚本来自 SqlTeam。这是标题信息:
* BigTables.sql
* Bill Graziano (SQLTeam.com)
* graz@<email removed>
* v1.11
前几个表显示了这一点(表、行、保留空间、数据、索引、未使用等):
Activity 1143639 131 MB 89 MB 41768 KB 1648 KB 46% 1%
EventAttendance 883261 90 MB 58 MB 32264 KB 328 KB 54% 0%
Person 113437 31 MB 15 MB 15752 KB 912 KB 103% 3%
HouseholdMember 113443 12 MB 6 MB 5224 KB 432 KB 82% 4%
PostalAddress 48870 8 MB 6 MB 2200 KB 280 KB 36% 3%
其余表的大小相同或更小。不超过50 table 。
更新 1:
- 所有表都使用唯一标识符。通常一个 int 每行增加 1。
更新 2:
事件 1143639 134488 KB 91072 KB 41768 KB 1648 KB
DBCC 更新使用(0);
更新 3:
图片 111975 2407773 19262184
看起来好像图像表认为它是 19GB 部分。
虽然我不明白这是什么意思。
它真的是 19GB 还是误传?
更新 4:
常规脚本显示 Image 表的大小为 6MB。
更新 5:
最佳答案
试试这个查询:
SELECT object_name(object_id) AS name, rows, total_pages,
total_pages * 8192 / 1024 as [Size(Kb)]
FROM sys.partitions p
INNER JOIN sys.allocation_units a
ON p.partition_id = a.container_id
关于sql-server - 未考虑数据库大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/358687/