Heim Datenbank MySQL-Tutorial OCP知识点讲解 之 LRU链与脏LRU链

OCP知识点讲解 之 LRU链与脏LRU链

Jun 07, 2016 pm 05:40 PM
lru 知识点

一、LRU链:任何缓存的大小都是有限制的,并且总不如被缓存的数据多。就像Buffercache用来缓存数据文件,数据文件的大小远远超过Buffercache。因此,缓存总有被

一、LRU链:

     为了实现LRU的功能,Oracle在Buffer cache中创建了一个LRU链表,Oracle将Buffer cache中所有内存块,按照访问次数、访问时间排序串在链表中。链表的两头我们分别叫做热端与冷端, 如下图

 

     当你第一次访问某个块时,如果这个块不在Buffer cache中,Oracle要选将它读进Buffer cache。在Buffer cache中选择牺牲者时,Oracle将从冷端头开始选择,在上图的例子中,内存块U将是牺牲者。

 

 

 如上图,新块将会被读入U,覆盖U原来的内容。这里,我们假设新块是V。但是块V不会被放在冷端头,因为冷端头的块,会很快被当作牺牲者权覆盖的。这不符合“将最后访问时间距现在最远的块作为牺牲者”的宗旨。块V是最后时间距当前时刻最近的,它不应该作为下一个牺牲者。Oracle是如何实验LRU的,我们继续看。

 

 

 Oracle将LRU链从中间分为两半,一半记录热端块、一半记录冷端块。如上图,而刚刚被访问的块V,如下图:

 

 

     如过再有新的块进入Buffer cache,比如块X被读入Buffer cache,它将覆盖T,并且会被移至块V的前面,如下图:

 

 

     大家可以想像一下,如果按照这面的方式继续下去,最右边冷端头处的块,一定是最后一次访问时间距现在最远的块。那么,访问次数多的块是不会被选做牺牲者的,这一点Oracle是如何实现的?这很简单,Oracle一般以2次为准,块被访问2次以上了,它就有机会进入热端。

     Oracle为内存中的每个块都添加了一个记录访问次数的标志位,假设图中每个块的访问次数如下:

 

 

     如果现在又有新块要被读入Buffer cache,Oracle开始从冷端头寻找牺牲者,冷端头第一个块S,它的访问次数是2,香港虚拟主机,那么,它不能被覆盖,只要访问次数大于等于2的块,Oracle会认为它可能会被经常访问到,Oracle要把它移到热端,它会选择R做为本次的牺牲者:

 

 

     块S会被从冷端移到热端,并且它的访问次数会被清零。此时,块R就是牺牲者了,因为它的访问次数不到两次。

 

 

     新块Y覆盖了块R,并被移到了冷端块开始处,它的访问次数是1。如果块Y再被访问了一次,它的访问次数变为了2:

 

 

     虽然Y的访问次数达到了两次,但它不会马上被移到热端,它仍然留在原来的位置,随着不断有新块加入,被插入到它的前面,虚拟主机,它会不断的被向后推移。

 

 

     如上图,又加入了很多的新块,Y又被推到了冷端头,当再有新块进入Buffer cache时,Y不会是牺牲者,它会被移到热端头S的前面,Y后面的Z,它的访问次数没有达到2,它将会是牺牲者。

     好了,这就是Oracle中Buffer cache管理LRU的原理。按照这种方式运作,Oracle可以把常用的块尽量长的保持在Buffer cache中。而且,每有新块进入Buffer cache,Oracle都会从冷端头处,从右向左搜索牺牲块。因为越靠近冷端,块的访问次数有可能越少、最后的访问时间离现在最远。好了,LRU链还没有讲完,下面,我们再讨论一下脏块与脏LRU链的问题。

 

 

二、脏块与脏LRU链

     Oracle中修改块的规则是只对Buffer cache中的块进行修改,并不直接修改磁盘中的块。如果要修改的块不在Buffer cache中,Oracle会先将它读入Buffer cache,再在Buffer cache中进行修改。当Buffer cache中的块被修改后,Oracle会把它标记为“脏”块。脏块含有脏数据,脏数据就是用户修改过的数据。Oracle会定期的将脏块写到磁盘中。有一个专门的后台进程就是专门负责写脏块到磁盘的,它就是DBWn。我们也把DBWn写脏块到磁盘这个过程叫做刷新脏块,刷新过后,脏块就不脏了,又变成了干净块。其实,有一个块A,如果Buffer cache中此块的数据和磁盘上块中数据不一致,香港服务器,那么,这个块就是脏块。否则,就是干净块。当修改完成后,因为Oracle只修改Buffer cache,因此,块中数据和磁盘肯定不一致,这时块就是脏块。当块被刷新后,块被写到磁盘,那么,磁盘中块数据和Buffer cache中块的数据又是一致的,此时,块就又变成了干净块。

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 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
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)

