Во-первых, я не парень AS 400 - вообще.Поэтому, пожалуйста, прости меня за то, что я задаю нубистские вопросы здесь.
По сути, я работаю над приложением .Net, которому требуется доступ к AS400 для получения некоторых данных в реальном времени.Несмотря на то, что система работает, я получаю очень разные результаты производительности между запросами.Как правило, когда я делаю первый запрос к SPROC на AS400, я вижу ~ 14 секунд, чтобы получить полный набор данных.После этого первоначального вызова любые последующие вызовы обычно возвращаются через ~ 1 секунду.Это улучшение производительности сохраняется в течение ~ 20 минут или около того, прежде чем оно снова займет 14 секунд.
Интересно то, что если хранимая процедура выполняется непосредственно в Навигаторе iSeries, она всегда возвращается в течение миллисекунд (нетизменить время отклика).
Интересно, это проблема с планом кэширования / выполнения, но я могу только применить свою логику SQL SERVER к AS400, что не всегда совпадает.чтобы получить более стабильное время отклика или просто понять, почему AS400 работает таким образом, когда я использовал поставщик данных iSeries для .Net?Есть ли лучший способ доступа, который я должен использовать?
На всякий случай, вот код, который я использую для подключения к AS400
Dim Conn As New IBM.Data.DB2.iSeries.iDB2Connection(ConnectionString)
Dim Cmd As New IBM.Data.DB2.iSeries.iDB2Command("SPROC_NAME_HERE", Conn)
Cmd.CommandType = CommandType.StoredProcedure
Using Conn
Conn.Open()
Dim Reader = Cmd.ExecuteReader()
Using Reader
While Reader.Read()
'Do Something
End While
Reader.Close()
End Using
Conn.Close()
End Using
РЕДАКТИРОВАТЬ: немного посмотрев на этоПри использовании некоторых комментариев ниже я начинаю задаваться вопросом, испытываю ли я это из-за преимуществ пула подключений?Мысли?