【问题标题】:Informix Database is extremely slow when combining with Anydac与 Anydac 结合时,Informix 数据库非常慢
【发布时间】:2011-05-26 04:58:26
【问题描述】:

自从我们迁移到 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 行以尝试提高性能,但没有帮助。

【问题讨论】:

  • 我认为 AnyDAC 论坛是提问的好地方 - da-soft.com/forums/anydac-general-english.html
  • 我对 AnyDAC 的体验是它具有出色的性能,所以我一直在寻找 Informix 的问题。我找到了da-soft.com/blogs/anydac-2.0-informix.html。不多,但也许这可以帮助你。
  • @Branko:感谢您的回答(评论),我们将在 anydac 论坛中提问,我想可能有人有同样的问题,如果我从 anydac 那里得到答案,我也会在这里发布。
  • 一般评论:不要让用户以informix 的身份连接到您的 Informix 数据库;这是一项巨大的安全责任。我假设您出于安全原因省略了密码;真实系统中是有密码的,不是吗?以informix 身份连接就像始终以root(或系统管理员)身份登录。除此之外,这意味着最轻微的滑倒可能是致命的,因为用户是无所不能的,可以毫无限制地造成各种伤害。

标签: delphi optimization delphi-2010 informix anydac


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

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

【讨论】:

  • 感谢您的回答,所以我想我不必在 dasoft 论坛上发布此内容,我添加了所需的信息,请参阅我编辑的问题。我们在我们的应用程序中使用了 Blob,所以我想 FetchOptions.Items=[fiBlobs] 上的更改无法完成,对吗?
  • 通常da-soft 团队不会定期监控SO。因此,最好在我们的论坛上询问具体的 AnyDAC 问题,或者直接将您的电子邮件发送到 support@da-soft.com。关于您的问题 - 尝试从 FetchOptions.Items 中排除 fiBlobs。因为如果您的结果集包含具有较大值的 BLOB 字段,那么 AnyDAC 会将它们与其他记录字段一起获取。排除 fiBlob,将推迟获取它们的值,直到您真正需要它们。
  • 另外,向我们的支持团队提供所有所需信息的更简单方法是提供环境报告:da-soft.com/anydac/docu/DBMS_Environment_Reports.html
猜你喜欢
  • 1970-01-01
  • 2012-10-20
  • 2015-10-30
  • 2020-12-30
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
相关资源
最近更新 更多