今天和大家聊一聊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. 【信创】 JED on 鲲鹏(ARM) 调优步骤与成果

    项目背景 基于国家对信创项目的大力推进,为了自主可控的技术发展,基础组件将逐步由国产组件替代,因此从数据库入手,将弹性库JED部署在 国产华为鲲鹏机器上(基于ARM架构)进行调优,与Intel (X8 ...

  2. 传纸条 luoguP1006

    题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排坐成一个 mm 行 nn 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈 ...

  3. Go反射终极指南:从基础到高级全方位解析

    在本文中,我们将全面深入地探讨Go语言的反射机制.从反射的基础概念.为什么需要反射,到如何在Go中实现反射,以及在高级编程场景如泛型编程和插件架构中的应用,本文为您提供一站式的学习指南. 关注[Tec ...

  4. P9580 「Cfz Round 1」Wqs Game 题解

    题目链接 挺好的博弈论题,这是一个跟官方题解不太一样的做法. 遇到这种组合游戏可以先考虑逆推胜负,把握一下规律,我们先从一个区间的胜负判断开始入手. 考察区间中最后一个数字的从属关系,如果它属于弈,因 ...

  5. c#中建造者设计模式详解

    基础介绍:   将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.   说白了就是将一个复杂的对象拆分成一个一个零件,然后按照既定顺序和规则进行组装,最终形成这个相对复杂的对象 ...

  6. [Python急救站课程]猴子吃桃问题

    问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个:第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后,每天早上都吃了前一天剩下的一半多一个.到了第五天早上想再吃时,见只剩下一个桃 ...

  7. CF510B Fox And Two Dots

    题目大意 矩阵中各个方格都有颜色,判断是否有相同颜色的方块可以组成环.(原题链接:CF510B Fox And Two Dots) 输入: 第一行:\(n\), \(m\),表示矩阵的行和列 接下来\ ...

  8. Vs code创建项目教程

    1.首先,vscode本身没有新建项目的选项,所以要先创建一个空的文件夹. 2.然后打开vscode,再在vscode里面打开文件夹,这样才可以创建项目. 3.选择一个空文件夹. 4.Ctrl+shi ...

  9. 明解Java第一章练习题答案

    @ 目录 练习1-1 练习1-2 练习1-3 <明解Java>书籍其他章节答案 练习1-1 如果没有表示程序语句末尾的分号,结果会怎么样呢?请编译程序进行确认. 答:编译器报错 练习1-2 ...

  10. N100低功耗win11安装wsl2当入门nas

    前言 最近入了一台16gb+512gb的N100,想着用来存些资源,当个nas,偶尔要用用windows系统,所以想直接在这上面搞个虚拟机算了,WSL2似乎是一个不错的选择,下面介绍捣鼓的教程. 没用 ...