InnoDB的多版本并发控制(MMVC)
InnoDB的MVCC之(乐观锁),是通过在每行记录保存两个隐藏列来实现的。这两个列,一个是存创建时间,一个是删除时间,这里的时间指的是,系统版本号,并不是真正的时间值。
每开始一个新的事务,系统版本号都会自动递增。事务开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行记录版本号比较。
下面看一个在REPEATABLE READ(可重复读)隔离级别下,MVCC的具体操作:
SELECT
InnoDB会根据以下两个条件检查每行记录:
1、InnoDB只查找版本小于或等于当前事务版本的数据行,这样可以确保事务读取的行,是在事务开始前就已经存在的,或者是事务自身插入或者修改过的数据。
2、行的删除版本要么未定义,要么大于当前事务的版本。这可以确保事务赢取到的行,在事务开始前未被删除。
只有符合上述两个条件的记录,能能返回做为查询结果。
INSERT
InnoDB为新插入的每一行保存当前系统版本号作为行版本号。
DELETE
InnoDB为删除的每一行保存当前系统版本号作为行删除标识。
UPDATE
InnoDB为插入一行新记录,保存当前系统版本号作为行版本号,同时保存当前系统版本号到原来的行作为删除标识。
----------------------------------------------------------------------------------------------------------------------------------------------------------
保存这两个额外的系统版本号,使大多数读操作都可以不用加锁。这样设计使得读数据操作很简单,性能很好。并且也能保证只会读取到符合标准的行。不足之处是每行记录都需要额外的存储空间,需要做更多的检查工作,以及一些额外的维护工作。
MVCC只在REPEATABLE READ(可重复读)和READ COMMITTED(提交读)两个隔离级别下工作。其他两个隔离级别都和MVCC不兼容。READ UNCOMMITTED(未提交读)总是读取最新的数据行,而SERIALIZBLE(可串行化)则会对所有读取的行加锁。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die Pinduoduo-Software bietet viele gute Produkte, die Sie jederzeit und überall kaufen können. Die Qualität jedes Produkts wird streng kontrolliert, jedes Produkt ist echt und es gibt viele Vorzugsrabatte beim Einkaufen, sodass jeder online einkaufen kann. Ich kann einfach nicht aufhören. Geben Sie Ihre Mobiltelefonnummer ein, um sich online anzumelden, fügen Sie online mehrere Lieferadressen und Kontaktinformationen hinzu und prüfen Sie jederzeit die neuesten Logistiktrends. Suchen Sie nach oben und unten, um zu kaufen und eine Bestellung aufzugeben. Sie können den Komfort genießen, ohne das Haus zu verlassen. Mit dem Online-Einkaufsservice können Sie auch alle Einkaufsunterlagen, einschließlich der von Ihnen gekauften Waren, einsehen und erhalten Dutzende von roten Einkaufsumschlägen und Gutscheinen kostenlos Detaillierte Online-Methode zum Anzeigen gekaufter Produktdatensätze. 1. Öffnen Sie Ihr Telefon und klicken Sie auf das Pinduoduo-Symbol.

Die Anrufaufzeichnung im iPhone wird oft unterschätzt und ist eine der wichtigsten Funktionen des iPhone. Aufgrund ihrer Einfachheit ist diese Funktion von entscheidender Bedeutung und kann wichtige Erkenntnisse über die auf dem Gerät getätigten oder empfangenen Anrufe liefern. Ob für Arbeitszwecke oder für Gerichtsverfahren, die Möglichkeit, auf Anrufaufzeichnungen zuzugreifen, kann von unschätzbarem Wert sein. Vereinfacht ausgedrückt bezieht sich der Anrufverlauf auf die Einträge, die auf Ihrem iPhone erstellt werden, wenn Sie einen Anruf tätigen oder entgegennehmen. Diese Protokolle enthalten wichtige Informationen, einschließlich des Namens des Kontakts (oder der Nummer, falls nicht als Kontakt gespeichert), Zeitstempel, Dauer und Anrufstatus (gewählt, verpasst oder nicht angenommen). Sie sind eine prägnante Aufzeichnung Ihres Kommunikationsverlaufs. Der Anrufverlauf umfasst auf Ihrem iPhone gespeicherte Anrufverlaufsstreifen

So zeigen Sie den Befehlsverlauf unter Linux an: Unter Linux verwenden wir den Befehl „history“, um die Liste aller zuvor ausgeführten Befehle anzuzeigen. Die Syntax ist sehr einfach: „history“ Zu den Optionen für die Kopplung mit dem Befehl „history“ gehören: Optionsbeschreibung –c löscht den Befehlsverlauf für die aktuelle Sitzung –w schreibt den Befehlsverlauf in eine Datei –r lädt den Befehlsverlauf aus der Verlaufsdatei neu – n Begrenzen Sie die Anzahl der Ausgaben der letzten Befehle. Führen Sie einfach den Befehl „history“ aus, um eine Liste aller zuvor ausgeführten Befehle in einem Linux-Terminal anzuzeigen: Zusätzlich zur Anzeige des Befehlsverlaufs können Sie auch den Befehlsverlauf verwalten und Änderungen an zuvor ausgeführten Befehlen vornehmen, rückgängig machen Durchsuchen Sie den Befehlsverlauf oder löschen Sie den Verlauf sogar vollständig

