1

自从我们迁移到 AnyDac 作为 BDE 的替代方案后,我们的应用程序面临着真正的性能问题。

该应用程序支持多个数据库,因此 SQLSrvr 和 Oracle 等其他数据库运行良好,但从那时起 Informix 变得非常缓慢。可以预见的是,由于 ODBC 驱动程序,它会变得有点慢,但它太慢了,我们怀疑它可能是 AnyDac (ADConnectionDefs.ini) 的配置问题。

其他人有这样的问题吗?

向 da-soft 请求添加更多信息

  • 我们正在使用 anydac 版本 4.0.7.1723
  • 我们的 Informix ODBC 驱动程序是 v3.7
  • 数据库服务器是 Informix-11
  • Informix 配置别名如下:

Server=
Database=
User_name=informix
Password=
DriverID=ODBC
DataSource=ODBC_Informix_Alias
MetaDefSchema=informix
FetchOptions.RowSetSize=1000
MonitorBy=
FetchOptions.AssignedValues=[evMode, evItems, evCache, evAutoClose, evRecordCountMode, 
                             evCursorKind, evRowsetSize]
FetchOptions.Items=[fiBlobs]
FetchOptions.Cache=[fiBlobs, fiMeta]
FetchOptions.Mode=fmAll
FetchOptions.CursorKind=ckDefault
FetchOptions.AutoClose=False
FetchOptions.RecordCountMode=cmVisible
FormatOptions.AssignedValues=[fvMapRules, fvMaxBcdPrecision, fvMaxBcdScale, fvSE2Null]
FormatOptions.OwnMapRules=True
FormatOptions.MaxBcdPrecision=2147483647
FormatOptions.MaxBcdScale=2147483647
FormatOptions.StrsEmpty2Null=True
ResourceOptions.MacroExpand=False
ResourceOptions.EscapeExpand=False
ResourceOptions.MacroCreate=False
ResourceOptions.ParamCreate=True
ResourceOptions.ParamExpand=True
ResourceOptions.DirectExecute=True
ResourceOptions.AssignedValues=[rvMacroCreate, rvMacroExpand, rvParamCreate, rvParamExpand, rvEscapeExpand, rvDirectExecute]
FormatOptions.MapRules=< 
    item SourceDataType = dtBCD TargetDataType = dtDouble end 
    item SourceDataType = dtInt64 TargetDataType = dtDouble end 
    item SourceDataType = dtDateTimeStamp TargetDataType = dtDateTime end 
    item SourceDataType = dtByte TargetDataType = dtInt16 end item end >

添加该行FetchOptions.RowSetSize=1000以尝试提高性能,但没有帮助。

4

1 回答 1

1
  1. 这个问题在很多版本前都已解决(我认为在 v 4.0.1 中)。因此,如果您没有使用最新的 AnyDAC 版本,请考虑升级。
  2. 考虑从 FetchOptions.Items 中移除 fiMeta 并设置不同的 FetchOptions.CursorKind。

PS:一般来说,为了帮助您解决这些问题,我需要 AnyDAC、Informix 服务器、Informix ODBC 驱动程序和 Delphi 版本。此外,表格 DDL 和简单的测试应用程序也会有所帮助。

于 2011-05-26T16:24:16.800 回答