MyException - 我的异常网
当前位置:我的异常网» Sql Server » 存储过程占用大量内存,完成后如何释放

存储过程占用大量内存,完成后如何释放

www.MyException.Cn  网友分享于:2015-08-26  浏览:201次
存储过程占用大量内存,完成后怎么释放?
我现在管的这服务器每天会向另一个数据库服务器提交一次数据,具体的存储过程如下:
SET   QUOTED_IDENTIFIER   ON  
GO
SET   ANSI_NULLS   ON  
GO

ALTER                             PROCEDURE   DUMP_GIS_DYH   --@DATETIME   DATETIME
AS
BEGIN
      DELETE   FROM   MIDGZDL..MIDGZDL.FQD_TRANS_DL   WHERE   CONVERT(CHAR(10),DATATIME,120)=CONVERT(CHAR(10),GETDATE()-1,120)  
      DELETE   FROM   MIDGZDL..MIDGZDL.FQD_TRANS_DLXX   WHERE   CONVERT(CHAR(10),DATATIME,120)=CONVERT(CHAR(10),GETDATE()-1,120)    

      INSERT   INTO   MIDGZDL..MIDGZDL.FQD_TRANS_DL(USERID,AMMETERID,DATATIME,DATAY,DATAW)
      Select   a.NUMBER,MIN(a.EMNO),b.YearMonthDay,ISNULL(MAX(b.PositiveDailyData),0),ISNULL(MAX(b.NegativeDailyData),0)
      from   EUSER   a,erimis.DBO.newMeasureSetDailyData   b  
      where   a.termno=CAST(b.MEASURESETID   AS   INT)   and   datediff(day,b.YearMonthDay,GETDATE())=1  
        and   (b.PositiveDailyData=b.NegativeDailyData   and   b.PositiveDailyData <> 0   )
      GROUP   BY   a.NUMBER,b.YearMonthDay


      INSERT   INTO   MIDGZDL..MIDGZDL.FQD_TRANS_DLXX(USERID,AMMETERID,DATATIME,DATAIA,DATAIB,DATAIC,DATAUA,DATAUB,DATAUC,DATASUM,CREST,TROUGH,BALANCE)
select   a.number,min(a.emno),d.DT,
ISNULL(max(d.ia),0)*min(a.ctpt),ISNULL(max(d.ib),0)*min(a.ctpt),ISNULL(max(d.ic),0)*min(a.ctpt),ISNULL(max(d.ua),0),ISNULL(max(d.ub),0),ISNULL(max(d.uc),0),ISNULL(max(d.PRATIOTOTAL),0),ISNULL(max(d.ZY_FDL),0),ISNULL(max(d.ZY_GDL),0),ISNULL(max(d.ZY_PDL),0)
from   euser   a,afn0d_all   d
where   a.termno=d.termno   and   datediff(day,d.dt,GETDATE())=1
GROUP   BY   a.number,d.DT


END  


GO
SET   QUOTED_IDENTIFIER   OFF  
GO
SET   ANSI_NULLS   ON  
GO

其中要提到的是:afn0d_all数据量比较大,又200多万条记录;
在存储过程执行时,内存占用量以每秒8M左右增加,直到1.5--1.6G,服务器总内存为3G多,但是CPU却只在0---5间变动。原来因为一般都是成功的,所以我也没去注意,但是这段时间却频频失败,提示为:数据库已用完了提供的内存,内存量不足云云。
        今天又执行了几遍,偶尔一次居然成功了,但是看执行完成后,内存占有量还是保持在1.6G始终降不下来
        请问各位高人1.不就是几个条件删除,然后条件插入吗,数据量也不大啊,怎么会暂用这么多的资源?
                                2.为什么执行完成后却不释放,怎么能让它释放?
小弟对SQL不怎么懂,可能有重点没说到,有不明白的地方说下,我在线解释,谢谢!!!




------解决方案--------------------
首先你的内存下了点,服务器只有3G,现在个人电脑很多都2G了

重要的一点是你SqlServer的tmpdb数据库不知道放在那里磁盘里,空间够不够,存储过程会占用内存,但不会太多,主要是依靠tmpdb数据库做中转,估计是你的磁盘空间也不够大了

释放都是自动的,另外重启SqlServer服务也能释放
------解决方案--------------------
200万条数据insert,会产生很大的LOG 文件,估计是你的磁盘不够了.如果想大数据操作,可以设置数据库为简单模式,看看.
------解决方案--------------------
你的delete,insert操作操作的记录数太多了,分批进行吧.
------解决方案--------------------
tempdb是一部分原因。数据占用的内存也是可以清除的。
------解决方案--------------------
看看你的JOIN连接的执行计划,看看是否有可以优化的地方。

文章评论

Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
那些争议最大的编程观点
那些争议最大的编程观点
程序员应该关注的一些事儿
程序员应该关注的一些事儿
我是如何打败拖延症的
我是如何打败拖延症的
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
为什么程序员都是夜猫子
为什么程序员都是夜猫子
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
一个程序员的时间管理
一个程序员的时间管理
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
程序员必看的十大电影
程序员必看的十大电影
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
Java程序员必看电影
Java程序员必看电影
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
总结2014中国互联网十大段子
总结2014中国互联网十大段子
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
 程序员的样子
程序员的样子
程序员的鄙视链
程序员的鄙视链
我的丈夫是个程序员
我的丈夫是个程序员
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
旅行,写作,编程
旅行,写作,编程
中美印日四国程序员比较
中美印日四国程序员比较
每天工作4小时的程序员
每天工作4小时的程序员
如何成为一名黑客
如何成为一名黑客
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
老程序员的下场
老程序员的下场
代码女神横空出世
代码女神横空出世
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
漫画:程序员的工作
漫画:程序员的工作
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
编程语言是女人
编程语言是女人
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
程序员和编码员之间的区别
程序员和编码员之间的区别
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有