SQL Server内存管理小知识,sql server从入门到精通SQL Server内存管理知识今天,我们来谈谈SQL server的内存管理。在我们说之前,我们需要问一个问题。SQL Server实际上是如何使用内存的在你知道如何使用它之前你不能谈论如何管理它。简单来说SQL Server数据库的内存使用原则就是......
今天,我们来谈谈SQL server的内存管理。在我们说之前,我们需要问一个问题。SQL Server实际上是如何使用内存的在你知道如何使用它之前你不能谈论如何管理它。
简单来说SQL Server数据库的内存使用原则就是,有多少内存就占用多少内存,不会自动释放内存。原因是它的存储引擎本身就是Windows下的一个进程,所以在使用内存的时候和其他Windows进程是一样的。申请内存后,SQL Server的内存使用情况大致可以分为两部分:一是缓冲池内存,被数据页和空闲页占用;二是无缓冲内存,被线程、dll、链接服务器等占用。其中,缓冲池内存占大头。
这有什么问题比如执行一个结果集比较大的sql时,数据查询取出后,会一直占用内存,直到机器内存满了为止(不会爆,因为最大内存可以受一个图的限制,满了之后还是略小于服务器机器内存)。在重启数据库服务之前,SQL Server不会主动释放内存,也没有办法人为释放。达到最大服务器内存的设定值,所以SQL Server的基本内存利用率比较高(80%以上)。
那怎么解决呢最直接的方法就是人为修改最大可用物理内存来限制它。
方法1:
缓冲池占用的内存由下面图1中的最大服务器内存和最小服务器内存设置,因此sqlservr.exe(图2)占用的内存可能大于图1中设置的最大内存。管理员登录到数据库客户端(Microsoft SQL Server Management Studio),右键单击实例名称(树菜单的根节点,显示登录名的列),然后选择Propertiesgt;内存,设置“最大服务器内存”根据实际情况调整内存(MB),比如调整到当前总服务器内存利用率的70%左右。
图1 SQL Server可控内存选项
图2 SQL Server进程内存使用情况
方法二:
如果使用华为云RDS SQL Server,解决方案就更简单了。只需要在控制台实例管理中修改最大服务器内存的参数值,修改完该参数后不需要重启数据库。不得不说,云数据库用起来更方便明了/
特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。
二维码加载中...
使用微信扫一扫登录
使用账号密码登录
平台顾问
微信扫一扫
马上联系在线顾问
小程序
ESG跨境小程序
手机入驻更便捷
返回顶部