我使用 sql server 2019 并在我的数据库中启用了跟踪标志 1117(平等地增长文件组中的所有文件)。我需要根据我的系统资源考虑主文件组的正确数据文件数量。为此,我需要使用性能监控软件检查此操作。但我不知道应该使用哪些计数器(例如每秒写入磁盘)
第一次测试:
CREATE DATABASE TestIO
ON PRIMARY
( NAME = N'PRIMARY1', FILENAME = N'D:\DB\Temp\TestIO_PRIMARY1.mdf',FILEGROWTH=512GB,MAXSIZE=UNLIMITED,SIZE=2GB),
FILEGROUP FG2
( NAME = N'secondary', FILENAME = N'D:\DB\Temp\TestIO_secondary.ndf',FILEGROWTH=512GB,MAXSIZE=UNLIMITED,SIZE=2GB)
LOG ON
( NAME = N'TestIO_log', FILENAME = N'D:\DB\Temp\TEST_log.ldf' ,FILEGROWTH=2GB,MAXSIZE=2TB,SIZE=2GB)
GO
第二次测试:
USE master
GO
DROP DATABASE IF EXISTS TestIO
CREATE DATABASE TestIO
ON PRIMARY
( NAME = N'PRIMARY1', FILENAME = N'D:\DB\Temp\TestIO_PRIMARY1.mdf',FILEGROWTH=512GB,MAXSIZE=UNLIMITED,SIZE=2GB),
( NAME = N'PRIMARY2', FILENAME = N'D:\DB\Temp\TestIO_PRIMARY2.mdf',FILEGROWTH=512GB,MAXSIZE=UNLIMITED,SIZE=2GB),
( NAME = N'PRIMARY3', FILENAME = N'D:\DB\Temp\TestIO_PRIMARY3.mdf',FILEGROWTH=512GB,MAXSIZE=UNLIMITED,SIZE=2GB),
( NAME = N'PRIMARY4', FILENAME = N'D:\DB\Temp\TestIO_PRIMARY4.mdf',FILEGROWTH=512GB,MAXSIZE=UNLIMITED,SIZE=2GB),
FILEGROUP FG2
( NAME = N'secondary', FILENAME = N'D:\DB\Temp\TestIO_secondary.ndf',FILEGROWTH=512GB,MAXSIZE=UNLIMITED,SIZE=2GB)
LOG ON
( NAME = N'TestIO_log', FILENAME = N'D:\DB\Temp\TEST_log.ldf' ,FILEGROWTH=2GB,MAXSIZE=2TB,SIZE=2GB)
GO
1. 在同一个磁盘上的多个文件中拆分一个文件组对性能没有好处。
TempDb 不是这种情况,但原因是特定于支持高频创建和删除表。请参阅减少 SQL Server tempdb 数据库中分配争用的建议。
通常,跨多个文件拆分时 IO 不会更快,因此没有“最佳实践”为 TempDb 以外的数据库使用多个文件。
使用 2、4 或 6 个文件创建文件组并不是一个坏习惯,尤其是在您的数据库很大的情况下。但好处不是性能:它是在具有不同驱动器配置的服务器上恢复的能力,或者最终将数据库文件拆分到磁盘上。
如果跨越多个或同一个驱动器,您可以使用我通常在尝试测量文件级别的整体延迟时使用的方法。您将在 FirstResponderKit sp_BlitzFirst下找到它。如文档中所述,它查看 Perfmon 计数器以了解 CPU 使用、驱动器响应时间慢或页面预期寿命低
如果需要,请尝试使用一些参数来获取额外的数据:-
此外,您可以通过将数据记录到表格中来收集历史数据,以便随着时间的推移进行更准确的分析。同样,它会比您从 perfmon 柜台要求的更多,但您始终可以根据需要对其进行定制。