添加和平衡数据文件 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

添加和平衡数据文件

随附的 SQL Server 数据库通常 EnterpriseOne 可以从其他文件中受益。其他文件可在存储和处理器内核之间实现最佳平衡。平衡文件是一个多步骤过程。其中许多步骤都需要对数据库对象的独占访问权限,因此您必须让其他系统脱机访问数据库。 EnterpriseOne

完成文件大小计算

要找到合适数据库文件的大小,首先使用以下查询检查当前 ROW 数据的大小。

USE JDE_PRIST920 SELECT SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0) AS SpaceUsedMB FROM sys.database_files WHERE type IN (0,1) AND type_desc = 'ROWS'

然后完成以下计算并填写您的值一列:

名称 示例 您的值 描述
1 该行的当前大小 1TB 上次查询的结果。
2 计划的增长 20% 未来几个月的预期增长,包括安全裕度。
3 所需大小 1.2TB 第 1 行乘以第 2 行。
4 文件数量 8 目标文件数。
5 每个文件的大小 150GB 第 3 行除以第 4 行。
6 自动生长百分比 10% 自动增长的大小。为了最大限度地减少碎片化,10% 是一个不错的目标。
7 自动生长大小 15 GB 第 5 行乘以第 6 行。

创建新的文件

使用以下脚本作为模板向数据库添加文件。修改以下参数:

  • 改变您要向其添加文件的数据库名称的 JDE-PRIST920

  • 对于 NAME,请指定要添加的每个文件的逻辑名称。

  • 对于 FILENAME,请指定要添加的每个文件的实体名称。

  • 对于 FILEGROWTH,请使用您在上表第 7 行中计算的值。

  • 对于 SIZE,请指定上表第 5 行中的值。

USE master; GO ALTER DATABASE JDE_PRIST920 MODIFY FILE (NAME = JDE_PRIST920_Data, FILEGROWTH = 15GB); GO ALTER DATABASE JDE_PRIST920 ADD FILE (NAME = JDE_PRIST920_Data2, FILENAME = 'M:\DATA\PRIST920_Data2.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_Data3, FILENAME = 'M:\DATA\PRIST920_Data3.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_Data4, FILENAME = 'M:\DATA\PRIST920_Data4.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_Data5, FILENAME = 'M:\DATA\PRIST920_Data5.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_Data6, FILENAME = 'M:\DATA\PRIST920_Data6.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_Data7, FILENAME = 'M:\DATA\PRIST920_Data7.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_Data8, FILENAME = 'M:\DATA\PRIST920_Data8.ndf', SIZE=150GB, FILEGROWTH = 15GB), (NAME = JDE_PRIST920_TEMP, FILENAME = 'M:\DATA\PRIST920_TEMP.ndf', SIZE=150GB, FILEGROWTH = 15GB) GO

暂时清空 MDF 文件

创建文件之后,通过对每个文件运行以下命令将数据从 MDF 迁移到 NDF 文件。调整文件名以反映数据库中的文件名。

USE JDE_PRIST920 DBCC SHRINKFILE (JDE_PRIST920_Data, EMPTYFILE)

EMPTYFILE 命令会生成错误,因为某些内容无法移动到 NDF 文件。您可以忽略该错误消息。

清空 MDF 文件时出现错误消息

调整 MDF 文件的大小

要将 MDF 文件的大小减至目标大小,请运行以下命令。调整文件大小以反映表格中计算结果第 5 行的值。

JDE_PRIST920 DBCC SHRINKFILE (JDE_PRIST920_Data, 150000);

SHRINKFILE 命令偶尔也会失败,因为放置了无法移动到 NDF 文件的内容。在这种情况下,您可能需要运行 DBCC DBREINDEX 命令,重新运行该进程以清空文件,然后再次尝试 SHRINKFILE 操作。

清理

创建目标文件并且已正确调整 MDF 文件的大小后,使用以下命令将数据从 TEMP 文件迁移回 MDF 文件。调整文件名以反映数据库中的文件名。

DBCC SHRINKFILE (JDE_PRIST920_TEMP, EMPTYFILE)

当文件为空时,请使用以下命令将其删除:

ALTER DATABASE JDE_PRIST920; REMOVE FILE JDE_PRIST920_TEMP;

验证结果

要查看平衡后数据库当前磁盘空间利用率,请运行以下脚本。

USE JDE_PRIST920 SELECT DB_NAME() AS DbName, type_desc, CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0 AS SpaceUsedMB FROM sys.database_files WHERE type IN (0,1) AND type_desc = 'ROWS'; SELECT SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS INT)/128.0) AS TotalSpaceUsedMB FROM sys.database_files WHERE type IN (0,1) AND type_desc = 'ROWS'

该输出值应该类似于以下内容。这些文件很少会完美平衡,因为有些内容只能存在于 MDF 文件中。

平衡后验证磁盘空间利用率