什么样的SQL语句,会导致数据库,服务器端内存不断累积,而不释放?

wxylvmnn 2016-09-20 05:51:32
现状数据库服务器端,给DB分配了50G的内存。
最近有一批程序被更新了,主要是SQL的存储过程,

结果出现了很奇怪的现象,
数据库端(服务器),内存一直在累加,不释放,结果,今早,到底给内存干溢出啦。。。

查看DB侧的监视LOG,主要是监视硬件性能的LOG,
发现是Memory Manager\Total Server Memory(KB)这个指标,出现了阶梯状的增长。

问题,什么样的SQL语句会导致出现这种奇怪的现象?
有人说BULK INSERT语句,有人说用游标,但是没找到官方权威的,大家有谁有类似的经历,能否信息共享一下。。

拜谢!
...全文
1112 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxylvmnn 2016-11-10
  • 打赏
  • 举报
回复
问题被扔给第三方公司去调查了,暂时没有答案。。。
wxylvmnn 2016-09-23
  • 打赏
  • 举报
回复
>这个最好是要监控一下,这几台sql 服务器,内存都用到哪儿去了 现在就卡在这了,不知道该如何监控到,具体是哪个语句, 就系统提供的信息看,判断不了 哪条SQL文执行时,会占用多大内存。 最坏打算就是定期的服务器重启了。。。
薛定谔的DBA 2016-09-23
  • 打赏
  • 举报
回复
不知道 lz 是怎么判断内存溢出的(??) MSSQL 本身是不断使用内存的,如果内存充足,它就不会释放那些很久未使用的缓存数据或计划等,当然这也是有好处的,避免到时候查询时再次访问磁盘。 MSSQL 必然是不断使用内存的,如果想限制数据部分的缓存,使用: exec sp_configure 'max server memory (MB)' 如果内存有限制,之前内存没有使用多少,升级后不断发现有 stolen 或者 Memtoleave 的内存,那可能是升级的程序引起的。 stolen :进程对内存都会先预留再提交,不预留直接提交使用的,偷(stolen),stolen 通常不会太大,SQL语句的执行过程都需要用到.除非游标未关闭或者内存溢出才增大 Memtoleave : exec sp_configure 'max server memory (MB)' 限制的是buffer pool的大小,数据页通常是8kb大小,存储在 buffer pool 中,大于8kb的数据存储的区域称为multi_pages(Memtoleave)。大于8kb的连接,部分内存,第三方代码,线程等都有使用(也有用stolen的方式) ,这些数据库是不能限制的。
LongRui888 2016-09-21
  • 打赏
  • 举报
回复
引用 2 楼 wxylvmnn 的回复:
[quote=引用 1 楼 wmxcn2000 的回复:] 游标的可能性很大,你可以排查一下哪些比较大的操作; 比哪大量 update ,或者数据同步这样的操作; 在查到问题之前,可以先限制一下 SQL Server 的最大内存;
您说的这个数据同步,的确存在。 大概的是这样,之所以说大概,因为我也是不明真相的吃瓜群众。。。 数据库由3台服务器的cluster结构, 分别是 1正2副3入口数据库。 所有的application程序 都是通过3入口数据库进行数据访问。且,1,2,3的确在实时同步。 由3入口数据库来判断,1正是否正常可以访问,如果1正有啥问题,自动切换去访问2副数据库去。 大概,我听说的是这样的。 问题是,这个实时同步,咋实现的不是很清楚,但这个会很消耗内存么?这个怎么能看到? [/quote] 这个最好是要监控一下,这几台sql 服务器,内存都用到哪儿去了。 你搜一下,网上监控使用内存最大的sql语句。
wxylvmnn 2016-09-20
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
游标的可能性很大,你可以排查一下哪些比较大的操作; 比哪大量 update ,或者数据同步这样的操作; 在查到问题之前,可以先限制一下 SQL Server 的最大内存;
您说的这个数据同步,的确存在。 大概的是这样,之所以说大概,因为我也是不明真相的吃瓜群众。。。 数据库由3台服务器的cluster结构, 分别是 1正2副3入口数据库。 所有的application程序 都是通过3入口数据库进行数据访问。且,1,2,3的确在实时同步。 由3入口数据库来判断,1正是否正常可以访问,如果1正有啥问题,自动切换去访问2副数据库去。 大概,我听说的是这样的。 问题是,这个实时同步,咋实现的不是很清楚,但这个会很消耗内存么?这个怎么能看到?
卖水果的net 2016-09-20
  • 打赏
  • 举报
回复
游标的可能性很大,你可以排查一下哪些比较大的操作; 比哪大量 update ,或者数据同步这样的操作; 在查到问题之前,可以先限制一下 SQL Server 的最大内存;

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