База данных Informix работает очень медленно при объединении с Anydac - PullRequest
1 голос
/ 26 мая 2011

Мы столкнулись с реальной проблемой производительности нашего приложения, поскольку мы перешли на 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, чтобы попытаться улучшить производительность, но это не помогло.

1 Ответ

1 голос
/ 26 мая 2011
  1. Эта проблема была решена много версий назад (я думаю, в версии 4.0.1).Так что, если вы не используете последнюю версию AnyDAC, рассмотрите возможность обновления.
  2. Рассмотрите возможность удаления fiMeta из FetchOptions.Items и установки различных FetchOptions.CursorKind.

PS: в целом, чтобы помочь вам с такими проблемами, мне понадобятся AnyDAC, сервер Informix, драйвер ODBC Informix и версии Delphi.Также поможет таблица DDL и простое тестовое приложение.

...