2016-10-18 2 views
-3

Ich habe zwei Anwendungen. Man fügt Daten kontinuierlich in die Datenbank ein, wie es eine unendliche Schleife hat.Wie fügt SQL Server Daten parallel zwischen Anwendungen ein?

Wenn die zweite Anwendung Daten in derselben Datenbank und Tabelle einfügt, wird was passieren.

Wenn es wartet, bis die andere Anwendung das Einfügen abgeschlossen hat, was wird damit umgehen?

Oder wird es sagen, es ist beschäftigt?

Oder Code löst eine Ausnahme aus?

+2

Dies hängt von verschiedenen Faktoren ab, wie zum Beispiel von der Transaktion und was ist Ihre Isolationsstufe, was ist Ihr Clustered Index und welche Art von Daten fügen Sie ein. Die Einsätze blockieren nur einen minimalen Teil des Tisches, und wenn der zweite Einsatz nicht in dasselbe Teil eingefügt wird, wird dies gleichzeitig geschehen. –

+1

Ganz zu schweigen von drei verschiedenen DBMS. Die Antwort wird nicht für alle gleich sein. –

+0

Ach ja, habe nicht einmal nachgesehen, ob es mehr als SQL Server gibt, also ignoriere einfach meinen Kommentar, wenn du mit etwas anderem arbeitest - und kennzeichne nur das richtige. –

Antwort

2

SQL-Server haben etwas, das als Verbindungspool bezeichnet wird, was bedeutet, dass mehr als einmal eine Verbindung zur Datenbank zu einem bestimmten Zeitpunkt hergestellt werden kann, und an dieser Stelle endet das einfache Bit.

Wenn Sie zum Beispiel eine Verbindung zur Datenbank in zwei Anwendungen gleichzeitig herstellen und Daten in verschiedenen Tabellen aus jeder Anwendung einfügen, dann könnten die beiden problemlos zur gleichen Zeit ohne Problem passieren.

Wenn jedoch diese Anwendungen wollten die gleiche Zeile so etwas wie bearbeiten zu tun, dann ein Problem gibt es mit „Sperren“ ...

Wesentlichen auf einer SQL-Datenbank jede Operation erfordert auf ein „Set“ „eine Sperre zu erwerben“ oder "row" oder "cell" je nach Konfiguration des Servers ist schwer zu sagen, was in Ihrem Fall passieren könnte.

Also die einfache Antwort lautet: Ja, SQL kann Sachen passieren (wie Einfügungen) zur gleichen Zeit, aber mit einigen Klauseln.

Und lange Antwort ... erfordert eingehende Kenntnisse der Sperrung und Ihrer Datenbank- und Serverkonfiguration.

+0

Aber hier die 1. Anwendung kontinuierlich einfügen. Wird die zweite Anwendung in der Warteschlange eingefügt oder nach Zeit eingefügt, zu der die Abfrage kam. – Louis

+0

das hängt auch von Dingen wie Transaktionen ab ... jede Anweisung wird als eine Transaktion ausgeführt, die in das "Transaktionslog" gestellt wird, aber wenn Sie Anweisungen in eine Transaktion umbrechen, werden alle sofort oder gar nicht ausgeführt. Also muss die zweite App warten, um eine Sperre auf den Tisch zu bekommen. – War

Verwandte Themen