jin*_*ch 3 sql-server sql-server-2014
我有一个棘手的问题,我不知道在哪里可以找到相关信息。
我在数据库服务器上安装了 SQL Server 2014 Enterprise。在这台服务器上存在多个数据库,有些属于我们,有些属于其他公司。
我关心的是缓存。我对 SQL Server 如何使用缓存内存快速检索数据页有基本的了解。你运行一个查询,通常,数据页被加载到缓存中,并且通过可重复的调用,它从中获得结果。
但是......我们的应用程序在我们的客户通常的工作时间被大量使用,但在晚上总是有维护任务在进行。我假设(如果我错了请告诉我)在白天,缓存加载了有用的数据页面,但在晚上由于维护任务而被删除,因此第二天,当客户开始进行交易时,数据页必须首先再次加载到缓存中,这需要时间并减慢很多事情的速度。
那么,我能以某种方式证明这种情况是否发生吗?
如果是,我可以管理吗?例如以某种方式告诉 SQL Server 不加载到缓存中?
我将不胜感激一些讨论这个话题的具体文章。我找不到任何,或者更好地说,我不知道如何命名这个问题。
但是晚上因为维护任务被删除了
我不会说删除更“覆盖”或“驱逐”。维护可能只是将内存用于其他用途。平时问题不大。
所以第二天,当客户进行交易时,数据页必须再次加载到缓存中,这需要时间并减慢很多事情的速度。
如果情况真的如此残酷,那么您要么是边缘情况,要么是硬件问题。
通常,作为维护的一部分,您可以通过在清晨运行一些“维护查询”(例如在早上 0600 将数据重新加载到缓存中)来预置缓存。即您通过查询要加载到缓存中的数据来结束它。问题解决了。
但通常这不会导致极度减速——是的,初始请求会变慢,但这应该会很快修复,因为每个查询都会填满缓存。您所经历的减速是否有可能不是“缓存”而是“早晨高峰”?有很多系统在特定时间(其中一个是人们登录并检查工作的早晨)的负载比白天晚些时候高得多。在这种情况下,您需要扩展硬件来处理这个问题。这将是我第一次将维护视为一个非常重要的问题。