AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 237227
Accepted
kevinnwhat
kevinnwhat
Asked: 2019-05-03 07:46:18 +0800 CST2019-05-03 07:46:18 +0800 CST 2019-05-03 07:46:18 +0800 CST

目标/总内存高于 max_server_memory

  • 772

我max_server_memory在生产 SQL Server 上将设置配置为 141 GB,目标/总服务器内存为 144 GB。

我认为max_server_memory代表了我愿意让 SQL Server 引擎使用多少内存,如果是这样,为什么它使用的不止于此?

运行 SQL Server 2012 SP3,安装了 160 GB 内存的物理机,盒子上没有运行其他实例,但我们也在运行 Integration Services。

我们有 75 个用户数据库,总大小为 928 GB。我不确定是否正在使用 columnstore,或者我该如何检查。这是一个供应商应用程序。

现在目标内存 = 144,384,008,总内存 = 144,378,261。

该实例自昨晚 2019-05-01 22:20:21.097 EST 以来一直在运行。我们进行了一些基础设施维护,需要停止实例。然而,我已经注意到很长一段时间了,总/目标总是在 144,而最大值总是设置为 141。周一至周五主要工作时间的 PLE 平均约为 0.5 到 1 小时,有时会跳到 2 小时.

sql-server sql-server-2012
  • 2 2 个回答
  • 837 Views

2 个回答

  • Voted
  1. Best Answer
    Joe Obbish
    2019-05-03T08:05:31+08:002019-05-03T08:05:31+08:00

    max server memory 设置并不代表你愿意让SQL 引擎使用多少内存。来自内存管理架构指南:

    从 SQL Server 2012 (11.x) 开始,SQL Server 分配的内存可能多于最大服务器内存设置中指定的值。当总服务器内存 (KB) 值已经达到目标服务器内存 (KB) 设置(由最大服务器内存指定)时,可能会发生此行为。如果由于内存碎片导致连续空闲内存不足以满足多页内存请求(大于8 KB)的需求,SQL Server 可以执行过度承诺而不是拒绝内存请求。

    一旦执行此分配,资源监视器后台任务就会开始向所有内存使用者发出信号以释放分配的内存,并尝试使总服务器内存 (KB) 值低于目标服务器内存 (KB) 规范。因此,SQL Server 内存使用量可能会短暂超过最大服务器内存设置。在这种情况下,总服务器内存 (KB) 性能计数器读数将超过最大服务器内存和目标服务器内存 (KB) 设置。

    在以下操作期间通常会观察到此行为:

    • 大型列存储索引查询。

    • 列存储索引(重新)构建,它使用大量内存来执行哈希和排序操作。

    • 需要大内存缓冲区的备份操作。

    • 必须存储大量输入参数的跟踪操作。

    • 6
  2. Shanky
    2019-05-03T23:27:14+08:002019-05-03T23:27:14+08:00

    您是否转换了以 GB 为单位的总内存和目标服务器内存,以查看以 GB 为单位的实际值是多少。由于您将它与设置为 141 GB 的最大服务器内存进行比较,因此您必须转换以 GB 为单位的值以查看它们是否真的大于最大服务器内存。

    如果您将总内存和目标服务器内存都转换为 GB,它会

    Total Server memory= 144,378,261 KB which comes to ((144378261/1024)/1024)= 137.69 GB
    Target Server Memory= 144,384,008 KB which comes to (144,384,008/1024)/1024)=137.68 GB
    

    在这两种情况下,总内存和目标服务器内存都小于最大服务器内存。我同意乔引用的内容并进一步补充

    Max server memory 控制 SQL Server 内存分配,包括缓冲池、编译内存、所有缓存、qe 内存授权、锁管理器内存和 CLR 内存(基本上是 dm_os_memory_clerks 中的任何“职员”)。线程堆栈、堆、SQL Server 以外的链接服务器提供程序的内存,或“非 SQL Server”DLL 分配的任何内存不受最大服务器内存控制。

    因此,总的 SQL Server 内存消耗可能会超出最大服务器内存中设置的限制。

    有两件事

    1. SQL Server 使用的物理内存
    2. SQL Server 使用的总内存(物理 RAM + 页面文件)。

    要获得上面,你只需要在下面运行

    select 
    (physical_memory_in_use_kb/1024) total_physical_mem_in_MB
    (virtual_address_space_committed_kb/1024) Total_mem_in_mb_RAMAndPagefile
    from sys.dm_os_process_memory
    
    • 1

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve