相关疑难解决方法(0)

Delphi中的BDE与ADO

请注意下面的编辑以获取更多信息,以及可能的解决方案

我们最近修改了一个大型Delphi应用程序,以使用ADO连接和查询而不是BDE连接和查询.自那次改变以来,表现变得非常糟糕.

我已经分析了应用程序,瓶颈似乎是在实际调用TADOQuery.Open.换句话说,除了重构应用程序以减少实际使用数据库之外,从代码角度来看,我无法做很多事情来改进这一点.

有没有人有关于如何提高ADO连接的Delphi应用程序性能的建议?我已经尝试了这里给出的两个建议,几乎没有任何影响.

为了了解性能差异,我对相同的大型操作进行了基准测试:

  • 在BDE下:11秒

  • 在ADO下:73秒

  • 在该文章引用的更改之后的ADO下:72秒

我们在客户端 - 服务器环境中使用Oracle后端.本地计算机每个都保持与数据库的单独连接.

对于记录,连接字符串如下所示:

const
  c_ADOConnString = 'Provider=OraOLEDB.Oracle.1;Persist Security Info=True;' +
                    'Extended Properties="plsqlrset=1";' +
                    'Data Source=DATABASE.DOMAIN.COM;OPTION=35;' +
                    'User ID=******;Password=*******';
Run Code Online (Sandbox Code Playgroud)

回答zendar提出的问题:

我在Windows Vista和XP上使用Delphi 2007.

后端是Oracle 10g数据库.

如连接字符串所示,我们使用的是OraOLEDB驱动程序.

我的基准测试机器上的MDAC版本是6.0.

编辑:

在BDE下,我们有很多代码如下:

procedure MyBDEProc;
var
  qry: TQuery;
begin
  //fast under BDE, but slow under ADO!!
  qry := TQuery.Create(Self);
  try
    with qry do begin
      Database := g_Database;
      Sql.Clear;
      Sql.Add('SELECT');
      Sql.Add('  FIELD1');
      Sql.Add(' ,FIELD2');
      Sql.Add(' ,FIELD3');
      Sql.Add('FROM');
      Sql.Add('  TABLE1');
      Sql.Add('WHERE SOME_FIELD …
Run Code Online (Sandbox Code Playgroud)

delphi oracle performance ado bde

13
推荐指数
2
解决办法
1万
查看次数

标签 统计

ado ×1

bde ×1

delphi ×1

oracle ×1

performance ×1