我在具有 32 GB RAM 和 8 个 CPU 内核的专用服务器上运行 Windows Server 2012 下的 SQL Server 2012 中的一些存储过程。CPU 使用率始终低于 10%,而 RAM 使用率则为 80%,因为 SQL Server 分配了 20 GB(32 GB)。
有些存储过程有时需要 4 个小时,而其他一些日子,使用几乎相同的数据,需要 7 或 8 个小时。
我正在使用限制最少的隔离级别,所以我认为这不应该是一个锁定问题。数据库大小约为 100 GB,最大的表有大约 500 万条记录。
这些进程有批量插入、更新和删除(在某些情况下,我可以使用 truncate 来避免生成日志并节省一些时间)。我正在一张表中进行一些全文搜索查询。
我可以完全控制服务器,所以我可以更改任何配置参数。
我有几个问题:
- 是否可以使用并行性来提高查询的性能?
- 为什么CPU使用率这么低?
- 配置 SQL Server 的最佳做法是什么?
- 审计服务器的最佳免费工具是什么?我尝试了一个来自 Microsoft 的名为 SQL Server 2012 BPA 的报告,但报告始终是空的,没有任何警告。
编辑:我检查了日志,发现了这个:
2015 年 3 月 18 日 11:09:25,spid26s,未知,SQL Server 遇到 82 次 I/O 请求发生时间超过 15 秒才能完成文件 [C:\Program Files\Microsoft SQL Server\MSSQL11 .HLSQLSERVER\MSSQL\DATA\templog.ldf] 在数据库 [tempdb] (2) 中。操作系统文件句柄为 0x0000000000000BF8。最近的long I/O的偏移量是:0x00000001fe4000