Ich möchte n Datensätze in eine einzige Tabelle einfügen. Es kann viele gleichzeitige Benutzer geben und sie können Daten aus dieser Tabelle einfügen/aktualisieren/auswählen. Gibt es eine bessere Art und Weise ist in einer solchen Tabelle sagen 1000 Datensätze einzufügen:SQL-Abfrage Leistung einfügen
- einer einzigen SQL-Abfrage an eine Datenbank mit mehreren Einsätzen senden. Dies spart Server für Datenbankaufrufe, aber (ich bin mir nicht sicher) sperrt die Tabelle, bis die Einfügung abgeschlossen ist und alle anderen Abfragen an diese Tabelle warten.
- Teilen Sie 1000 Datensätze in einigen Chunks und senden Sie sie in mehreren SQL-Abfragen. Auf diese Weise können die anderen Abfragen in der Tabelle ausgeführt werden, es wird jedoch Zeit für Server-zu-Datenbank-Aufrufe benötigt.
Ist das etwas hängt, oder gibt es eine einzige Art und Weise, die immer die optimale ist? Kommt es darauf an, ob Transaktionen verwendet werden oder nicht, während Daten eingefügt werden? Gibt es andere bessere Möglichkeiten, einen solchen Einsatz durchzuführen?
Die Datenbank Ich benutze MS SQL, aber es ist interessant, wie es in anderer DB wie Oracle arbeitet.
interessante Blogpost +1. Es macht mein Interesse daran, dass die _reason_ Transaktionen in Ihrem Test schneller erscheinen. Ich vermute, das liegt daran, dass viele der notwendigen Schlösser bereits durch vorherige Pässe belegt wurden. Die eine entscheidende Sache, die Ihr Beitrag jedoch nicht anspricht, ist das Verhalten unter Last. Ihre Tests scheinen isoliert zu sein. In einem Live-System vermute ich, dass die Ergebnisse ziemlich schnell invertieren würden. – EBarr