更强大处理器的新服务器,并在其中安装了 Microsoft SQL Server 2014 标准版。除了移动数据库之外,他还迁移了所有 SQL Server 配置。 然而,刚迁移完,就出现了问题。用户开始报告许多查询花费的时间明显更长,并且某些查询甚至在几个小时后也没有完成。这些查询的共同特征是它们执行分析计算并作为报告的基础。因此他们需要处理大量数据库数据。作为问题分析的一部分,检查了许多性能计数器。然而,没有一个明显超过建议值,因此没有解释问题的根源。
对于特定的有问题的查询,我们分析了执行计划并将其与旧版本 SQL Server 中使用的计划进 墨西哥电报数据 行了比较。然而,两个版本的 SQL Server 上的计划质量相同或非常相似。使用 SQL Server 计划时,它在两个版本上执行的 IO 量大致相同。应用程序的迁移导致某些表中的数据量增加,因此较新版本的 SQL Server 上的某些查询会执行更多 IO 操作。但是,这并不是查询从原来的五分钟运行时间延长到几小时的原因。罪魁祸首:缓冲池在分析 SQL Server 查询在处理过程中等待的资源时,我们注意到一个不常见的资源。
这是一种称为 EC 的资源。虽然该资源不是最频繁或最长不可用的资源,它甚至没有显着的平均等待时间,但该标识符被证明是问题的根本原因。为了不再让您感到厌烦,EC 资源指向从缓冲池扩展读取数据。什么是缓冲池扩展 (BPE)? SQL Server 有自己的内存管理。它作为进程分配的内存被分为许多部分,其中按类型存储特定对象。通常,内存的最大部分用于存储表和索引的数据,这些数据用作执行查询的资源,称为缓冲池。这部分内存的大小受 SQL Server 版本的限制。
|