Mit dem iPhone können Sie Medikamente zur Gesundheits-App hinzufügen, um die Medikamente, Vitamine und Nahrungsergänzungsmittel, die Sie täglich einnehmen, zu verfolgen und zu verwalten. Anschließend können Sie eingenommene oder ausgelassene Medikamente protokollieren, wenn Sie eine Benachrichtigung auf Ihrem Gerät erhalten. Nachdem Sie Ihre Medikamente protokolliert haben, können Sie sehen, wie oft Sie sie eingenommen oder ausgelassen haben, um Ihren Gesundheitszustand besser im Auge zu behalten. In diesem Beitrag zeigen wir Ihnen, wie Sie den Protokollverlauf ausgewählter Medikamente in der Health-App auf dem iPhone anzeigen. Eine kurze Anleitung zum Anzeigen Ihres Medikamentenprotokollverlaufs in der Gesundheits-App: Gehen Sie zu Gesundheits-App>Durchsuchen>Medikamente>Medikamente>Medikament auswählen>Optionen&a

Debian ist eine der größten Distributionen von Linux-Systemen, aber die Benennung der Versionen hat mich immer beunruhigt. Deshalb habe ich die Namen und Beziehungen verschiedener Debian-Versionen geklärt. Versionsnummer (Nummer) Die Debian-Versionsnummer wird direkt durch Zahlen dargestellt, z. B. Debian8, 9, 10, 11 usw. Ab Debian 6 addiert jede größere Distribution 1 zur ursprünglichen Zahl. Debian12 wird beispielsweise im Jahr 2023 veröffentlicht. Basierend auf der aktuellen Version werden kleine Aktualisierungen durch aufsteigende Dezimalstellen dargestellt. Nach der Veröffentlichung von Debian 12.0 sind beispielsweise die folgenden aktualisierten Versionen 12.1, 12.2 usw. Die Versionsnummer ist relativ konventionell und entspricht dem allgemeinen Wissen. Versionscode (Spitzname) Zusätzlich zur Versionsnummer,

C#-Entwicklungsvorschläge: Protokollierungs- und Überwachungssystem Zusammenfassung: Im Softwareentwicklungsprozess sind Protokollierungs- und Überwachungssysteme entscheidende Werkzeuge. In diesem Artikel werden die Rolle und Implementierungsvorschläge von Protokollierungs- und Überwachungssystemen in der C#-Entwicklung vorgestellt. Einleitung: Protokollierung und Überwachung sind wesentliche Werkzeuge in großen Softwareentwicklungsprojekten. Sie können uns helfen, den laufenden Status des Programms in Echtzeit zu verstehen und Probleme schnell zu erkennen und zu lösen. In diesem Artikel wird erläutert, wie Protokollierungs- und Überwachungssysteme in der C#-Entwicklung verwendet werden, um die Softwarequalität und Entwicklungseffizienz zu verbessern. Die Rolle des Protokollierungssystems

So protokollieren und überwachen Sie Java-Entwicklungsprojekte 1. Einführung in den Hintergrund Mit der rasanten Entwicklung des Internets haben immer mehr Unternehmen damit begonnen, Java zu entwickeln und verschiedene Arten von Anwendungen zu erstellen. Im Entwicklungsprozess sind Protokollierung und Überwachung ein wichtiges Bindeglied, das nicht ignoriert werden darf. Durch Protokollierung und Überwachung können Entwickler Probleme rechtzeitig erkennen und lösen, um die Stabilität und Sicherheit von Anwendungen zu gewährleisten. 2. Die Bedeutung der Protokollierung 1. Problemverfolgung: Wenn ein Anwendungsfehler auftritt, kann die Protokollierung uns dabei helfen, das Problem schnell zu lokalisieren.

1. Rufen Sie zunächst das Ubuntu-System auf und öffnen Sie dann mit „Strg+Alt+T“ das Ubuntu-Befehlszeilenterminal. 2. Dann enthalten Ubuntu-Systeme im Allgemeinen zwei Versionen von Python, Python2 und Python3. Wenn wir die vom System standardmäßig angegebene Python-Version abfragen, verwenden wir zum Abfragen den Befehl [python --version]. 3. Dann enthält das Ubuntu-System im Allgemeinen zwei Versionen von Python, Python2 und Python3. Wenn wir die entsprechende Python-Version abfragen, verwenden wir den Befehl zum Abfragen, den Befehl [python2--version]/[python3--versi
