服务器虚拟化可帮助你降低 IT 资本和运营成本,并通过改进的应用程序预配、维护、可用性和备份/恢复过程提高 IT 效率。 随着最近的技术进步,复杂的数据库工作负荷可以使用虚拟化更容易地合并。 本主题介绍在虚拟化环境中使用 SQL Server In-Memory OLTP 的最佳做法。
内存预分配
对于虚拟化环境中的内存,更好的性能和增强的支持是一个重要注意事项。 必须能够根据虚拟机的要求(峰值和非高峰负载)快速将内存分配给虚拟机,并确保内存不会浪费。 Hyper-V 动态内存功能提高了在主机上运行的虚拟机之间分配和管理内存的方式的灵活性。
使用内存优化表虚拟化数据库时,需要修改一些虚拟化和管理 SQL Server 的最佳做法。 如果没有内存优化表,最佳做法有两种:
如果使用MIN_SERVER_MEMORY,最好只分配所需的内存量,以便为其他进程保留足够的内存(从而避免分页)。
不要设置内存预分配值过高。 否则,其他进程在需要内存时可能无法获得足够的内存,这可能会导致内存分页。
如果你按照上面所述针对内存优化表的数据库的实践操作,那么即使有足够的内存来恢复数据库,尝试还原和恢复数据库可能仍会导致数据库处于“等待恢复”状态。 原因是,启动时,In-Memory OLTP 将数据更积极地加载到内存中,而不是像动态内存分配那样将内存分配给数据库。
解决方案
若要缓解此问题,请预先为数据库分配足够的内存以恢复或重启数据库,而不是依赖动态内存来在需要时提供额外内存的最小值。