Heim Backend-Entwicklung PHP-Tutorial 几个线程同时进行事务并发的有关问题。

几个线程同时进行事务并发的有关问题。

Jun 13, 2016 pm 01:23 PM
for insert lock select update

几个线程同时进行事务并发的问题。。

几个线程同时进行事务A。。

如果事务A里面有一个步骤1:是对某一个表某条固定记录进行更新操作的。。

问题1:那是不是表行会被锁住,线程之间后一个必须等前一个提交事务才继续(“运行”还是“提交事务”)?

事务A有一个步骤2:是对某个表进行INSERT记录的;
事务A提交前还有一个步骤3:是比较步骤2的数据,如果出现INSERT的记录超过要求,就回滚。。

问题2:如果问题1的答案是提交事务,如果发生并发,步骤3这一步是不是没用了,检测不了?如果答案是运行,那可以防并发吗?

问题3:如果问题2解决不了,是不是一定要在步骤2 INSERT记录前进行这个表的SELECT FOR UPDATE进行行锁?这应该可以解决并发了吧,有没人其它办法呀。

希望有前辈指导一下,谢谢。。。





------解决方案--------------------
问题3:如果问题2解决不了,是不是一定要在步骤2 INSERT记录前进行这个表的SELECT FOR UPDATE进行行锁?这应该可以解决并发了吧,有没人其它办法呀。

上边都不说了,这个问题是关键。 一定要for update锁住,你完全可以认为for update就是lock加锁,只有这样才能保证原子性,否则一个这样的事务真心没法原子性:

1,查询A
2,A满足条件则更新A

如果1,2不是原子的,那么查询A和更新A中间会有其他操作修改A,怎么办?把1,2整体锁住就行了,for update是一种办法,尤其是innodb可以行锁,所以比直接lock table好用。

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

17 Möglichkeiten, den Bluescreen „kernel_security_check_failure' zu beheben 17 Möglichkeiten, den Bluescreen „kernel_security_check_failure' zu beheben Feb 12, 2024 pm 08:51 PM

Kernelsecuritycheckfailure (Kernel-Check-Fehler) ist eine relativ häufige Art von Stoppcode. Unabhängig vom Grund führt der Bluescreen-Fehler jedoch dazu, dass viele Benutzer diese Seite sorgfältig vorstellen. 17 Lösungen für den Bluescreen „kernel_security_check_failure“ Methode 1: Entfernen Sie alle externen Geräte Wenn ein externes Gerät, das Sie verwenden, nicht mit Ihrer Windows-Version kompatibel ist, kann der Bluescreen-Fehler „Kernelsecuritycheckfailure“ auftreten. Dazu müssen Sie alle externen Geräte trennen, bevor Sie versuchen, Ihren Computer neu zu starten.

Wie deinstalliere ich Skype for Business unter Win10? So deinstallieren Sie Skype vollständig auf Ihrem Computer Wie deinstalliere ich Skype for Business unter Win10? So deinstallieren Sie Skype vollständig auf Ihrem Computer Feb 13, 2024 pm 12:30 PM

Kann Win10 Skype deinstalliert werden? Diese Frage möchten viele Benutzer wissen, da viele Benutzer feststellen, dass diese Anwendung im Standardprogramm auf ihren Computern enthalten ist, und sie befürchten, dass das Löschen den Betrieb des Systems beeinträchtigt Diese Website hilft Benutzern. Schauen wir uns genauer an, wie Skype for Business unter Win10 deinstalliert wird. So deinstallieren Sie Skype for Business unter Win10 1. Klicken Sie auf dem Computerdesktop auf das Windows-Symbol und dann zum Aufrufen auf das Einstellungssymbol. 2. Klicken Sie auf „Übernehmen“. 3. Geben Sie „Skype“ in das Suchfeld ein und klicken Sie, um das gefundene Ergebnis auszuwählen. 4. Klicken Sie auf „Deinstallieren“. 5

Lösung für hohe CPU-Auslastung der Microsoft-Kompatibilitätstelemetrie Lösung für hohe CPU-Auslastung der Microsoft-Kompatibilitätstelemetrie Mar 16, 2024 pm 10:16 PM

