Mar*_*nry 5 sql-server maintenance memory sql-server-2014 buffer-pool
有没有办法保留缓冲池缓存,以便可以在重新启动后加载?我的研究表明其他数据库服务器可以做到这一点,但 SQL Server 不是其中之一。我正在寻找在维护重启后最大化服务器性能的方法。
不,没有办法恢复缓冲池。有些人会建议通过从所有表中选择所有行来预先填充它,但考虑到系统使用所有表中的所有行是多么罕见,这只是愚蠢的(除其他原因外,它不会执行此类操作去做)。
我什至不确定这在概念上是否有意义。这里的实际收益是多少?节省将这些数据页从磁盘读入内存所需的时间?如果缓冲池中的页面被保存到要在启动时重新加载的文件中,那么将这些数据页面加载到缓冲池中仍然需要相同(或几乎相同)的时间,只是来自不同的文件。或者,也许您不想要应用程序页面'初始反映必须加载数据页的响应时间?您的系统加载页面需要多长时间?一个人为那个特定的结果集多等待 1 秒(因为在那之后,这些页面在内存中用于后续查询,对吗?)几乎不会引起注意,当后续页面加载花费的时间更少时,他们也不会记住这一点。但是如果这是一个基于Web的应用程序,那么是否可以说任何滞后都是DB的问题而不是应用程序服务器或客户端计算机和应用程序服务器之间的某些路由段的问题?
不要担心数据页面的初始加载时间。任何改进初始加载时间的领域都将在更好的数据建模和索引结构中(即确保从磁盘读取页面尽可能高效)。相反,请担心数据加载后重复请求会拖累性能的区域。
此外,谁说您需要缓冲池中的所有页面?最近执行了多少临时支持查询,这些查询仍在缓存中,并且可能在 6 个月左右的时间里不会再次被查看?只需让 SQL Server 负责管理缓存,因为当用户在重新启动后开始访问系统时加载的页面必然是应该在那里的页面。
此外,鉴于 SQL Server 可以随时从缓存中驱逐页面(如果感觉其他项目需要更多内存),那么您可能会加载一堆稍后被驱逐的页面。
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |