variable Asked: 2022-03-09 20:25:55 +0800 CST2022-03-09 20:25:55 +0800 CST 2022-03-09 20:25:55 +0800 CST 最大 SQL Server 内存配置限制是多少? 772 假设我将 SQL Server 内存限制为 100 GB。 这是否仅将缓冲区限制为 100 GB,或者它是否还限制了查询内存授予? sql-server memory 1 个回答 Voted Best Answer Paul White 2022-03-10T00:11:40+08:002022-03-10T00:11:40+08:00 在 SQL Server 2012 及更高版本上,max server memory几乎限制了 SQL Server 提交的所有内存。缓冲池只是一个缓存,它与其他缓存(如内存授予和计划缓存)竞争该限制内的内存。 如果设置max server memory为 100GB,则会限制所有潜在消费者可用的总内存。所以,不,这不仅仅是对缓冲池的限制,它会更普遍地限制内存使用。 然而,没有什么是简单的。如果多页分配需要当前不可用的连续内存, SQL Server 可能会在max server memory短时间内超出限制(过度使用)。 在以下操作期间通常会观察到此行为: 大型列存储索引查询。 行存储查询的大批量模式。 列存储索引(重新)构建,它使用大量内存来执行哈希和排序操作。 需要大内存缓冲区的备份操作。 跟踪必须存储大量输入参数的操作。 请参阅文档中的内存管理架构指南和服务器内存配置选项。后者包含以下建议: 使用max_server_memory来保证操作系统不会遇到有害的内存压力。要设置最大服务器内存配置,请监视 SQL Server 进程的总体消耗以确定内存要求。对于初始配置或没有机会随时间收集 SQL Server 进程内存使用情况,请使用以下通用最佳实践方法为单个实例配置max_server_memory : 从总 OS 内存中,减去最大服务器内存控制之外的潜在 SQL Server 线程内存分配的等价物,它由堆栈大小1 * 计算的最大工作线程2组成。 然后为最大服务器内存控制之外的其他内存分配减去 25% ,例如备份缓冲区、扩展存储过程 DLL、使用自动化过程(sp_OA 调用)创建的对象以及来自链接服务器提供程序的分配。这是一个通用的近似值,里程可能会有所不同。 剩下的应该是单个实例设置的 max_server_memory 设置。 1有关每个架构的线程堆栈大小的信息,请参阅内存管理架构指南。 2请参阅有关如何配置最大工作线程服务器配置选项的文档页面,了解有关为当前主机中给定数量的关联 CPU 计算的默认工作线程的信息。
在 SQL Server 2012 及更高版本上,
max server memory
几乎限制了 SQL Server 提交的所有内存。缓冲池只是一个缓存,它与其他缓存(如内存授予和计划缓存)竞争该限制内的内存。如果设置
max server memory
为 100GB,则会限制所有潜在消费者可用的总内存。所以,不,这不仅仅是对缓冲池的限制,它会更普遍地限制内存使用。然而,没有什么是简单的。如果多页分配需要当前不可用的连续内存, SQL Server 可能会在
max server memory
短时间内超出限制(过度使用)。请参阅文档中的内存管理架构指南和服务器内存配置选项。后者包含以下建议: