Heim Datenbank MySQL-Tutorial SQL 事务与并发

SQL 事务与并发

Jun 07, 2016 pm 05:44 PM
事务 并发

a) 应用程序事务与数据库存储引擎事务 b) 应用程序处理并发与数据库存储引擎处理并发 为什么要从两个方向来考虑呢,是有原因的,首先机制处理方式,以及在软件中的所处的环境以及情节都不同。所以我们可以将事务与并发分为两个部分来讲,这文主要讲MSSQL的事

a) 应用程序事务与数据库存储引擎事务

b) 应用程序处理并发与数据库存储引擎处理并发

为什么要从两个方向来考虑呢,是有原因的,首先机制处理方式,以及在软件中的所处的环境以及情节都不同。所以我们可以将事务与并发分为两个部分来讲,这文主要讲MSSQL的事务,我会在接下来的文章谈谈java或者C#处理事务以及结合Martin Fowler说到的并发架构模式探讨。

什么是事务呢?

引言:
假设小强有两张银行卡A和B,卡A内有1000元存款。一天,小强来到银行,打算将卡A中的200元转账到卡B中。当工作人员刚打卡A中的金额减少200元时,银行突然停电了(这种情况并不多见,香港服务器,我们假设银行也没有备用电源)。那么,恢复供电后,小强查询卡A的金额,会出现怎样的情况?

答案是肯定的,还是1000元。这是因为卡B并没有增加200元。但明明工作人员已经将卡A减少了200元,为何还有1000元呢?这就是事务技术的神奇之处。

所谓事务,指的是一个单元的工作。这个单元中可能包括很多工作步骤,服务器空间,它们要么全做,要么全不做。数据库中执行的操作都是以事务为单元进行的。例如,小强将卡A的钱转到卡B,包括两个步骤:从卡A中减少200元和将卡B增加200元,这就是一个事务。如果只做了第一步,未做第二步,则第一步操作也会被撤销。

MSDN给出的定义:事务是作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务。

事务执行模式

1.自动提交事务(SQL Server默认的事务执行模式)

2.显示事务(begin transaction,commit,rollback)

事务以begin transaction 开始,以commit(提交)或rollback(发生故障时,回滚)结束

例1:假设在选修表中,美国服务器,学号'1002'的学生由于某些原因不选1号课程而改选4号课程,并且该课程的考试成绩为80分。

如果我们将这两个步骤定义为一个事务的话,代码如下:

begin transaction update 选修 学号=and 课程号= go update 选修 and 课程号= commit select * from 选修

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)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 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)

Wie können Parallelität und Multithreading von Java-Funktionen die Leistung verbessern? Wie können Parallelität und Multithreading von Java-Funktionen die Leistung verbessern? Apr 26, 2024 pm 04:15 PM

Parallelitäts- und Multithreading-Techniken mithilfe von Java-Funktionen können die Anwendungsleistung verbessern, einschließlich der folgenden Schritte: Parallelitäts- und Multithreading-Konzepte verstehen. Nutzen Sie die Parallelitäts- und Multithreading-Bibliotheken von Java wie ExecutorService und Callable. Üben Sie Fälle wie die Multithread-Matrixmultiplikation, um die Ausführungszeit erheblich zu verkürzen. Genießen Sie die Vorteile einer erhöhten Reaktionsgeschwindigkeit der Anwendung und einer optimierten Verarbeitungseffizienz durch Parallelität und Multithreading.

Anwendung von Parallelität und Coroutinen im Golang-API-Design Anwendung von Parallelität und Coroutinen im Golang-API-Design May 07, 2024 pm 06:51 PM

Parallelität und Coroutinen werden im GoAPI-Design für Folgendes verwendet: Hochleistungsverarbeitung: Mehrere Anfragen gleichzeitig verarbeiten, um die Leistung zu verbessern. Asynchrone Verarbeitung: Verwenden Sie Coroutinen, um Aufgaben (z. B. das Senden von E-Mails) asynchron zu verarbeiten und den Hauptthread freizugeben. Stream-Verarbeitung: Verwenden Sie Coroutinen, um Datenströme (z. B. Datenbanklesevorgänge) effizient zu verarbeiten.

Wie verarbeitet die Java-Datenbankverbindung Transaktionen und Parallelität? Wie verarbeitet die Java-Datenbankverbindung Transaktionen und Parallelität? Apr 16, 2024 am 11:42 AM

Transaktionen gewährleisten die Integrität der Datenbankdaten, einschließlich Atomizität, Konsistenz, Isolation und Haltbarkeit. JDBC verwendet die Verbindungsschnittstelle, um die Transaktionssteuerung bereitzustellen (setAutoCommit, Commit, Rollback). Parallelitätskontrollmechanismen koordinieren gleichzeitige Vorgänge mithilfe von Sperren oder optimistischer/pessimistischer Parallelitätskontrolle, um eine Transaktionsisolation zu erreichen und Dateninkonsistenzen zu verhindern.

