murat1895 Geschrieben 24. Juli 2015 Geschrieben 24. Juli 2015 Moinsen! Ich verwende folgenden C# und SQL Code um einen Datenbank-Eintrag zu erledigen. string sql = "insert into runde (akt_rundenzeit, akt_runde, zeitstempel, Event_nr, Team_id) values (@neueRundenzeit,@neueRunde,@neuerZeitstempel,@Event_nr,@Team_id)"; using (MySqlCommand cmd = new MySqlCommand(sql, connection)) { cmd.Parameters.AddWithValue("@neueRundenzeit", neueRundenzeit); cmd.Parameters.AddWithValue("@neueRunde", neueRunde); cmd.Parameters.AddWithValue("@neuerZeitstempel", neuerZeitstempel); cmd.Parameters.AddWithValue("@Event_nr", eventNr); cmd.Parameters.AddWithValue("@Team_id", team_nr); cmd.ExecuteNonQuery(); } Das merkwürdige ist, das dieser Eintrag bei bereits 10.000 vorhandenen Datensätzen in der Tabelle Runde 159 Millisekunden dauert. Gibt es Möglichkeiten, dieses zu beschleunigen? Eine komplexe Select-Anweisung, die unter anderem auf diese Tabelle zugreift, und mit eineren Tabellen verknüpft wird, brauch gerade einmal 11 Millisekunden, um einen entsprechenden Datensatz herauszufiltern. Zitieren
SilentDemise Geschrieben 24. Juli 2015 Geschrieben 24. Juli 2015 den unterschied zwischen insert und select kennst du aber, oder? ;-) Zitieren
murat1895 Geschrieben 25. Juli 2015 Autor Geschrieben 25. Juli 2015 (bearbeitet) Nein, kannst mir den erklären? Natürlich! Immer solche nervigen Gegenfragen.... -.- Bearbeitet 25. Juli 2015 von murat1895 Zitieren
Polar Geschrieben 25. Juli 2015 Geschrieben 25. Juli 2015 Natürlich! Immer solche nervigen Gegenfragen.... -.- Sonst gehts dir aber gut, oder? Zitieren
murat1895 Geschrieben 25. Juli 2015 Autor Geschrieben 25. Juli 2015 Sorry, aber wenn ich hier eine für mich ernst gemeinte Frage stelle, aus der eigentlich eindeutig hervorgehen sollte, dass man den Unterschied zwischen insert und select kennt, fühle ich mich mit einer solchen Frage leicht auf den Arm genommen. Ich frage mich nur, warum die Zeit für das Einfügen eines einfachen Datensatzes in eine Tabelle so hoch ist und ob man dieses irgendwie minimieren kann. Ein Selektieren der Daten würde laut meiner Logik viel mehr Aufwand an der Datenbank bedeuten. Da hier in den entsprechenden Daten gefiltert wird, um Einen entsprechenden Datensatz auszuwählen. Zitieren
MartinSt Geschrieben 25. Juli 2015 Geschrieben 25. Juli 2015 Hast du das gleiche Verhalten, wenn du das SQL direkt auf die DB ausführst statt per Programm? Laufen auf der DB irgendwelche insert-Trigger? Melden die DB-Logs irgendwelche Auffälligkeiten? Zitieren
SilentDemise Geschrieben 25. Juli 2015 Geschrieben 25. Juli 2015 (bearbeitet) Sorry, aber wenn ich hier eine für mich ernst gemeinte Frage stelle, aus der eigentlich eindeutig hervorgehen sollte, dass man den Unterschied zwischen insert und select kennt, fühle ich mich mit einer solchen Frage leicht auf den Arm genommen. Ich frage mich nur, warum die Zeit für das Einfügen eines einfachen Datensatzes in eine Tabelle so hoch ist und ob man dieses irgendwie minimieren kann. Ein Selektieren der Daten würde laut meiner Logik viel mehr Aufwand an der Datenbank bedeuten. Da hier in den entsprechenden Daten gefiltert wird, um Einen entsprechenden Datensatz auszuwählen. Deine Antwort zeigt, dass du es eben nicht verstanden hast. Grundsätzlich ist lesen schneller als schreiben. Je nach Datenbankschema und Optimierung sind hier sehr sehr deutliche Unterschiede möglich, was man beispielsweise durch CQRS auf die Spitze treiben kann. 159ms ist nicht wahnsinnig schnell, aber auch nicht übermäßig langsam. Um die Frage überhaupt beantworten zu können müsste man erstmal wissen wie und unter welchen Voraussetzungen du das ganze betreibst. Aber zu sagen mein Insert ist zu langsam, weil mein Select schnell ist, ist ungefähr so wie zu fragen - meine Reifen sind platt, warum ist mein Auto grün. Bearbeitet 25. Juli 2015 von SilentDemise Zitieren
feuerjinn Geschrieben 18. November 2015 Geschrieben 18. November 2015 Am 14.11.2015, 19:09:34 , Rien sagte: Indizes vorhanden? Gilt ebenfalls nur beim Suchen und nicht beim Schreiben. Zitieren
Rien Geschrieben 18. November 2015 Geschrieben 18. November 2015 vor 19 Minuten, feuerjinn sagte: Gilt ebenfalls nur beim Suchen und nicht beim Schreiben. Die Geschwindigkeit einer insert-Anweisung hängt im Wesentlichen von der Anzahl der Indizes auf der Tabelle ab. Je mehr Indizes, desto langsamer die Ausführung. Da diese nach jedem insert aktualisiert werden. Jedoch bringen diese Performance beim Lesen, dass ist richtig. lilith2k3 reagierte darauf 1 Zitieren
Hellspawn304 Geschrieben 18. November 2015 Geschrieben 18. November 2015 Ich glaube in dem Fall hier ist das größte Problem der Commit nach jedem Datensatz. Eine Bulk-Verarbeitung wäre hier sicher sinnvoller und auch schneller, denn das Persistieren frist die meiste Zeit beim insert. Rien reagierte darauf 1 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.