Simples Szenario: Query über einen Join aus 2 Tabellen in der DB, diesen mit NHibernate 3.3.1.4 gemappt, per Einschränkung über 3 Kriterien werden ca. 400 Records gelesen:
ICriteria criteria = Session.CreateCriteria(typeof(IQryXY)); criteria.Add(Restrictions.Eq("XYZ", a_value)); [...] RecordList = criteria.List<IQryXY>();
Die DB braucht dazu laut Log knapp 3 Sekunden: 14:30:55,533 [291698] [20] DEBUG NHibernate.AdoNet.AbstractBatcher - ExecuteReader took 2955 ms
Dann werden die Daten in die Objekte geladen: 14:30:55,533 [291698] [20] DEBUG NHibernate.Loader.Loader - result set row: 0 14:30:55,533 [291698] [20] DEBUG NHibernate.Type.Int32Type - returning '10018' as column: AutoID14_0_ [...] - alles geht ruck-zuck im Rahmen von wenigen Millisekunden, dann beim 42. Satz kommen 1,5 Sekunden Pause: 14:30:55,845 [292011] [20] DEBUG NHibernate.Type.StringType - returning '2000001164098' as column: XXXXX_14_0_ 14:30:57,330 [293495] [20] DEBUG NHibernate.Type.StringType - returning '2000001339004' as column: YYYYY14_0_ Anschließend geht's wieder flott weiter.
Analoges Verhalten im Satz 68, 92, 118, 141 und so fort.
Damit dauert dann das Einlesen der Daten rund eine halbe Minute, lang genug, die Anwender zu frustrieren.
Kennt bitte jemand einen Weg, diese "Nachdenkpausen" wegzukonfigurieren?
Vielen Dank! Martin
|