Eine Anleitung zum Unit-Testen gleichzeitiger Go-Funktionen Eine Anleitung zum Unit-Testen gleichzeitiger Go-Funktionen May 03, 2024 am 10:54 AM

Das Testen gleichzeitiger Funktionen in Einheiten ist von entscheidender Bedeutung, da dies dazu beiträgt, ihr korrektes Verhalten in einer gleichzeitigen Umgebung sicherzustellen. Beim Testen gleichzeitiger Funktionen müssen grundlegende Prinzipien wie gegenseitiger Ausschluss, Synchronisation und Isolation berücksichtigt werden. Gleichzeitige Funktionen können Unit-Tests unterzogen werden, indem Rennbedingungen simuliert, getestet und Ergebnisse überprüft werden.

Was sind die am häufigsten verwendeten Parallelitätstools in Java-Funktionsbibliotheken? Was sind die am häufigsten verwendeten Parallelitätstools in Java-Funktionsbibliotheken? Apr 30, 2024 pm 01:39 PM

Die Java-Parallelitätsbibliothek bietet eine Vielzahl von Tools, darunter: Thread-Pool: Wird zum Verwalten von Threads und zur Verbesserung der Effizienz verwendet. Sperre: Wird zum Synchronisieren des Zugriffs auf gemeinsam genutzte Ressourcen verwendet. Barriere: Wird verwendet, um darauf zu warten, dass alle Threads einen bestimmten Punkt erreichen. Atomare Operationen: unteilbare Einheiten, die die Thread-Sicherheit gewährleisten. Gleichzeitige Warteschlange: Eine Thread-sichere Warteschlange, die den gleichzeitigen Betrieb mehrerer Threads ermöglicht.

Wie verwende ich atomare Klassen in der Parallelität und im Multithreading von Java-Funktionen? Wie verwende ich atomare Klassen in der Parallelität und im Multithreading von Java-Funktionen? Apr 28, 2024 pm 04:12 PM

Atomare Klassen sind threadsichere Klassen in Java, die unterbrechungsfreie Vorgänge ermöglichen und für die Gewährleistung der Datenintegrität in gleichzeitigen Umgebungen von entscheidender Bedeutung sind. Java stellt die folgenden atomaren Klassen bereit: AtomicIntegerAtomicLongAtomicReferenceAtomicBoolean Diese Klassen stellen Methoden zum Abrufen, Festlegen und Vergleichen von Werten bereit, um sicherzustellen, dass der Vorgang atomar ist und nicht durch Threads unterbrochen wird. Atomare Klassen sind nützlich, wenn Sie mit gemeinsam genutzten Daten arbeiten und Datenbeschädigungen verhindern, z. B. bei der Verwaltung gemeinsam genutzter Zähler für den gleichzeitigen Zugriff.

Wie vermeide ich Deadlocks durch Parallelität und Multithreading in Java-Funktionen? Wie vermeide ich Deadlocks durch Parallelität und Multithreading in Java-Funktionen? Apr 26, 2024 pm 06:09 PM

Deadlock-Probleme in Multithread-Umgebungen können verhindert werden, indem eine feste Sperrreihenfolge definiert und Sperren nacheinander erworben werden. Legen Sie einen Timeout-Mechanismus fest, um das Warten abzubrechen, wenn die Sperre nicht innerhalb der angegebenen Zeit erhalten werden kann. Verwenden Sie den Deadlock-Erkennungsalgorithmus, um den Thread-Deadlock-Status zu erkennen und Wiederherstellungsmaßnahmen zu ergreifen. In der Praxis definiert das Ressourcenverwaltungssystem eine globale Sperrreihenfolge für alle Ressourcen und zwingt Threads, die erforderlichen Sperren zu erwerben, um Deadlocks zu vermeiden.

Lokalisierung und Reparatur von PHP-Transaktionsfehlern Lokalisierung und Reparatur von PHP-Transaktionsfehlern Mar 23, 2024 am 11:09 AM

Methoden zur Lokalisierung und Reparatur von PHP-Transaktionsfehlern Während des Entwicklungsprozesses sind häufig Datenbankoperationen beteiligt. Um die Integrität und Konsistenz der Daten sicherzustellen, verwenden wir bei der Verarbeitung von Datenbankvorgängen häufig Transaktionen, um die Atomizität einer Reihe von Vorgängen sicherzustellen. Im eigentlichen Entwicklungsprozess treten jedoch manchmal Fehler in Transaktionen auf, die zu unvollständigen oder inkonsistenten Datenoperationen führen. In diesem Artikel wird erläutert, wie Sie Transaktionsfehler in PHP finden und beheben, und es werden konkrete Codebeispiele bereitgestellt. Um Transaktionsfehler in PHP zu lokalisieren, können wir MySQLi oder verwenden

See all articles