gpt4 book ai didi

sql-server - SQL 服务器 : Simulate Long I/O in SQL Server

转载 作者:行者123 更新时间:2023-12-03 17:28:19 25 4
gpt4 key购买 nike

我在 SQL Server 的错误日志中阅读了有关 I/O 延迟和错误消息 833 的信息。我如何模拟一个长 I/O 场景,以便我可以在日志中得到这个错误消息。有人可以帮忙吗?

最佳答案

如果您的 I/O 子系统大小合适,您可能会发现仅使用 T-SQL 很难在 SQL 错误日志中获取 833 错误消息。但是,如果您使用 SQLIO ( https://www.microsoft.com/en-us/download/details.aspx?id=20163 ) 或 SQLIOSIM(在 SQL 安装介质上)对 I/O 子系统施加压力并同时运行 I/O 密集型查询,则可能会产生错误。

下面是一个用于创建和加载测试表的 T-SQL 脚本,以及一个 I/O 密集型查询。如果需要,在不同的 SSMS 窗口中运行 SELECT 循环的多个实例。

--create test table
CREATE TABLE dbo.TestTable(
Col1 nchar(4000) NOT NULL
, Col2 nvarchar(MAX) NOT NULL
);

--load 10000 rows (about 2.8GB)
WITH
t4 AS (SELECT n FROM (VALUES(0),(0),(0),(0)) t(n))
,t256 AS (SELECT 0 AS n FROM t4 AS a CROSS JOIN t4 AS b CROSS JOIN t4 AS c CROSS JOIN t4 AS d)
,t16M AS (SELECT ROW_NUMBER() OVER (ORDER BY (a.n)) AS num FROM t256 AS a CROSS JOIN t256 AS b CROSS JOIN t256 AS c)
INSERT INTO dbo.TestTable WITH(TABLOCKX) (Col1, Col2)
SELECT REPLICATE(N'X', 4000), REPLICATE(CAST('X' AS nvarchar(MAX)), 10000)
FROM t16M
WHERE num <= 100000;
GO

--run query in loop (expect parallel execution plan with many read-ahead and LOB page reads)
SET NOCOUNT ON;
DECLARE @RowCount int, @Iteration int = 1;
WHILE @Iteration <= 100
BEGIN
CHECKPOINT;
DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS;
SELECT @RowCount = COUNT(*) FROM dbo.TestTable WHERE Col2 LIKE 'X%';
RAISERROR('Iteration %d completed',0,1,@Iteration) WITH NOWAIT; --display progress message
SET @Iteration += 1;
END;
GO

编辑:我遇到了另一个由 Microsoft 开发的 I/O 测试工具 DiskSpd,并且能够结合上述 T-SQL 脚本在我的测试系统上可靠地产生错误。此开源工具可从 https://gallery.technet.microsoft.com/DiskSpd-a-robust-storage-6cd2f223 免费下载。 . DiskSpd 具有与 SQL 相同的功能,但更易于使用,文档更详细,并且可以选择生成 XML 输出以方便分析。

我用于测试的参数如下。开始测试后30秒内报错,SQL Server数据文件也在D盘。

diskspd.exe" -h -d60 -c1G -F32 -w50 -r -b8K -o1000 -L "D:\DiskSpd.dat"

关于sql-server - SQL 服务器 : Simulate Long I/O in SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28104797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com