/ / C # ODBC-Verbindungsverfügbarkeit - C #, ODBC, Datenbank-Performance

C # ODBC-Verbindungsverfügbarkeitsleistung - C #, ODBC, Datenbank-Performance

Ich versuche die Leistung meiner zu steigernAnwendung. Bei der Untersuchung der Datenbankabfrage stellte ich fest, dass die Berechnungszeit beim Abfragen zum größten Teil auf das Schließen und das Entsorgen einer Verbindung zurückzuführen ist.
Bei einer Gesamtabfragezeit von (durchschnittlich) 76 ms werden etwa 10 ms zum Öffnen der Verbindung und zum Löschen der Abfrage verwendet. Die anderen 66 ms werden verwendet, um die Verbindung nach dem Beenden der Verbindung zu trennen using Aussage. Ich habe mich gefragt, ob es normal ist, dass mehr als 85% der Berechnungszeit für die Einrichtung einer Verbindung benötigt werden. Gibt es eine Möglichkeit, dies zu reduzieren, was meine Leistung erheblich verbessern würde?

Mein Code:

public String executeScalarCommandString(String conString, OdbcCommand command)
{
//starting stopwatch here
String result = "";
using (OdbcConnection connection = new OdbcConnection(conString))
{
try
{
command.Connection = connection;
command.CommandType = CommandType.Text;
connection.Open();
object obj = command.ExecuteScalar();
if (obj != null && DBNull.Value != obj)
result = obj.ToString();
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString());
}
//stop and restart stopwatch here. Avg elapsed time: 10 ms
}
//stop stopwatch here. Avg elapsed time: 76 ms
return result;
}

Zu Ihrer Information: Aus verschiedenen Gründen verwende ich die veraltete Access Jet Engine.
Ich plane, zu SQL Server zu wechseln, wenn es möglich ist. Wie würde sich dies auf meine Leistung auswirken?

Antworten:

1 für die Antwort № 1

Wenn Sie die Leistung steigern möchten, können Sie am besten die vorherigen Verbindungen verwenden, um die Aufgabe auszuführen, damit Sie die Verbindungen nicht öffnen und schließen müssen jedes Mal, wenn Sie den Befehl ausführen

public String executeScalarCommandString(String conString, OdbcCommand command)
{
//starting stopwatch here
String result = "";
// remember we have already a connection which already open
// so we dont have to create new connection
/* we dont need this :: using (OdbcConnection connection = new OdbcConnection(conString))*/
{
try
{
// i"ll assume the connection already on command object
//command.Connection = connection;
command.CommandType = CommandType.Text;
//connection.Open();
object obj = command.ExecuteScalar();
if (obj != null && DBNull.Value != obj)
result = obj.ToString();
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString());
}
//stop and restart stopwatch here. Avg elapsed time: 10 ms
}
//stop stopwatch here. Avg elapsed time: 76 ms
return result;
}

Ich hoffe das hilft