Sammlung von Python-Spickzetteln. Welche Wissenspunkte beherrschen Sie? Sammlung von Python-Spickzetteln. Welche Wissenspunkte beherrschen Sie? Apr 26, 2023 pm 10:49 PM

Python ist derzeit die beliebteste Programmiersprache. Ich glaube, dass jeden Tag eine große Anzahl von Anfängern hinzukommen wird. Doch egal wie einfach eine Sprache zu erlernen ist, es gibt immer noch viele grundlegende Konzepte und Grundkenntnisse. Für einen Anfänger ist es immer noch schwierig, so viel auf einmal zu beherrschen. Heute haben wir viele Wissens-Spickzettel zum Thema Python zusammengestellt, von denen man sagen kann, dass sie umfassend sind. In Zukunft muss sich Mama keine Sorgen mehr machen, dass sich nicht alle Wissenspunkte merken können! Python-Grundlagen Python-Grundlagen Dieser Spickzettel enthält alle Grundkenntnisse von Python, von variablen Datentypen bis zu Listenzeichenfolgen, von der Umgebungsinstallation bis zur Verwendung häufig verwendeter Bibliotheken. Man kann sagen, dass er umfassend ist. Anfänger-Pytho

Enthüllung des Geheimnisses des HTML-Caching-Mechanismus: wesentliche Wissenspunkte Enthüllung des Geheimnisses des HTML-Caching-Mechanismus: wesentliche Wissenspunkte Jan 23, 2024 am 08:51 AM

Das Geheimnis des HTML-Caching-Mechanismus: Wesentliche Wissenspunkte, spezifische Codebeispiele sind erforderlich. Bei der Webentwicklung war die Leistung schon immer ein wichtiger Gesichtspunkt. Der HTML-Caching-Mechanismus ist einer der Schlüssel zur Verbesserung der Leistung von Webseiten. In diesem Artikel werden die Prinzipien und praktischen Fähigkeiten des HTML-Caching-Mechanismus erläutert und spezifische Codebeispiele bereitgestellt. 1. Prinzip des HTML-Caching-Mechanismus Während des Zugriffs auf eine Webseite fordert der Browser den Server auf, die HTML-Seite über das HTTP-Protokoll abzurufen. Der HTML-Caching-Mechanismus besteht darin, HTML-Seiten im Browser zwischenzuspeichern

So implementieren Sie den LRU-Caching-Algorithmus mit Java So implementieren Sie den LRU-Caching-Algorithmus mit Java Sep 19, 2023 am 08:59 AM

So implementieren Sie den LRU-Caching-Algorithmus mit Java Einführung: Im Bereich der Informatik ist Caching eine häufig verwendete Optimierungstechnologie, um die Geschwindigkeit des Lesens und Schreibens von Daten zu erhöhen. LRU (LeastRecentlyUsed) ist eine gängige Cache-Ersetzungsstrategie, die basierend auf dem letzten Zugriff auf die Daten bestimmt, ob Daten aus dem Cache entfernt werden sollen. In diesem Artikel wird die Implementierung des LRU-Cache-Algorithmus mithilfe der Java-Sprache vorgestellt und detaillierte Codebeispiele bereitgestellt. Prinzip des LRU-Cache-Algorithmus Der LRU-Cache-Algorithmus ist zeitbasiert

Wie Python die LRU-Cache-Strategie zum Caching verwendet Wie Python die LRU-Cache-Strategie zum Caching verwendet May 13, 2023 am 11:34 AM

1. Python-Cache ① Cache-Funktion Cache ist eine Optimierungstechnologie, die in Anwendungen zum Speichern aktueller oder häufig verwendeter Daten im Speicher verwendet werden kann. Der Zugriff auf Daten ist auf diese Weise schneller als das direkte Lesen von Festplattendateien. Angenommen, wir erstellen eine Website zur Nachrichtenaggregation, ähnlich wie Feedly, die Nachrichten aus verschiedenen Quellen bezieht und diese dann aggregiert und anzeigt. Wenn der Benutzer die Nachrichten durchstöbert, lädt das Hintergrundprogramm den Artikel herunter und zeigt ihn auf dem Bildschirm des Benutzers an. Wenn keine Caching-Technologie verwendet wird und Benutzer denselben Artikel mehrmals durchsuchen, müssen sie ihn mehrmals herunterladen, was ineffizient und unfreundlich ist. Ein besserer Ansatz besteht darin, den Inhalt lokal, beispielsweise in einer Datenbank, zu speichern, nachdem er jeden Artikel abgerufen hat, und zwar dann, wenn der Benutzer das nächste Mal darauf zugreifen möchte

