SQL SERVER 事务日志
谈到事务日志就不得不谈下检查点 Checkpoint ,简称 CKP. 事务日志和检查点都是为了数据库的快速恢复而存在的。我们需要知道检查点是干什么的,它和事务日志有什么关系。 CKP是干什么的? 总所周知,数据的更改并没有直接写入mdf/ndf 数据文件中,而是写入了b
谈到事务日志就不得不谈下检查点 Checkpoint ,简称 CKP. 事务日志和检查点都是为了数据库的快速恢复而存在的。我们需要知道检查点是干什么的,它和事务日志有什么关系。
CKP是干什么的?
总所周知,数据的更改并没有直接写入mdf/ndf 数据文件中,而是写入了buffer pool中; 当CKP被触发后,检查点将“全部”脏数据页从当前数据库的buffer pool刷新到数据文件上。所谓的脏数据,是那些被更改的 data page ,在内存中却没有写入磁盘。全部脏数据包括已提交的数据更改和未提交的数据更改。刷新到数据文件是指将数据更改的后镜像copy写入数据文件,对数据的更改会保留一个前镜像和一个后镜像,好比我们修改文章,先保存原文作为前镜像,而后将修改后的文章作为后镜像。同时CKP也会flush cached log 到日志文件中 点击打开链接 .我更愿意将CKP看作是一个闹钟,我们可以对它按照一个规则定时,然后提醒SQL的部件data writer / log writer去干活。
总之,大多数情况下,什么时候数据更改写入数据文件,是由CKP决定的。
CKP什么时候被触发
备份数据库 (全备,差异备份,日志备份)
checkpoint命令
关闭数据库
Alter database命令
自动的检查点触发 (SQL依据recovery interval 服务器配置选项建议的时间上限触发检查点 或者日志已满 70%触发检查点)
间接检查点 (SQL 2012 新特性 ,详情参与点击打开链接)
CKP, Lazywriter, Eagerwriter的区别
总所周知这三个SQL的process都会将脏数据写入数据文件,但是它们的目的和触发条件完全不同
CKP的使用目的是为了在SQL intance停止后(例如断电),快速的instance recovery。它是一个时间点的标记,标记了数据库恢复的起始点。在这个起始点,所有的脏数据copy都写入了磁盘(它不会释放内存空间),从而在以后的恢复过程中节省时间。
Lazy writer是为了更好的利用buffer pool。 它会定期检查data cache,按照LRU算法,将长期未使用到的dirty page 写入磁盘, 清除dirty page释放内存空间。
Eager writer 是为BCP等批量插入而存在的。该进程会写入与无日志记录的操作(例如大容量插入和选择插入)相关联的脏数据页。该进程允许以并行方式创建和写入新页。也就是说,调用操作不必等待整个操作完成,即可将页写入磁盘 (摘于msdn点击打开链接 )。这样可以保证Buffer Pool有足够的空间完成批量操作。
CKP和事务日志有什么关系呢?
与其说是与事务日志的关系,不如说是与事务日志序列号(Log Sequence Number, 简称LSN)的关系,,在我以后的blog会对LSN做阐述。
检查点触发有一个起始时间点,这个时间点会被记录在事务日志里,获得一个CKP起始时间点LSN。当完成脏数据写后,CKP同样在日志文件里记录一个结束时间点的LSN。检查点还会记录一个最小恢复LSN (minLSN), minLSN必须存在检查点记录里才能成功进行回滚(roll back / undo), minLSN告诉了SQL Server 可以回滚的最远时间点。至于minLSN是什么,SQL如何定义minLSN,SQL server如何使用它,在我以后的blog做阐述)这里只要记住CKP会纪录这个minLSN,它很对undo很重要。

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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

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 Protokolle von win10 können Benutzern helfen, die Systemnutzung im Detail zu verstehen, wenn sie nach ihren eigenen Verwaltungsprotokollen suchen. Was bedeutet dieser Code? Was ist Win10-Protokoll 6013: 1. Dies ist ein normales Protokoll. Die Informationen in diesem Protokoll bedeuten nicht, dass Ihr Computer neu gestartet wurde, sie geben jedoch an, wie lange das System seit dem letzten Start in Betrieb war. Dieses Protokoll erscheint einmal täglich pünktlich um 12 Uhr. Wie kann man überprüfen, wie lange das System läuft? Sie können systeminfo in cmd eingeben. Es gibt eine Zeile darin.

