2016-04-13 19 views
1

Ich bin komplett neue SQL/Datenbank-Anwendungen und probiere eine einfache Kontaktmanagement-Anwendung mit Visual Studio 2015 C#. Ich verwende 'SQL Express LocalDB'. Ich habe auf Google gelesen, dass es für Entwicklungszwecke gedacht ist, aber Microsoft erwähnt auch, dass es für Produktionszwecke auch verwendet werden könnte.C# SQL LocalDB Anwendung Langsame Leistung

Mein Problem ist, dass, wenn ich die Anwendung von meinem Entwicklungssystem ausprobiere, die Anwendung das erste Mal einige Sekunden braucht, um zu laden, aber danach wird jede Abfrage schnell ausgeführt. Wenn ich dies auf einem meiner Freunde-System versuchte, dauert es jedes Mal, wenn ich versuche, eine Abfrage zu verwenden. Die Datenbank besteht nur aus 20-30 Datensätzen.

Ich erstelle neue Verbindung mit 'neue SqlConnection' und dann Befehl ausgeführt von 'neuen SqlCommand' und nach der Ausführung der Abfrage schließe ich die Verbindung. Hier

ist der Code-Schnipsel aus meiner app

SqlConnection sqlConnection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename = ""C:\ContactsDB.mdf""; Integrated Security = True; Connect Timeout = 30";); 
SqlCommand sqlCmd = new SqlCommand(); 
sqlCmd.Connection = sqlConnection; 

sqlCmd.CommandText = "SELECT Id, first_name, last_name from ContactsMaster ORDER BY first_name"; 
sqlConnection.Open(); 
SqlDataReader reader = sqlCmd.ExecuteReader(); 
try 
{ 
    while (reader.Read()) 
    { 
     ListViewItem lvi = new ListViewItem(reader["first_name"]); 
     listViewItems.Add(lvi); 
     lvi.SubItems.Add(reader[0].ToString()); 
    } 
} 
finally 
{ 
    reader.Close(); 
} 
sqlConnection.Close(); 

Q. Sollte ich die Verbindung öffnen, die ganze Zeit, während App läuft? Ich denke nicht, dass dies vorgeschlagen werden sollte. Als ob die App abstürzt, kann die Datenbank beschädigt werden.

Einer der Hintergründe, die sagen, dass LocalDB die Verbindung alle neuen Millisekunden schließt. Also sollte ich die Datenbank alle paar Millisekunden pingen? Oder sollte ich localdb überhaupt nicht in der Produktion verwenden?

Ich möchte die App so machen, dass die Anforderung wirklich niedrig die Datenbankvoraussetzungen rewaridng. Wie LocalDB Installation ist wirklich nahtlos.

Ich habe SQL Server Express nicht verwendet, ist die Express-Installation auch nahtlos wie LocalDB und kann ich die Verbindungszeichenfolge wie LocalDB auch in Express verwenden und den .mdf-Dateinamen direkt angeben?

+0

Hier sind die Updates, nach dem Start der App das erste Mal, wenn wir eine Verbindung zu SQL LocalDB .mdf Datenbank herstellen, die sqlConnection.open() Funktion dauert etwa 10-15 Sekunden. Später in dieser Sitzung dauert das Öffnen der db ungefähr 2 Sekunden. Ich möchte diese 10-15 Sekunden Zeit minimieren. –

Antwort

0

Es gibt viele Dinge zu zählen für ddbb Leistung, es ist keine einfache Frage. Für solch eine kleine Menge von Aufzeichnungen sollte es keine Leistungsprobleme geben. Versuchen Sie, die ddbb-Dateien auf einer anderen als der Betriebssystemfestplatte zu speichern, und noch besser, legen Sie die Datendatei und die Protokolldatei ebenfalls auf verschiedenen Festplatten ab. Über Ihre Frage müssen Verbindungen immer geschlossen und ordnungsgemäß in einem endgültigen Block oder in einem Verwendungsblock angeordnet werden. Sql Express ist sehr einfach zu installieren, und auch eine Verbindungszeichenfolge verwenden, war der größte Unterschied, dass es über das Netzwerk verwendet werden kann.

0

Endlich verschoben auf SQLite und das ist viel schneller im Vergleich zu SQLLocalDB.