Ausführliche Erklärung der MySQL-Datentypen: Was Sie wissen müssen Ausführliche Erklärung der MySQL-Datentypen: Was Sie wissen müssen Jun 15, 2023 am 08:56 AM

MySQL ist eines der beliebtesten relationalen Datenbankverwaltungssysteme weltweit und wird aufgrund seiner Zuverlässigkeit, hohen Sicherheit, hohen Skalierbarkeit und relativ geringen Kosten häufig verwendet. MySQL-Datentypen definieren die Speichermethoden verschiedener Datentypen und sind ein wichtiger Bestandteil von MySQL. In diesem Artikel werden die Datentypen von MySQL und einige Wissenspunkte, auf die in praktischen Anwendungen geachtet werden muss, ausführlich erläutert. 1. MySQL-Datentypklassifizierung MySQL-Datentypen können in die folgenden Kategorien unterteilt werden: Ganzzahltypen: einschließlich TINYINT,

Einführung in die Netzwerksicherheit: Was sind die wesentlichen Wissenspunkte für Einsteiger? Einführung in die Netzwerksicherheit: Was sind die wesentlichen Wissenspunkte für Einsteiger? Jun 11, 2023 am 09:57 AM

Einführung in die Netzwerksicherheit: Was sind die wesentlichen Wissenspunkte für Einsteiger? In den letzten Jahren hat die Netzwerksicherheit mit der rasanten Entwicklung des Internets immer mehr Aufmerksamkeit auf sich gezogen. Für viele Menschen ist die Netzwerksicherheit jedoch immer noch ein unbekannter Ozean. Welche grundlegenden Kenntnisse müssen Anfänger also beherrschen, um mit der Netzwerksicherheit zu beginnen? Dieser Artikel wird es für Sie klären. 1. Netzwerkangriffe und -bedrohungen Zunächst einmal ist das Verständnis der Arten von Netzwerkangriffen und -bedrohungen ein Wissenspunkt, den man beherrschen muss, um mit der Netzwerksicherheit beginnen zu können. Es gibt viele Arten von Cyberangriffen wie Phishing-Angriffe, Malware und Ransomware

Aufgedeckte Oracle-Datentypen: Wissenspunkte, die Sie kennen müssen Aufgedeckte Oracle-Datentypen: Wissenspunkte, die Sie kennen müssen Mar 07, 2024 pm 05:18 PM

Das Geheimnis der Oracle-Datentypen: Wissenspunkte, die Sie verstehen müssen, und spezifische Codebeispiele. Als eines der weltweit führenden Datenbankverwaltungssysteme spielt Oracle eine wichtige Rolle bei der Datenspeicherung und -verarbeitung. In Oracle ist der Datentyp ein sehr wichtiges Konzept, das das Speicherformat, den Bereich und die Betriebsmethode der Daten in der Datenbank definiert. In diesem Artikel werden verschiedene Wissenspunkte zu Oracle-Datentypen aufgezeigt und deren Verwendung und Eigenschaften anhand spezifischer Codebeispiele demonstriert. 1. Allgemeine Datentypen, Zeichendatentypen

Wichtige Wissenspunkte: Grundlegende Fähigkeiten zur Beherrschung des responsiven CSS-Layouts Wichtige Wissenspunkte: Grundlegende Fähigkeiten zur Beherrschung des responsiven CSS-Layouts Feb 24, 2024 pm 10:09 PM

Wichtige Wissenspunkte: Um die wesentlichen Fähigkeiten des responsiven CSS-Layouts zu beherrschen, sind spezifische Codebeispiele erforderlich. Im modernen Internetzeitalter verwenden immer mehr Menschen mobile Geräte zum Durchsuchen von Webseiten, daher ist das responsive Layout von Webseiten besonders wichtig geworden. Responsives Layout bedeutet, dass eine Webseite ihr Layout und ihren Stil automatisch an unterschiedliche Bildschirmgrößen und Gerätetypen anpassen kann, um sich an unterschiedliche Benutzererfahrungen anzupassen. Die Beherrschung der Fähigkeiten des CSS-Responsive-Layouts ist für Front-End-Entwickler ein Muss. In diesem Artikel werden einige wichtige Wissenspunkte und Techniken vorgestellt und spezifische Codebeispiele bereitgestellt. Medien nutzen

See all articles