Heim > Datenbank > Oracle > Hauptteil

Wird das Einfügen in Oracle die Tabelle sperren?

WBOY
Freigeben: 2022-05-30 16:29:11
Original
8288 Leute haben es durchsucht

Insert in Oracle sperrt die Tabelle; wenn Oracle DML-Anweisungen wie insert ausführt, wird eine Sperre für die Tabelle angewendet, die gleichzeitig ausgeführt wird blockiert und wartet. Andere Sitzungen werden festgeschrieben oder zurückgesetzt, was zu einem Deadlock führt.

Wird das Einfügen in Oracle die Tabelle sperren?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, Oracle 11g-Version, Dell G3-Computer.

Wird die Tabelle durch Einfügen in Oracle gesperrt?

Wird durch Einfügen in Oracle die Tabelle gesperrt

Wenn ORACLE DML-Anweisungen wie „Einfügen“ ausführt, wird zunächst automatisch eine TM-Sperre auf die auszuführende Tabelle angewendet TM-Sperre erhalten wird, beantragen Sie dann automatisch eine TX-Sperre. Wenn zwei oder mehr Sitzungen die DML-Sprache für denselben Datensatz der Tabelle ausführen, sperrt die erste Sitzung den Datensatz, und die anderen Sitzungen befinden sich im Wartezustand, bis die TX-Sperre aufgehoben wird, nachdem die erste Sitzung festgeschrieben wurde, und die anderen Sitzungen sind nur Sitzungen abschließbar.

Die Überlegung besteht darin, dass zwei Einfügeanweisungen gleichzeitig versucht haben, Daten mit demselben PK oder eindeutigen Wert in eine Tabelle einzufügen, was dazu führte, dass die Sitzung blockiert wurde und auf das Festschreiben oder Zurücksetzen anderer Sitzungen gewartet wurde, was zu einem Deadlock führte.

Solange eine der Sitzungen übermittelt wird, meldet die andere ORA-00001: Eindeutigkeitsbeschränkung wird verletzt und der Deadlock wird beendet, oder eine der Sitzungen wird zurückgesetzt und die andere kann normal ausgeführt werden .

In Oracle besteht der Grund für das Sperren der Tabelle darin, dass, wenn ein Programm eine Einfügung für eine Tabelle ausführt und noch kein Commit durchgeführt wurde, ein anderes Programm ebenfalls eine Einfügung für dieselbe Tabelle ausführt, dann eine Ausnahme wegen Ressourcenauslastung auftritt , Tisch sperren.

Die Hauptgründe für das Sperren von Tabellen sind:

(1) Programm A führt die Einfügung von Tabelle A aus, und vor dem Festschreiben fügt Programm B auch Tabelle A ein. Zu diesem Zeitpunkt tritt eine Ausnahme wegen Ressourcenauslastung auf, bei der es sich um eine Sperre handelt .Table

(2) Tabellensperren erfolgen häufig im Parallelbetrieb und nicht im Parallelbetrieb (wenn ein Thread die Datenbank betreibt, kann der andere Thread das Datenbank-, CPU- und E/A-Zuteilungsprinzip nicht bedienen)

Methoden zur Reduzierung der Wahrscheinlichkeit der Tabellensperre:

(1) Reduzieren Sie die Zeit zwischen der Ausführung von Einfüge-, Aktualisierungs- und Löschanweisungen und dem Festschreiben. Insbesondere wird die Stapelausführung in Einzelausführung geändert und die Nichtausführungsgeschwindigkeit von SQL selbst optimiert

(2) Wenn die Transaktion abnormal zurückgesetzt wird

Der Grund für das Sperren der Tabelle kann sein, dass die Zeilendaten geändert wurden und vergessen zu senden, was ebenfalls dazu führt, dass die Tabelle gesperrt wird.

Wissen erweitern:

Es empfiehlt sich, vor einer Entscheidung den Grund zu prüfen.

1 Der Code für die Sperrtabellenabfrage hat die folgende Form:

select count(*) from v$locked_object;
select * from v$locked_object;
Nach dem Login kopieren

2. Überprüfen Sie, welche Tabelle gesperrt ist

Das obige ist der detaillierte Inhalt vonWird das Einfügen in Oracle die Tabelle sperren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!