Die Protokolle von Win10 können Benutzern helfen, die Systemnutzung im Detail zu verstehen, wenn sie nach ihren eigenen Verwaltungsprotokollen suchen. So lösen Sie das Win10-Protokollereignis 7034: 1. Klicken Sie auf „Start“, um die „Systemsteuerung“ zu öffnen. 2. Suchen Sie nach „Verwaltungstools“. 3. Klicken Sie auf „Dienste“. 4. Suchen Sie nach HDZBCommServiceForV2.0, klicken Sie mit der rechten Maustaste auf „Dienst stoppen“ und ändern Sie es zu „Manueller Start“

WindowsServerBackup ist eine Funktion des WindowsServer-Betriebssystems, die Benutzern dabei helfen soll, wichtige Daten und Systemkonfigurationen zu schützen und vollständige Sicherungs- und Wiederherstellungslösungen für kleine, mittlere und große Unternehmen bereitzustellen. Nur Benutzer, die Server2022 und höher ausführen, können diese Funktion nutzen. In diesem Artikel erklären wir, wie Sie WindowsServerBackup installieren, deinstallieren oder zurücksetzen. So setzen Sie die Windows Server-Sicherung zurück: Wenn Sie Probleme mit der Sicherung Ihres Servers haben, die Sicherung zu lange dauert oder Sie nicht auf gespeicherte Dateien zugreifen können, können Sie die Sicherungseinstellungen Ihres Windows Servers zurücksetzen. Um Windows zurückzusetzen

Lockwaittimeoutexceeded;tryrestartingtransaction – So beheben Sie den MySQL-Fehler: Transaktionswartezeitüberschreitung Bei Verwendung der MySQL-Datenbank kann es manchmal zu einem häufigen Fehler kommen: Lockwaittimeoutexceeded;tryrestartingtransaction. Dieser Fehler weist auf eine Transaktionswartezeitüberschreitung hin. Dieser Fehler tritt normalerweise auf, wenn

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

MySQL-Transaktionsverarbeitung: Der Unterschied zwischen automatischer Übermittlung und manueller Übermittlung. In der MySQL-Datenbank ist eine Transaktion eine Reihe von SQL-Anweisungen. Entweder sind alle Ausführungen erfolgreich oder alle Ausführungen schlagen fehl, wodurch die Konsistenz und Integrität der Daten sichergestellt wird. In MySQL können Transaktionen in automatische Übermittlung und manuelle Übermittlung unterteilt werden. Der Unterschied liegt im Zeitpunkt der Transaktionsübermittlung und im Umfang der Kontrolle über die Transaktion. Im Folgenden wird der Unterschied zwischen automatischer Übermittlung und manueller Übermittlung ausführlich vorgestellt und spezifische Codebeispiele zur Veranschaulichung gegeben. 1. Automatisch in MySQL übermitteln, wenn es nicht angezeigt wird

In Linux-Systemen können Sie den folgenden Befehl verwenden, um den Inhalt der Protokolldatei anzuzeigen: Befehl tail: Der Befehl tail wird verwendet, um den Inhalt am Ende der Protokolldatei anzuzeigen. Dies ist ein allgemeiner Befehl zum Anzeigen der neuesten Protokollinformationen. tail [Option] [Dateiname] Zu den häufig verwendeten Optionen gehören: -n: Geben Sie die Anzahl der anzuzeigenden Zeilen an. Der Standardwert ist 10 Zeilen. -f: Überwachen Sie den Dateiinhalt in Echtzeit und zeigen Sie den neuen Inhalt automatisch an, wenn die Datei aktualisiert wird. Beispiel: tail-n20logfile.txt#Zeigen Sie die letzten 20 Zeilen der Datei logfile.txt an. tail-flogfile.txt#Überwachen Sie den aktualisierten Inhalt der Datei logfile.txt in Echtzeit. Head-Befehl: Der Head-Befehl wird verwendet, um den Anfang anzuzeigen der Protokolldatei

1. Einführung in PDO PDO ist eine Erweiterungsbibliothek von PHP, die eine objektorientierte Möglichkeit zum Betrieb der Datenbank bietet. PDO unterstützt eine Vielzahl von Datenbanken, einschließlich MySQL, Postgresql, Oracle, SQLServer usw. PDO ermöglicht Entwicklern die Verwendung einer einheitlichen API zum Betrieb verschiedener Datenbanken, wodurch Entwickler problemlos zwischen verschiedenen Datenbanken wechseln können. 2. PDO stellt eine Verbindung zur Datenbank her. Um PDO zum Herstellen einer Verbindung zur Datenbank zu verwenden, müssen Sie zunächst ein PDO-Objekt erstellen. Der Konstruktor des PDO-Objekts erhält drei Parameter: Datenbanktyp, Hostname, Datenbankbenutzername und Passwort. Der folgende Code erstellt beispielsweise ein Objekt, das eine Verbindung zu einer MySQL-Datenbank herstellt: $dsn="mysq