Wenn wir das Win10-System verwenden, kommt es manchmal vor, dass der Computer hängen bleibt. Wenn wir dann den Hintergrundprozess überprüfen, stellen wir fest, dass ein Microsoft-Kompatibilitätstelemetrieprozess besonders viele Ressourcen beansprucht. Benutzer können versuchen, die Schutzsoftware von Drittanbietern zu deinstallieren und dann einen sauberen Neustart durchzuführen. Lassen Sie diese Website den Benutzern die Lösung für die hohe CPU-Auslastung von Microsoftcompatibilitytelemetry sorgfältig vorstellen. Lösung für die hohe CPU-Auslastung von Microsoftcompatibilitytelemetry Methode 1: Versuchen Sie es nach der Deinstallation der Schutzsoftware des Drittanbieters

KDE Plasma 6.1 bringt viele Verbesserungen für den beliebten Linux-Desktop KDE Plasma 6.1 bringt viele Verbesserungen für den beliebten Linux-Desktop Jun 23, 2024 am 07:54 AM

Nach mehreren Vorabversionen stellte das KDE Plasma-Entwicklungsteam am 28. Februar Version 6.0 seiner Desktop-Umgebung für Linux- und BSD-Systeme vor und nutzte dabei erstmals das Qt6-Framework. KDE Plasma 6.1 verfügt jetzt über eine Reihe neuer Funktionen

Asynchrone Verarbeitungsmethode von Select Channels Go zur gleichzeitigen Programmierung mit Golang Asynchrone Verarbeitungsmethode von Select Channels Go zur gleichzeitigen Programmierung mit Golang Sep 28, 2023 pm 05:27 PM

Asynchrone Verarbeitungsmethode der gleichzeitigen Programmierung von SelectChannelsGo mit Golang Einführung: Die gleichzeitige Programmierung ist ein wichtiger Bereich in der modernen Softwareentwicklung, der die Leistung und Reaktionsfähigkeit von Anwendungen effektiv verbessern kann. In der Go-Sprache kann die gleichzeitige Programmierung mithilfe von Channels- und Select-Anweisungen einfach und effizient implementiert werden. In diesem Artikel wird die Verwendung von Golang für die asynchrone Verarbeitungsmethode der gleichzeitigen Programmierung von SelectChannelsGo vorgestellt und spezifische Informationen bereitgestellt

So verbergen Sie das ausgewählte Element in jquery So verbergen Sie das ausgewählte Element in jquery Aug 15, 2023 pm 01:56 PM

So verbergen Sie das Select-Element in JQuery: 1. Methode hide (), fügen Sie die jQuery-Bibliothek in die HTML-Seite ein, Sie können verschiedene Selektoren verwenden, um das Select-Element auszublenden, der ID-Selektor ersetzt die SelectId durch die ID des von Ihnen ausgewählten Elements tatsächlich verwenden; 2. css()-Methode, verwenden Sie den ID-Selektor, um das ausgewählte Element auszuwählen, das ausgeblendet werden muss, verwenden Sie die css()-Methode, um das Anzeigeattribut auf „none“ zu setzen, und ersetzen Sie selectId durch die ID des ausgewählten Elements.

Was ist der Unterschied zwischen Einfügen, Ignorieren, Einfügen und Ersetzen in MySQL? Was ist der Unterschied zwischen Einfügen, Ignorieren, Einfügen und Ersetzen in MySQL? May 29, 2023 pm 04:40 PM

Der Unterschied zwischen insertignore-, insert- und replacement-Anweisungen ist bereits vorhanden oder nicht. ;replace Ersetzen und einfügen replacementintonames(name,age)values("Xiao Ming", 25); Tabellenanforderungen: PrimaryKey oder eindeutiges Indexergebnis: Die Tabellen-ID wird automatisch erhöht. Testcode erstellt Tabelle

So verwenden Sie die UPDATE-Anweisung in SQL So verwenden Sie die UPDATE-Anweisung in SQL Jun 02, 2023 pm 09:13 PM

SQLUPDATE-Anweisung Die Update-Anweisung wird zum Ändern der Daten in der Tabelle verwendet. Die Syntax lautet wie folgt: UPDATE Tabellenname SET Spaltenname = neuer Wert WHERE Spaltenname = bestimmter Wert „Person“-Tabelle: LastNameFirstNameAddressCityGatesBillXuanwumen10BeijingWilsonChamps-Elysees Eine Spalte in einer bestimmten Zeile aktualisieren UPDATEPerson SETFirstName="Fred" WHERELastName="Wilson" Ergebnis: LastNa

See all articles