我们在 Windows Server 2003 Enterprise 32 位上运行 SQL Server 2005 SP3 Enterprise 32 位,该版本具有 32GB RAM 和 8 个双核处理器。我们的 CPU、RAM 和 I/O 总是超负荷,应用程序总是运行缓慢。我们使用 AWE 作为缓冲区缓存,最大内存为 28GB,PAGEIOLATCH_SH 始终很高,过程缓存始终在 700mB 左右。在生产时间内,我们有超过 6000 个与 SQL Server 的连接(500 个用户)。这里出了什么问题?请帮忙。谢谢。
答案1
我马上告诉你一个错误:32 位。这是死路一条。AWE 只能提供这么多帮助。放弃它,转向 64 位。
尽管如此,32 GB 和 AWE 应该可以提供足够的缓冲池。您的数据库有多大?比 32GB 大很多吗?为什么它大部分都没有缓存,您为什么看到PAGEIOLATCH_SH
?这意味着服务器正在从磁盘中提取大量数据,并且使用 28GB 的缓冲池,如此大量的读取表明您的数据库确实非常庞大,您只需要更大的硬件(我怀疑),或者您的查询和索引匹配太差,以至于您被迫不断地读取端到端的大表(我很确定)。粗略浏览一下sys.dm_query_exec_stats
将揭示问题查询(大total_logical_reads
查询表示大扫描,因此需要大读取和缓存破坏)。同样sys.dm_db_index_usage_stats
将显示问题行集。如果这对你来说完全是天方夜谭,那么尝试使用SQL Server 2005 性能仪表板报告。
答案2
检查性能数据、执行计划、隔离级别、锁定类型、磁盘性能、索引等。如果您更详细地告诉我技术架构/环境,我将更容易更具体地提出建议。