30秒,2种方法解决SQL Server的内存管理问题

30秒,2种方法解决SQL Server的内存管理问题今天和大家聊一聊SQL server的内存管理,说之前我们需要先提出一个问题,SQL Server到底是如何使用内存的?弄清楚如何使用之后,才能谈如何管理。 简单说,SQL Server 数据库的内…

30秒,2种方法解决SQL Server的内存管理问题

今天和大家聊一聊SQL server的内存管理,说之前我们需要先提出一个问题,SQL Server到底是如何使用内存的?弄清楚如何使用之后,才能谈如何管理。

简单说,SQL Server 数据库的内存使用原则是有多少内存就会占用多少内存,不会自动释放内存。原因是它的存储引擎本身是一个Windows下的进程,所以在使用内存时和其它Windows进程是一样的,都要向Windows申请内存,申请到内存之后,SQL Server的内存使用可以粗略地分为两个部分:一是缓冲池内存,被数据页和空闲页占用;二是非缓冲内存,被线程、DLL、链接服务器等占用。其中缓冲池内存占大头。

这样会有什么问题呢?打个比方,如在执行一条结果集很大的 sql 时,数据查询取出后,会一直占用内存,直到机器内存被占满(并不会撑爆,因为可以通过图去限制最大内存,一般占满后仍然比服务器机器内存稍小),在重启数据库服务前,SQL Server不会主动释放该内存,也没有任何办法可人为释放,一直占用到 max server memory 的设定值,因此查看 SQL Server的内存基本使用率相对较高(80%以上)。

那怎么解决呢?最直接的办法是:人为修改最大可占用物理内存进行限制。

方法一:

缓冲池所占内存是通过下图1最大服务器内存和最小服务器内存来设置的,因此sqlservr.exe所占的内存(如图2)有可能会大于图1中所设置的最大内存。管理员用户登录数据库客户端(Microsoft SQL Server Management Studio),在实例名(树形菜单根节点,显示登录名那栏)上右键,选择属性–>内存,设置“最大服务器内存”即可根据实际情况调整内存(单位为MB),如调整到当前总的服务器内存的 70%左右使用率。

30秒,2种方法解决SQL Server的内存管理问题

图1 SQL Server可控制内存选项

30秒,2种方法解决SQL Server的内存管理问题

图2 SQL Server 进程内存使用情况

方法二:

如果使用的是华为云RDS SQL Server ,那解决方法就更加简单了,只需要到控制台实例管理中修改最大内存(max server memory)参数值即可,且修改完该参数不需要重启数据库,不得不说云数据库使用起来更加便捷清晰,更多华为云RDS SQL Server的使用可参考 官方文档:https://support.huaweicloud.com/rds/index.html

30秒,2种方法解决SQL Server的内存管理问题

 

点击关注,第一时间了解华为云新鲜技术~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6877.html

(0)
上一篇 2023-03-31
下一篇 2023-03-31

相关推荐

  • Redis缓存相关的几个问题「终于解决」

    Redis缓存相关的几个问题「终于解决」1 缓存穿透 问题描述 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。 解

    2023-05-13
    135
  • mysql(五)「建议收藏」

    mysql(五)「建议收藏」1 Navicat无法连接数据库的解决办法 打开【win+r】输入CMD进入命令行界面,然后输入 alter user 'root'@'localhost' ident

    2022-12-29
    151
  • 【MySQL】LIMIT以及LIMIT OFFSET「建议收藏」

    【MySQL】LIMIT以及LIMIT OFFSET「建议收藏」LIMIT两种方法: 1 两种方法: 2 (1)LIMIT A; 3 #表示从第一条记录开始取A条记录; 4 5 (2)LIMIT A,B; 6 #参数A为可选参数,表示跳过A条数据(默认为0) 7

    2022-12-26
    160
  • 【赵强老师】大数据分析引擎:Presto[通俗易懂]

    【赵强老师】大数据分析引擎:Presto[通俗易懂]一、什么是Presto? 背景知识:Hive的缺点和Presto的背景 Hive使用MapReduce作为底层计算框架,是专为批处理设计的。但随着数据越来越多,使用Hive进行一个简单的数据查询可能要

    2023-02-13
    143
  • Python列表转字符串:使用

    Python列表转字符串:使用Python作为一门高级编程语言,因其语法简单、易学易用、功能强大等特点,广受开发者青睐。在Python中,列表是一个非常常见的数据结构,可以存储多个数值、字符串等元素。本文将介绍如何将Python列表转换并包装成字符串,方便后续的处理和输出。

    2024-08-10
    30
  • 数据库负载均衡_数据库服务器的冗余方式

    数据库负载均衡_数据库服务器的冗余方式在文章《Nebula 架构剖析系列(一)图数据库的存储设计》中,我们提过分布式图存储的管理由 Meta Service 来统一调度,它记录了所有 partition 的分布情况,以及当前机器的状态。…

    2023-01-26
    132
  • mongodb重启数据没了_mongodb安装时服务启动失败

    mongodb重启数据没了_mongodb安装时服务启动失败1.实例重启背景 收到监控组同学反馈,连接某一个MongoDB实例的应用耗时异常,并且出现了超时。查看数据库监控平台,发现此实例服务器的IO异常飙升,而查看副本集状态(rs.status()),主从是

    2023-04-20
    153
  • Python如何遍历DataFrame?

    Python如何遍历DataFrame?在Python中,DataFrame是一个非常常用的数据结构,它是一个二维的表格,每个列可以是不同的数据类型(例如数字、字符串、布尔值等),而且可以自定义行标签和列标签。通过pandas库中的DataFrame类,我们可以轻松地读取、写入、操作和可视化这些数据。

    2024-09-17
    20

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注