select *,datepart(dw,getdate())as weeks from realtime where runtime='115941'

alian1974 2005-09-20 12:06:18
問題1:
當以上的語句在執行時(每隔一段時間,條件runtime= 後面的值會隨時間變化)
SQl server所占用的系統內存一直在增加,盡管我close當前的查詢
*********
以下是原句
  ss:=formatdatetime('HHmmss',now());
sqlstr:='select *,datepart(dw,getdate())as weeks from realtime where runtime=''%s''';
sqlstr:=format(sqlstr,[ss]);
try
with adoqry do
begin
close;       //釋放不了所占用的內存
sql.Clear;
sql.Add(sqlstr);
open;       //每次都會增加內存
end;
except
// WriteLog('不能實時執行數據操作.');
// taskadd;
end;
**************
問題2:如果以上的SELECT語句中的條件不是變化的話,執行以上的內容
SQL SERVER 內存只上升一次
我想問一下有沒有解決方法?
謝謝
...全文
263 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
alian1974 2005-09-22
  • 打赏
  • 举报
回复
數據庫服務器的內存 会自动分配的,
一般情况,你对数据库进行操作时,数据库服务器的内存会增加的,但增加到一定限度时应该会自动释放!
----------------------------------------
這個說法我同意,可我的程式是每秒鐘檢索數據庫中有沒有記錄和當前的時間相同。
所以每秒鐘都會提交請求,我表達的意思是,釋放的要遠遠慢於請求的。
hqhhh 2005-09-22
  • 打赏
  • 举报
回复
即使你用变量的方法,数据库服务器的内存也应该会增加的!
hqhhh 2005-09-22
  • 打赏
  • 举报
回复
數據庫服務器的內存 会自动分配的,
一般情况,你对数据库进行操作时,数据库服务器的内存会增加的,但增加到一定限度时应该会自动释放!
alian1974 2005-09-22
  • 打赏
  • 举报
回复
with adoqry do
begin
Connection.Connected:=false;
Connection.Connected:=true;//测试一下看看
   
sql.Clear;
sql.Add(sqlstr);
open;       
end;
------------------------------------------------------------
這個試過了,不行。
因為一旦內存上去後,就是退出程式,內存也下來。

------------------------------------------------------------
SQLSERVER把数据放在内存中,和你的程序可能没有什么关系
把SQLSERVER设置一下
這個和我想的一樣,可在哪兒設呢?
產生問題的原因是不是提出的請求太多?





with adoqry do
begin
close;       //釋放不了所占用的內存
sql.Clear;
sql.Add('select *,datepart(dw,getdate())as weeks from realtime where runtime=' + QuotedStr(FormatDateTime('HHNNSS', Now())) );
open;       //每次都會增加內存
end;
-----------------------
這個也不行,盡管一開始我就知不行,但我還是試了。
因執行此程式的系統內存並沒有增加,而是數據庫服務
器的內存在增加。
cdsgajxlp 2005-09-21
  • 打赏
  • 举报
回复
with adoqry do
begin
Connection.Connected:=false;
Connection.Connected:=true;//测试一下看看
   
sql.Clear;
sql.Add(sqlstr);
open;       
end;
cdsgajxlp 2005-09-21
  • 打赏
  • 举报
回复
SQLSERVER把数据放在内存中,和你的程序可能没有什么关系
把SQLSERVER设置一下
hqhhh 2005-09-21
  • 打赏
  • 举报
回复
这样不用变量试试!
with adoqry do
begin
close;       //釋放不了所占用的內存
sql.Clear;
sql.Add('select *,datepart(dw,getdate())as weeks from realtime where runtime=' + QuotedStr(FormatDateTime('HHNNSS', Now())) );
open;       //每次都會增加內存
end;
alian1974 2005-09-21
  • 打赏
  • 举报
回复
如果不用变量,直接写呢!
----------------------------
問題2:如果以上的SELECT語句中的條件不是變化的話,執行以上的內容
SQL SERVER 內存只上升一次
我想問一下有沒有解決方法?
謝謝
hqhhh 2005-09-21
  • 打赏
  • 举报
回复
如果不用变量,直接写呢!
alian1974 2005-09-21
  • 打赏
  • 举报
回复
服務器內存增長跟你程序沒有關系吧﹐這又不是很大的查詢﹐應該不會有這么大的影響﹐試試在服務器上找原因吧
-----------------------------------------------------------------------------------------
我也是這樣認為的,可我這個程式一開,兩三天數據庫服務器就歇了。
我想是不是程式提交的請求太頻繁了。(每秒鐘有個請求,如條件符
合就執行相關的操作,不符合就退出)
服務器上我也查了,也看不出要改哪些。
churchatp1 2005-09-20
  • 打赏
  • 举报
回复
你的adoqry是动态的还是静态的?
常遇道 2005-09-20
  • 打赏
  • 举报
回复
Free;用這個試一試了
popmailzjw 2005-09-20
  • 打赏
  • 举报
回复
服務器內存增長跟你程序沒有關系吧﹐這又不是很大的查詢﹐應該不會有這么大的影響﹐試試在服務器上找原因吧
alian1974 2005-09-20
  • 打赏
  • 举报
回复
最好用一个动态创建的query,然后在Form的close或Destroy事件里free就可以了。
------------------------------------------------------------------------
我是就是用動態創建的,主要是我的FORM是一直顯示的。所以哪種都無所謂的。
問題就出在,返回結果集後,程式這邊是沒有問題,可數據庫那邊內存一直加。
下一個時段的查詢請求又交數據庫,數據庫返回結果集內存又往上加。
----------
就是每執行一下,關閉窗體一樣內存釋放不出來。好奇怪。
ncwuhh 2005-09-20
  • 打赏
  • 举报
回复
最好用一个动态创建的query,然后在Form的close或Destroy事件里free就可以了。
alian1974 2005-09-20
  • 打赏
  • 举报
回复
To: QWERT520(别来无恙)
我試過了,關於斷開,重連,還是釋放,我都試了,不行的。
To: churchatp1(阿牛)
這裡的adoqry是動態的,但在窗體create時創建的,我另一段代碼用靜態的,但結果是一樣的
釋放不了,所以和這個應沒有關系。
****************
個人感覺是,數據庫沒有釋放掉查詢,而不是程式本身的問題,但我想通過程式來避免。

2,496

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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