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 / 问题 / 81724
Accepted
RayofCommand
RayofCommand
Asked: 2014-11-04 03:48:20 +0800 CST2014-11-04 03:48:20 +0800 CST 2014-11-04 03:48:20 +0800 CST

在 SQL Server 中保留默认的最大内存 2147483647 MB​​ 值,这是一种不好的做法吗?

  • 772

基于那个msdn页面: 服务器内存设置保持SQL-Servers min和max memory的默认值以保持动态是一个很好的做法......

根据我通过教程学到的知识,您应该始终定义一个最大值,大约是最小值,我没听过太多。我正在使用简单的旧 perfmon 监视我的页面文件,我意识到很少发生磁盘交换,一旦它几乎导致服务器崩溃。

这可能与 SQL Server 中的默认最大内存设置有关吗?数据库大约 150 GB,内存为 48 GB,该机器上没有运行其他应用程序。

另外,为什么你应该有一个最小值?我知道太低的值会阻止 SQL-Server 启动,并且我知道 SQL-Server 将内容保存在内存中,因此不会尝试释放它的缓存。

我正在使用 SQL-Server 2012,提前谢谢你!

sql-server performance
  • 2 2 个回答
  • 21252 Views

2 个回答

  • Voted
  1. Best Answer
    Shanky
    2014-11-04T12:12:24+08:002014-11-04T12:12:24+08:00

    一些细节来澄清事情

    基于该 msdn 页面:服务器内存设置,保持 SQL-Server 最小和最大内存的默认值以保持动态是一个很好的做法。

    不,它不是写的,good practice它说的是它recommended,我确信在线 MS 书籍不能写得那么好,这是因为环境各不相同,对一种环境有益的东西可能不适合其他环境。尽管管理有效,但对大量消耗的东西进行限制是最好的。我认为在系统上定义最大服务器内存是一个很好的做法,因为它将限制缓冲池并告诉 SQL Server 缓冲池可以增长多少最大值,尽管 SQL Server 可以在缓冲池/最大服务器内存设置之外消耗内存,如果它大量使用第三方 DLL 的扩展存储过程和链接服务器。

    Windows 使用页面文件来保存在物理内存中交换进出的临时数据,以提供更大的虚拟内存集。页面文件很大程度上取决于操作系统提交的内存量,并根据设置的最小值和最大值进行相应的更改。如果要监视页面文件,则必须依赖 perfmon 计数器。请阅读此MSDN 博客

    Memory: Committed Bytes -- 已提交的虚拟内存的字节数。这不一定代表页面文件的使用 - 它代表如果进程完全非驻留将使用的页面文件空间量

    内存:提交限制——无需扩展页面文件即可提交的虚拟内存字节数。

    分页文件:% Usage -- 提交的分页文件的百分比

    分页文件:% Usage Peak -- 提交的分页文件的最高百分比

    另外,为什么你应该有一个最小值?我知道太低的值会阻止 SQL-Server 启动,并且我知道 SQL-Server 将内容保存在内存中,因此不会尝试释放它的缓存。

    Min Server memory 是 SQL Server 内存管理器可用于 SQL Server 实例的最小内存量。当窗口面临内存压力时,这将进入活动画面,在这种情况下,它将引发低内存通知标志。SQLOS 将响应它,它会要求 SQL Server 削减其内存消耗并释放其缓存,然后 SQL Server 不会抢先削减直到其最小服务器内存值。如果压力太大,SQL Server 可能无法快速做出反应,然后 SQL Server 进程将被调出。请记住 min server memory 并不是说​​当 SQL Server 启动时,如果不需要,它会最少占用这么多内存,SQL Server 启动时消耗的内存将比 min server memory 少得多。

    Min server memory 的其他用途是如果您不希望 SQL Server 由于某些行为不端的操作系统/第三方驱动程序而被分页到磁盘。您将 max server 和 min server memory 设置为几乎相同的值,并为 SQL Server 服务帐户 Locked pages in memory 特权,在这种情况下,即使操作系统面临内存紧缩,SQL Server 也会最大程度降低到 min server 并且如果操作系统内存紧缩仍然存在操作系统进程将被调出并且会变得非常缓慢。但这是一件坏事,我不推荐

    • 5
  2. James Anderson
    2014-11-04T04:05:30+08:002014-11-04T04:05:30+08:00

    当您的服务器具有多个实例时,MIN 值很有用。您可以使用它来确定每个实例的内存使用优先级。但主要是为了保证 SQL 至少有那么多内存可以使用。这可以阻止人们在服务器上运行某些东西并窃取所有内存。

    默认设置基本上将内存分配留给 SQL Server,但最佳做法是设置一个静态值,这样就不会出现 SQL 从其他进程或操作系统占用内存的问题。如果您在同一服务器上运行 SSIS、SSAS、SSRS 或任何其他服务器/应用程序,这是必须的。v因此,您的设置需要为服务器上运行的操作系统 + 服务 + 应用程序留出足够的内存。

    • 2

相关问题

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

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

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

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