This appears to be happening for me as well, with Sql Server 2012, and NH version 4.0.2.4000. I also had the same understanding about the beginTransaction behavior, although I'm having trouble finding where I read about this originally.
Can anyone shed some light here? On Friday, February 6, 2015 at 10:31:11 AM UTC-5, Joel Hervén wrote: > > In an attempt to limit the number of connections that Nhibernate opens > against our database I have run into a problem regarding the start of a > transaction. > > We run Nhibernate 3.3 in a web-application, session-factory is created at > application start up and on a new request we open a new session and starts > a transaction. When the request ends we commit/rollback the transaction and > disposes the session. My understanding was that calling BeginTransaction > wouldn´t really start a transaction until it had something to run against > the database, unfortunately that isn´t the case. Looking at the mysql log i > can see that when BeginTransaction is called "SET SESSION TRANSACTION.... > BEGIN" is directly sent to the database. > > I did a little test with second level cache enabled > 1. Load an entity to get it into the cache > 2. Create 100 threads and let them all request the same object. > > The result was 100 open connections against the database, one meaningful > query against the db that loaded the actual object and 100 queries that > more or less was just begin/commit without any actual queries. This seems > very inefficient, everything is in our cache so the database shouldn´t need > to be bothered at all except for the first query. > > Is this the intended behavior? If yes do you have any recommendations to > avoid this bottleneck? > -- You received this message because you are subscribed to the Google Groups "nhusers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/nhusers. For more options, visit https://groups.google.com/d/optout.
