Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Oledb connection pooling?
Message
From
06/03/2011 11:04:04
 
 
To
06/03/2011 10:40:08
General information
Forum:
ASP.NET
Category:
Other
Environment versions
Environment:
VB 8.0
OS:
Vista
Network:
Windows XP
Database:
Jet/Access Engine
Application:
Desktop
Miscellaneous
Thread ID:
01502760
Message ID:
01502772
Views:
37
>>>Check out the following tests
>>>Testconnections2 returned 0.23 seconds, Testconnections3 returned 4.68 seconds, that's a factor of 20 slower. If there is any pooling done here, it's either not working for me, or it's kind of not very effective.
>>>What am I missing?
>>>
>>>    Public Sub testConnections2()
>>>        Dim cmd As New OleDbCommand
>>>        Dim da As New OleDbDataAdapter(cmd)
>>>        Dim conn As New OleDbConnection
>>>        Dim dt As New DataTable
>>>        conn.ConnectionString = My.Settings.b040_beConnectionString
>>>        conn.Open()
>>>        cmd.Connection = conn
>>>        Dim n As Long
>>>        Dim t As Date = Now
>>>        For i As Integer = 1 To 100
>>>            cmd.CommandText = "select Art_id from Artikel where Art_nr = '  125'"
>>>            n = cmd.ExecuteScalar()
>>>            cmd.CommandText = "select * from artikel where Art_Nr = '  125'"
>>>            da.Fill(dt)
>>>        Next
>>>        Debug.Print((Now() - t).ToString)
>>>    End Sub
>>>    Public Sub testConnections3()
>>>        Dim cmd As New OleDbCommand
>>>        Dim da As New OleDbDataAdapter(cmd)
>>>        Dim conn As New OleDbConnection
>>>        Dim dt As New DataTable
>>>        conn.ConnectionString = My.Settings.b040_beConnectionString
>>>        cmd.Connection = conn
>>>        Dim n As Long
>>>        Dim t As Date = Now
>>>        For i As Integer = 1 To 100
>>>            conn.Open()
>>>            cmd.CommandText = "select Art_id from Artikel where Art_nr = '  125'"
>>>            n = cmd.ExecuteScalar()
>>>            cmd.CommandText = "select * from artikel where Art_Nr = '  125'"
>>>            da.Fill(dt)
>>>            conn.Close()
>>>        Next
>>>        Debug.Print((Now() - t).ToString)
>>>    End Sub
>>>
>>
>>Look at it the other way:
>>testConnection2 opened the connection once and took .23
>>Assuming testConnection3 also took .23 the first time then the next 99 took only 4.45 i.e ~ .045 per connection = 5 times faster.
>
>
>I think that if you take the code below out of the loop you'll have a better idea of the time conn.Open() takes after the first time
>
>testConnection2 = time to open once
>testConnection3 = test to open a hundred times
>
>
>>            cmd.CommandText = "select Art_id from Artikel where Art_nr = '  125'"
>>            n = cmd.ExecuteScalar()
>>            cmd.CommandText = "select * from artikel where Art_Nr = '  125'"
>>            da.Fill(dt)
>
:-} :
System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connectionString);

           System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
           sw.Start();
           conn.Open();
           conn.Close();
           Console.WriteLine(sw.ElapsedTicks);
           for (int x = 0 ; x <1000; x++)
           {
               conn.Open();
               conn.Close();
           }
           Console.WriteLine(sw.ElapsedTicks);
1756136
1919864
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform