热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

高分求助,使用ado控件连接sqlserver执行sql语句竟然会导致sqlserver进程内存暴涨,分数不够再加

unitUnit1;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Contro
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ADODB, DB;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOCommand1: TADOCommand;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var
  i:Integer;
begin
  for i:= 0 to 30000 do
  begin
    ADOCommand1.CommandText := Format(' update userdata set port = %d where RecordId = 5000',[i]);
    ADOCommand1.Execute;
  end;

end;

执行上面的代码能使sqlserver进程的内存暴涨到两三百兆,到底是sqlserver的原因还是ado控件的属性没有设置好??请高手赐教,感激不尽啊。

up也有分。。。。。。。。。。。

31 个解决方案

#1


I 服了 U !
你做了30001次操作。呵~~
强!

#2


倒!这么多次循环!!!!

#3


这样写什么意思啊,要这么的循环干什么啊,要更新30000次 啊

#4


我也不懂。

#5


会死机的,老大

#6


高手啊!
在测试SQLServer吗?

#7


我没想法。。。。

#8


你相当于打开了表30001次,内存能不暴长么,因为来不及释放啊.

建议你改为,把数据插入到一个临时表中,最后再一次update过去

#9


for i:= 0 to 30000 do ??

#10


循环太多了!

#11


用缓存、批量更新

#12


要是先close;
然后再处理会不会好些呢。

#13


我今天也遇到的一个问题,就是在数据量庞大的时候,执行多条件的联合查询等等,会出现超时!
不知道有什么好的方法解决这些问题。

#14


楼上的兄弟们:我给的代码只是测试ado控件连接sqlserver数据库时频繁执行sql语句到底会不会造成sqlserver进程内存暴涨??因为在我们项目的需求里必须频繁地执行sql语句

#15


这是sqlserver的机制造成的,没有太大问题,:)

#16


执行3万次SQL应该是增加CPU负担,可是表开3万次就不一样了,执行SQL怎么会占用内存那,肯定是打开的表占用了内存咯

#17


sqlserver每打开一个连接就分配一定内存的,:)

#18


SQL Server自会自动处理的!

#19


1、判断是数据库或DELPHI的问题很容易,通过DELPHI连接ADO执行或在SQL中直接执行看看速度
   把以上代码转换成SQL代码在SQL中直接执行看看再说别的

2、DELPHI和数据库是完全脱离的,所以先看看SQL有没有问题

#20


学习

#21


ilons(轻轻的来,静静的接分,不带走什么,只留下几十个bytes):“你相当于打开了表30001次,内存能不暴长么,因为来不及释放啊.

建议你改为,把数据插入到一个临时表中,最后再一次update过去”

请教一下以下的疑问:
1、为什么我操作的是一张表,还要去建临时表呢?到底有什么不同???
2、难道sqlserver竟然会“笨的”在内存中保留30001表???为什么表来不及释放?如何释放表?
3、而且我程序退出时把adoconnection都关闭了,sqlserver进程为什么还不能是否内存???

#22


昨天王数据库里写了1w张图片,sqlserver,内存使用到了1.4g
日死了~~

不知道 楼上说的创建临时表怎么个创建法?
create table temp from select.....么?
那跟直接跟新有什么区别?

#23


楼上的,你机器多大内存啊?怎么涨到1.4g你系统还没当机啊??

#24


修改sqlserver的内存设置可以节约点。你的程序没问题。

想通了为什么专业的数据库服务器都要用超牛的机器来当了吧,空间换时间的策略。

#25


呵呵,以前做有个统计程序的时候,虚拟内存都要1G多才够用哦:)

#26


你只要经常用commit,内存就不会涨很多了

#27


循环次数过多不死才怪..

#28


这是SQL Server的问题,我之前连续insert 10万条记录,消耗了2G的内存(不知道跟我带事务有没有关),当insert完成后,内存消耗立即回落。由于我机器内存没有那么大,只好把虚拟内存设置得很大。。

#29


To: truedogface(^(o.o)^)

这和你带事务有很大关系,所以当数据表很庞大(Rec>200-500万)的时候,如果要事务处理,那么你的电脑得比较N才好,如果往一个1000万条记录的表中添加10万条记录,而且如果你建立了主索引,如果这个时候你用了事务的话那真的会很难看,除非你的电脑是企业服务器级别(IBM E系列)的,否则慢慢等吧

#30


to楼上
是啊,但是有时候没有办法,必须使用事务,否则会非常的麻烦,慢就只能让他慢了。

#31


那就这样
1.把10万条记录先弄到临时表中,不要建立索引
2.把1000万条记录的表的索引先取消 <<<---非必要步骤,有时候反而会弄巧成拙
3、开启事务
4.把10万条记录一次性添加
5、事务完成或事务回滚

会提高部分性能

推荐阅读
  • web页面报表js下载,web报表软件 ... [详细]
  • 本文详细介绍了如何在Linux系统中使用nslookup命令查询DNS服务器地址,这对于Linux服务器的运维管理是非常重要的基础知识。 ... [详细]
  • MOSS2007 中型服务场配置指南:网络负载均衡集群设置
    本文详细介绍了如何在MOSS2007环境中配置网络负载均衡集群,包括安装和配置网络负载均衡功能的具体步骤。通过本文,读者可以了解如何在多台Web服务器上安装并配置网络负载均衡,以实现高效的服务分发。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 华为捐赠欧拉操作系统,承诺不推商用版
    华为近日宣布将欧拉开源操作系统捐赠给开放原子开源基金会,并承诺不会推出欧拉的商用发行版。此举旨在推动欧拉和鸿蒙操作系统的全场景融合与生态发展。 ... [详细]
  • RocketMQ在秒杀时的应用
    目录一、RocketMQ是什么二、broker和nameserver2.1Broker2.2NameServer三、MQ在秒杀场景下的应用3.1利用MQ进行异步操作3. ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • 微信小程序详解:概念、功能与优势
    微信公众平台近期向200位开发者发送了小程序的内测邀请。许多人对微信小程序的概念还不是很清楚。本文将详细介绍微信小程序的定义、功能及其独特优势。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 浅析PHP中$_SERVER[
    在PHP后端开发中,`$_SERVER["HTTP_REFERER"]` 是一个非常有用的超级全局变量,它可以获取用户访问当前页面之前的URL。本文将详细介绍该变量的使用方法及其在不同场景下的应用,如页面跳转跟踪、安全验证和用户行为分析等。通过实例解析,帮助开发者更好地理解和利用这一功能。 ... [详细]
  • 1.3.4ProfilerSQLServerProfiler是一个图形化的管理工具用于监督记录和检查SQLServer数据库的使用情况对系统管理员来说它是一个监视用户活动的间谍1. ... [详细]
  • 微软平台的软件开发系统中,有着一套自己的约定规则。熟悉.net开发的都会对异常处理不陌生,现阶段的各种编程语言中,都不乏异常处理机制,个中原理也都大同小异。sqlserver在批处 ... [详细]
  • 定制数据层关键字:数据层,访问,元数据,数据访问模型http://www.gaodaima.com/35448.html定制数据层_sqlserver ... [详细]
author-avatar
lijunlin66_8460dd
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有