delphi 数据库中Connection与Query连接数量问题思考

今天闲着没事,测试了一下Connection连接MSSQL,可以承受多少连接。

1.看看ADOConnection的连接数:写了一个代码,动态创建,测试了10000个连接,花了大约5~10分钟创建和连接,似乎没有啥事情。

2.看看一个ADOConnection+N个Quary,同样是创建了10000个,也没有问题。

所以,一般中小公司(500)中connection个数还是自己看着办吧。当然在并发中的处理,还是要自己处理的,例如添加锁什么的。

3.问题与思考:那么,在实际应用中,对系统而言,是功能单独分开用Connection,还是一个Connection+N个quary?有什么好处,这个请高手们可以讲讲。

4.我打算这样做,朋友们看看是否有必要:

Connection我用两个,一个专门用于取数据 ,对应一个 query;

另一个专门用于更新、插入数据操作,也对应一个query。

5.最后马上国庆了,祝大家节日快乐!

附代码:

var
  tc:array[0..10000] of TADOConnection;
  tb:array[0..10000] of TADOTable;
  i:integer;
  s:string;
begin
  s:=‘Provider=SQLOLEDB.1;Password=aaa;Persist Security Info=True;‘+
     ‘User ID=sa;Initial Catalog=MyDB;Data Source=192.168.7.139;‘+
     ‘Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;‘+
     ‘Use Encryption for Data=False;‘+
     ‘Tag with column collation when possible=False‘ ;
  for i := 0 to 10000 do begin
    tc[i]:=TADOConnection.Create(nil);
    tc[i].ConnectionString:=s;
    tc[i].LoginPrompt:=false;
    tc[i].Provider:=‘SQLOLEDB.1‘;

    tb[i]:=TADOTable.Create(nil);
    tb[i].Connection:=tc[i];
    tb[i].TableName:=‘AD_Bank‘;
    tb[i].Active:=true;
    mmo1.Lines.Add(DateTimeToStr(now)+‘:‘+inttostr(i)+‘已经开始工作,共有 ‘+
                   IntToStr(tb[i].RecordCount)+‘ 条数据‘);
    mmo1.Refresh;
  end;

end;
时间: 2024-10-08 18:40:47

delphi 数据库中Connection与Query连接数量问题思考的相关文章

统计MSSQL数据库中所有表记录的数量

SELECT a.name as '表名', b.rows as '记录数' FROM sysobjects AS aINNER JOIN sysindexes AS b ON a.id = b.idWHERE (a.type = 'u') AND (b.indid IN (0, 1))ORDER BY b.rows DESC 原文地址:https://www.cnblogs.com/bingege/p/8146485.html

数据库的Connection、Cursor两大对象

Python 数据库图解流程 Connection.Cursor比喻 Connection()的参数列表 host,连接的数据库服务器主机名,默认为本地主机(localhost). user,连接数据库的用户名,默认为当前用户. passwd,连接密码,没有默认值. db,连接的数据库名,没有默认值. conv,将文字映射到Python类型的字典. MySQLdb.converters.conversions cursorclass,cursor()使用的种类,默认值为MySQLdb.curso

DB2数据库中提高INSERT性能详解

分类: Linux INSERT 处理过程概述 首先让我们快速地看看插入一行时的处理步骤.这些步骤中的每一步都有优化的潜力,对此我们在后面会一一讨论. 在客户机准备 语句.对于动态 SQL,在语句执行前就要做这一步,此处的性能是很重要的:对于静态 SQL,这一步的性能实际上关系不大,因为语句的准备是事先完成的.在客户机,将要插入的行的各个 列值组装起来,发送到 DB2 服务器. DB2 服务器确定将这一行插入到哪一页中.DB2 在用于该页的缓冲池中预留一个位置.假如 DB2 选定的是个已有的页,

Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决(对三层的例子配置有帮助)

Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLStoredProc.TSQLTable.TsqlServerMethod.TSQLMonitor.TSimpleDataSet).但是因为该组件只提供了各种数据库的抽象驱动,没有提供底层的与数据库直接交互的驱动库,因此,要想使用具体某种数据库,还需要搭配提供商驱动.本文以Delphi XE在Window

Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决

Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLStoredProc.TSQLTable.TsqlServerMethod.TSQLMonitor.TSimpleDataSet).但是因为该组件只提供了各种数据库的抽象驱动,没有提供底层的与数据库直接交互的驱动库,因此,要想使用具体某种数据库,还需要搭配提供商驱动.本文以Delphi XE在Window

Delphi中Undac控件连接MYSQL数据库问题总结

1.数据库挂到cxgrid上,中文显示不正确 我调试了好长时间,怀疑是编码问题,mysql的编码方式我都试过了,都不可以. 解决问题过程: (1).在dos系统下进入mysql数据库输入show variables like 'char%'; 我考虑可能是character_set_connection的编码有问题,于是开始设置它的编码方式,但是,这个编码方式重新启动数据库还是原来的编码方式.当然可以mysql数据库配置文件中设置,但是不是这个原因. (2).考虑到可能是数据库字符集编码方式问题

[转载]C#中使用ADO.NET连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法

问题描述: 假设在数据库中存在以下两张数据表: User表,存放用户的基本信息,基本结构如下所示:   类型 说明 ID_User int 自动增长字段,用作该表的主键 UserName varchar   UserDepart表,存放用户所拥有的部门(我们假设一个用户拥有多个部门,虽然听起来有点别扭,此处仅作示例,可以理解为一个用户拥有多个职位等等),该表的基本结构如下所示:   类型 说明 ID_UserDepart int 自动增长字段,用作该表的主键 ID_User int 用户编号 I

JDBC远程从一个MySql数据库中的一张表里面读出数据(这个数据库需要用SSH隧道连接,大约8W条数据),然后分别插入到另一个数据库中的两张表里

package com.eeepay.lzj.db; import java.sql.Connection; import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import com.jcraft.jsch.JSch; import com.jcraft.jsc

sharepoint 2013 打开rdl报表,报表服务器数据库内出错。此错误可能是因连接失败、超时或数据库中磁盘空间不足而导致的

 最近在做reporting services报表的时候,部署到sharepoint后,打开rdl报表,经常遇到一个问题: 报表服务器数据库内出错.此错误可能是因连接失败.超时或数据库中磁盘空间不足而导致的. ---> Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerStorageException: 报表服务器数据库内出错.此错误可能是因连接失败.超时或数据库中磁盘空间不足而导致的. ---> System.Da