今天和大家聊一聊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%左右使用率。

图1 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的内存管理问题的更多相关文章

  1. 转载 50种方法优化SQL Server数据库查询

    原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1 ...

  2. SQL Server 2012 内存管理 (memory management) 改进

    SQL Server 2012 的内存管理和以前的版本相比,有以下的一些变化. 一.内存分配器的变化 SQL Server 2012以前的版本,比如SQL Server 2008 R2等, 有sing ...

  3. 50种方法优化SQL Server数据库查询

    查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 ...

  4. 解决 SQL Server 耗尽内存的情况

       如果您碰到SQL Server服务造成内存不断扩展最终系统死机等情况,请按照以下方法解决. 原理:SQL Server 2000引入的动态内存分配机制,一般不能很好的回收内存,如果计算机一直不关 ...

  5. 浅谈SQL Server 对于内存的管理

    简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) ...

  6. (转)浅谈SQL Server 对于内存的管理

    简介 理解SQL Server对于内存的管理是对于SQL Server问题处理和性能调优的基本,本篇文章讲述SQL Server对于内存管理的内存原理. 二级存储(secondary storage) ...

  7. 如何解决 SQL Server 中的锁升级所致的阻塞问题

    概要 锁升级为表锁插入转换很多细粒度的锁 (如行或页锁) 的过程.Microsoft SQL Server 动态确定何时执行锁升级.作出决定之前,SQL Server 将特定的扫描,整个事务,并且用于 ...

  8. 解决SQL Server管理器无法连接远程数据库Error: 1326错误

    解决SQL Server管理器无法连接远程数据库Error: 1326错误 我们在在使用SQL Server时都会遇到使用SQL Server Management Studio无法连接远程数据库实例 ...

  9. ecshop运行超过30秒超时的限制解决办法

    ecshop运行超过30秒超时的限制解决办法 ECSHOP模板/ecshop开发中心(www.68ecshop.com) / 2014-06-04 ecshop运行超过服务器默认的设置30秒的限制时会 ...

  10. 7种方法解决移动端Retina屏幕1px边框问题

    在Reina(视网膜)屏幕的手机上,使用CSS设置的1px的边框实际会比视觉稿粗很多.在之前的项目中,UI告诉我说我们移动项目中的边框全部都变粗了,UI把他的设计稿跟我的屏幕截图跟我看,居然真的不一样 ...

随机推荐

  1. 文心一言 VS 讯飞星火 VS chatgpt (116)-- 算法导论10.3 1题

    一.用go语言,画图表示序列(13,4,8,19,5,11),其存储形式为多数组表示的双向链表.同样画出单数组表示的形式. 文心一言: 在Go语言中,我们无法直接画图,但我可以帮助你描述如何使用Go语 ...

  2. 【译】A unit of profiling makes the allocations go away

    在 Visual Studio 17.8 Preview 2 中,我们更新了单元测试分析,允许你在性能分析器中使用任何可用的工具--而不仅仅是仪表工具.有了这个更改,可以很容易地快速分析孤立的小工作单 ...

  3. 阿里云创建BUCKET脚本

    创建BUCKET脚本 安装模块 pip install pymysql pip install aliyun-python-sdk-core pip install aliyun-python-sdk ...

  4. 各种flex布局,拿来即用用过的都说好

    开发过程中,很多布局,用antd的栅格还是不灵活,flex弹性布局会更好用 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 注意 ...

  5. MyBatis核心流程

    摘要 mybatis的核心流程,主要是对于主线的一个探索.目的是对于整个mybatis流程有个初步的印象 核心流程 核心流程搞懂:主线,涉及的模块不深究.再去基础支持层,再回来核心. /** * My ...

  6. 题解 CF1264D2

    前言 建议大家看一下我对于 D1 的题解(传送门)后再看本题解,本题解是基于那篇题解的基础上书写的. 数学符号约定 \(\dbinom{n}{m}\):表示 \(n\) 选 \(m\) . 如非特殊说 ...

  7. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-28-处理日历时间控件-上篇

    1.简介 我们在实际工作中,有可能遇到有些web产品,网页上有一些时间选择,然后支持按照不同时间段范围去筛选数据,例如:我们预定火车票或者预定酒店,需要选择发车日期或者酒店的入住与退房时间.宏哥早在之 ...

  8. .NET 8 Video教程介绍(开篇)

    教程简介 本文将简单描述视频网站教程,视频网站是一个类似于腾讯视频一样的网站,视频资源用户自己上传,然后提供友好的界面查看视频和搜索视频,并且提供管理页面对于视频进行管理,我们将使用Blazor作为前 ...

  9. 总结--flask部分

    Flask框架的诞生: Flask诞生于2010年,是Armin ronacher(人名)用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架. Flask本身相当于一个内核,其他几 ...

  10. C#中的类和继承

    公众号「DotNet学习交流」,分享学习DotNet的点滴. 类继承 通过继承我们可以定义一个新类,新类纳入一个已经声明的类并进行扩展. 可以使用一个已经存在的类作为新类的基础.已存在的类称为基类(b ...