Jef*_*ane 13 sql-server-2008 sql-server sql-server-2008-r2
我有一个大约 15 个演出的 SQL Server 数据库(2008 R2 SP1)。结果发现维护已经有一段时间没有运行了,所以我创建了一个维护计划来重建所有索引,它们非常分散。
工作完成,碎片消失了,但现在数据库超过 120 个演出!我知道它会使用额外的空间来进行所有重建,但是现在工作已经完成,我认为所有空间都将是可用空间,但可用空间仅显示为 3 个演出,因此正在使用 117 个演出即使索引重建作业已完成。
我很困惑,可以使用一些指导,我让数据库恢复到合理的大小,我们没有磁盘空间。
提前致谢!
这是发布的两个查询的结果:
log_reuse_wait_desc 什么都没有
name TotalSpaceInMB UsedSpaceInMB FreeSpaceInMB
LIVE_Data 152 123 28
LIVE_Log 18939 89 18849
LIVE_1_Data 114977 111289 3688
Run Code Online (Sandbox Code Playgroud)
第三个文件是 .ndf 文件,该文件在未使用空间中仅显示 3688,但 111289 用于大约 15 演出数据。
Jef*_*ane 15
与此同时,我刚刚想通了这一点,全脑打嗝。我已经指出我认为在重建作业中填充因子为 90,但它的措辞是“将可用空间百分比更改为”,因此通过在其中使用 90 的值,我实际上使用了 10 的填充因子!!卫生部。难怪它增长了 10 倍。我将使用正确的填充因子重建然后收缩。感谢大家的投入。
您应该使用重建选项SORT_IN_TEMPDB=ON。
在您的情况下,相关表所在的实际数据文件已用于对索引进行排序。120GB 空间中的大部分尚未使用,将在需要时填充页面数据。
您可以使用此查询查看已用/可用空间状态(取自此处):
use [YourDatabaseNameHere]
go
select
name,
cast((size/128.0) as int) as TotalSpaceInMB,
cast((cast(fileproperty(name, 'SpaceUsed') as int)/128.0) as int) as UsedSpaceInMB,
cast((size/128.0 - cast(fileproperty(name, 'SpaceUsed') AS int)/128.0) as int) as FreeSpaceInMB
from
sys.database_files
Run Code Online (Sandbox Code Playgroud)
对于收缩特定数据库文件(数据或日志),您可以在此处查看一些信息。在此之前警告,对于 100+ Gb 的数据库来说,释放未使用的空间需要相当长的时间(也取决于存储速度),所以就让它运行吧。
| 归档时间: |
|
| 查看次数: |
8454 次 |
| 最近记录: |