jomon
10-25-2004, 02:41 PM
Hi Guys, first time posting here. I wrote some code to test the performance of VB when accessing an oracle database or a SQL server database. For some reason, my test seem to indicate that VB can access our SQL server database running on a server with dual Pentium processors (10K server) a lot faster than it can acces our Oracler database sitting on a SUN serve with Quad Processors (170K server). The test involves opening identical tables in both SQL server and Oracle then looping through 30,000 records. On average, VB was able to loop through 30K records in 2 seconds using SQL server while Oracle took 11 seconds (using the oracle in process object) and 8 seconds using OLEDB/ADODB. Anyway, here's the code for all 3 tests. Can anyone tell me how to improve VB's performance when accessing oracle?
Private Sub Test_Oracle_InProcServer()
On Error Resume Next
Dim strtest As String
Dim dattTest As Date
Dim strSQL As String
Dim strps As Variant
Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraRecordset As OraDynaset
Dim i As Long
strSQL = "Select * From hopprod.slam_call_history"
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase("Kermit", "system/manager", 0)
Set OraRecordset = OraDatabase.CreateDynaset(strSQL, ORADYN_NOCACHE)
i = 0
Label1.Caption = Now
DoEvents
Do While Not OraRecordset.EOF And i <= 30000
strtest = OraRecordset!Q_RESPONSIBLE_PEOPLE
strtest = OraRecordset!Q_UID
strtest = OraRecordset!Q_CUST_DATABASENUMBER
strtest = OraRecordset!Q_CUST_ACCOUNTNUMBER
strtest = OraRecordset!Q_CUST_FULLACCOUNTNUMBER
strtest = OraRecordset!Q_RESPONSIBLE_PEOPLE
strtest = OraRecordset!Q_RESPONSIBLE_DEPARTMENTS
strtest = OraRecordset!Q_STATUSES
strtest = OraRecordset!Q_TASKS
strtest = OraRecordset!Q_SYSTEM
dattTest = OraRecordset!Q_TIMESTAMP
dattTest = OraRecordset!Q_CREATIONDATE
dattTest = OraRecordset!Q_CREATIONDATETIME
strtest = OraRecordset!Q_COMMENT_HISTORY
strtest = OraRecordset!Q_REMINDERS
dattTest = OraRecordset!CREATED_DATETIME
strtest = OraRecordset!Q_CUST_NAME
strtest = OraRecordset!Q_DOCUMENT_TYPE
strtest = OraRecordset!CREATED_BY
dattTest = OraRecordset!LAST_MODIFIED
strtest = OraRecordset!Q_STATUS
strtest = OraRecordset!Q_TANKS
strtest = OraRecordset!Q_SVCLOCS
dattTest = OraRecordset!MODIFIED_DATETIME
strtest = OraRecordset!P_UID
i = i + 1
OraRecordset.MoveNext
Loop
Label2.Caption = Now
Set OraRecordset = Nothing
Set OraDatabase = Nothing
Set OraSession = Nothing
End Sub
Private Sub Test_SQL_Server()
On Error Resume Next
Label1.Caption = ""
Label2.Caption = ""
Dim strtest As String
Dim dattTest As Date
Dim strSQL As String
Dim strps As Variant
Dim OraSession As New ADODB.Connection
Dim OraRecordset As New ADODB.Recordset
OraSession.Open "Dsn=HOP_Datawarehouse"
Dim i As Long
strSQL = "Select * From slam_call_history"
Set OraRecordset = OraSession.Execute(strSQL, , adOpenForwardOnly)
i = 0
Label1.Caption = Now
DoEvents
Do While Not OraRecordset.EOF And i <= 30000
strtest = OraRecordset!Q_RESPONSIBLE_PEOPLE
strtest = OraRecordset!Q_UID
strtest = OraRecordset!Q_CUST_DATABASENUMBER
strtest = OraRecordset!Q_CUST_ACCOUNTNUMBER
strtest = OraRecordset!Q_CUST_FULLACCOUNTNUMBER
strtest = OraRecordset!Q_RESPONSIBLE_PEOPLE
strtest = OraRecordset!Q_RESPONSIBLE_DEPARTMENTS
strtest = OraRecordset!Q_STATUSES
strtest = OraRecordset!Q_TASKS
strtest = OraRecordset!Q_SYSTEM
dattTest = OraRecordset!Q_TIMESTAMP
dattTest = OraRecordset!Q_CREATIONDATE
dattTest = OraRecordset!Q_CREATIONDATETIME
strtest = OraRecordset!Q_COMMENT_HISTORY
strtest = OraRecordset!Q_REMINDERS
dattTest = OraRecordset!CREATED_DATETIME
strtest = OraRecordset!Q_CUST_NAME
strtest = OraRecordset!Q_DOCUMENT_TYPE
strtest = OraRecordset!CREATED_BY
dattTest = OraRecordset!LAST_MODIFIED
strtest = OraRecordset!Q_STATUS
strtest = OraRecordset!Q_TANKS
strtest = OraRecordset!Q_SVCLOCS
dattTest = OraRecordset!MODIFIED_DATETIME
strtest = OraRecordset!P_UID
i = i + 1
OraRecordset.MoveNext
Loop
Label2.Caption = Now
End Sub
Private Sub Test_Oracle_OLEDB()
On Error Resume Next
Label1.Caption = ""
Label2.Caption = ""
Dim strtest As String
Dim dattTest As Date
Dim strSQL As String
Dim strps As Variant
Dim OraSession As New ADODB.Connection
OraSession.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=kermit;" & _
"User ID=system;Password=manager;"
OraSession.Open
Dim OraRecordset As New ADODB.Recordset
Dim i As Long
strSQL = "Select * From hopprod.slam_call_history"
Set OraRecordset = OraSession.Execute(strSQL, , adOpenForwardOnly)
i = 0
Label1.Caption = Now
DoEvents
Do While Not OraRecordset.EOF And i <= 30000
strtest = OraRecordset!Q_RESPONSIBLE_PEOPLE
strtest = OraRecordset!Q_UID
strtest = OraRecordset!Q_CUST_DATABASENUMBER
strtest = OraRecordset!Q_CUST_ACCOUNTNUMBER
strtest = OraRecordset!Q_CUST_FULLACCOUNTNUMBER
strtest = OraRecordset!Q_RESPONSIBLE_PEOPLE
strtest = OraRecordset!Q_RESPONSIBLE_DEPARTMENTS
strtest = OraRecordset!Q_STATUSES
strtest = OraRecordset!Q_TASKS
strtest = OraRecordset!Q_SYSTEM
dattTest = OraRecordset!Q_TIMESTAMP
dattTest = OraRecordset!Q_CREATIONDATE
dattTest = OraRecordset!Q_CREATIONDATETIME
strtest = OraRecordset!Q_COMMENT_HISTORY
strtest = OraRecordset!Q_REMINDERS
dattTest = OraRecordset!CREATED_DATETIME
strtest = OraRecordset!Q_CUST_NAME
strtest = OraRecordset!Q_DOCUMENT_TYPE
strtest = OraRecordset!CREATED_BY
dattTest = OraRecordset!LAST_MODIFIED
strtest = OraRecordset!Q_STATUS
strtest = OraRecordset!Q_TANKS
strtest = OraRecordset!Q_SVCLOCS
dattTest = OraRecordset!MODIFIED_DATETIME
strtest = OraRecordset!P_UID
i = i + 1
OraRecordset.MoveNext
Loop
Label2.Caption = Now
End Sub
Private Sub Test_Oracle_InProcServer()
On Error Resume Next
Dim strtest As String
Dim dattTest As Date
Dim strSQL As String
Dim strps As Variant
Dim OraSession As OraSession
Dim OraDatabase As OraDatabase
Dim OraRecordset As OraDynaset
Dim i As Long
strSQL = "Select * From hopprod.slam_call_history"
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase("Kermit", "system/manager", 0)
Set OraRecordset = OraDatabase.CreateDynaset(strSQL, ORADYN_NOCACHE)
i = 0
Label1.Caption = Now
DoEvents
Do While Not OraRecordset.EOF And i <= 30000
strtest = OraRecordset!Q_RESPONSIBLE_PEOPLE
strtest = OraRecordset!Q_UID
strtest = OraRecordset!Q_CUST_DATABASENUMBER
strtest = OraRecordset!Q_CUST_ACCOUNTNUMBER
strtest = OraRecordset!Q_CUST_FULLACCOUNTNUMBER
strtest = OraRecordset!Q_RESPONSIBLE_PEOPLE
strtest = OraRecordset!Q_RESPONSIBLE_DEPARTMENTS
strtest = OraRecordset!Q_STATUSES
strtest = OraRecordset!Q_TASKS
strtest = OraRecordset!Q_SYSTEM
dattTest = OraRecordset!Q_TIMESTAMP
dattTest = OraRecordset!Q_CREATIONDATE
dattTest = OraRecordset!Q_CREATIONDATETIME
strtest = OraRecordset!Q_COMMENT_HISTORY
strtest = OraRecordset!Q_REMINDERS
dattTest = OraRecordset!CREATED_DATETIME
strtest = OraRecordset!Q_CUST_NAME
strtest = OraRecordset!Q_DOCUMENT_TYPE
strtest = OraRecordset!CREATED_BY
dattTest = OraRecordset!LAST_MODIFIED
strtest = OraRecordset!Q_STATUS
strtest = OraRecordset!Q_TANKS
strtest = OraRecordset!Q_SVCLOCS
dattTest = OraRecordset!MODIFIED_DATETIME
strtest = OraRecordset!P_UID
i = i + 1
OraRecordset.MoveNext
Loop
Label2.Caption = Now
Set OraRecordset = Nothing
Set OraDatabase = Nothing
Set OraSession = Nothing
End Sub
Private Sub Test_SQL_Server()
On Error Resume Next
Label1.Caption = ""
Label2.Caption = ""
Dim strtest As String
Dim dattTest As Date
Dim strSQL As String
Dim strps As Variant
Dim OraSession As New ADODB.Connection
Dim OraRecordset As New ADODB.Recordset
OraSession.Open "Dsn=HOP_Datawarehouse"
Dim i As Long
strSQL = "Select * From slam_call_history"
Set OraRecordset = OraSession.Execute(strSQL, , adOpenForwardOnly)
i = 0
Label1.Caption = Now
DoEvents
Do While Not OraRecordset.EOF And i <= 30000
strtest = OraRecordset!Q_RESPONSIBLE_PEOPLE
strtest = OraRecordset!Q_UID
strtest = OraRecordset!Q_CUST_DATABASENUMBER
strtest = OraRecordset!Q_CUST_ACCOUNTNUMBER
strtest = OraRecordset!Q_CUST_FULLACCOUNTNUMBER
strtest = OraRecordset!Q_RESPONSIBLE_PEOPLE
strtest = OraRecordset!Q_RESPONSIBLE_DEPARTMENTS
strtest = OraRecordset!Q_STATUSES
strtest = OraRecordset!Q_TASKS
strtest = OraRecordset!Q_SYSTEM
dattTest = OraRecordset!Q_TIMESTAMP
dattTest = OraRecordset!Q_CREATIONDATE
dattTest = OraRecordset!Q_CREATIONDATETIME
strtest = OraRecordset!Q_COMMENT_HISTORY
strtest = OraRecordset!Q_REMINDERS
dattTest = OraRecordset!CREATED_DATETIME
strtest = OraRecordset!Q_CUST_NAME
strtest = OraRecordset!Q_DOCUMENT_TYPE
strtest = OraRecordset!CREATED_BY
dattTest = OraRecordset!LAST_MODIFIED
strtest = OraRecordset!Q_STATUS
strtest = OraRecordset!Q_TANKS
strtest = OraRecordset!Q_SVCLOCS
dattTest = OraRecordset!MODIFIED_DATETIME
strtest = OraRecordset!P_UID
i = i + 1
OraRecordset.MoveNext
Loop
Label2.Caption = Now
End Sub
Private Sub Test_Oracle_OLEDB()
On Error Resume Next
Label1.Caption = ""
Label2.Caption = ""
Dim strtest As String
Dim dattTest As Date
Dim strSQL As String
Dim strps As Variant
Dim OraSession As New ADODB.Connection
OraSession.ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=kermit;" & _
"User ID=system;Password=manager;"
OraSession.Open
Dim OraRecordset As New ADODB.Recordset
Dim i As Long
strSQL = "Select * From hopprod.slam_call_history"
Set OraRecordset = OraSession.Execute(strSQL, , adOpenForwardOnly)
i = 0
Label1.Caption = Now
DoEvents
Do While Not OraRecordset.EOF And i <= 30000
strtest = OraRecordset!Q_RESPONSIBLE_PEOPLE
strtest = OraRecordset!Q_UID
strtest = OraRecordset!Q_CUST_DATABASENUMBER
strtest = OraRecordset!Q_CUST_ACCOUNTNUMBER
strtest = OraRecordset!Q_CUST_FULLACCOUNTNUMBER
strtest = OraRecordset!Q_RESPONSIBLE_PEOPLE
strtest = OraRecordset!Q_RESPONSIBLE_DEPARTMENTS
strtest = OraRecordset!Q_STATUSES
strtest = OraRecordset!Q_TASKS
strtest = OraRecordset!Q_SYSTEM
dattTest = OraRecordset!Q_TIMESTAMP
dattTest = OraRecordset!Q_CREATIONDATE
dattTest = OraRecordset!Q_CREATIONDATETIME
strtest = OraRecordset!Q_COMMENT_HISTORY
strtest = OraRecordset!Q_REMINDERS
dattTest = OraRecordset!CREATED_DATETIME
strtest = OraRecordset!Q_CUST_NAME
strtest = OraRecordset!Q_DOCUMENT_TYPE
strtest = OraRecordset!CREATED_BY
dattTest = OraRecordset!LAST_MODIFIED
strtest = OraRecordset!Q_STATUS
strtest = OraRecordset!Q_TANKS
strtest = OraRecordset!Q_SVCLOCS
dattTest = OraRecordset!MODIFIED_DATETIME
strtest = OraRecordset!P_UID
i = i + 1
OraRecordset.MoveNext
Loop
Label2.Caption = Now
End Sub