Maison base de données tutoriel mysql 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中块的数据又是一致的,此时,块就又变成了干净块。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Collection d'aide-mémoire Python, quels points de connaissances maîtrisez-vous ? Collection d'aide-mémoire Python, quels points de connaissances maîtrisez-vous ? Apr 26, 2023 pm 10:49 PM

Python est actuellement le langage de programmation le plus populaire. Je pense qu'un grand nombre d'amis novices rejoindront les rangs de l'apprentissage chaque jour. Cependant, même si une langue est facile à apprendre, il existe encore de nombreux concepts et connaissances de base. Pour un novice, il est toujours difficile de maîtriser autant de choses à la fois. Aujourd'hui, j'ai rassemblé de nombreuses aide-mémoire sur les connaissances liées à Python, qui peuvent être considérées comme exhaustives. À l'avenir, maman n'aura plus à s'inquiéter du fait que tout le monde ne puisse se souvenir d'aucun point de connaissance ! Notions de base de Python Notions de base de Python Cette aide-mémoire contient toutes les connaissances de base de Python, des types de données variables aux chaînes de liste, de l'installation de l'environnement à l'utilisation des bibliothèques couramment utilisées, elle peut être considérée comme complète. Python pour débutants

Révéler les secrets du mécanisme de mise en cache HTML : points de connaissances essentiels Révéler les secrets du mécanisme de mise en cache HTML : points de connaissances essentiels Jan 23, 2024 am 08:51 AM

Le secret du mécanisme de mise en cache HTML : points de connaissances essentiels, des exemples de code spécifiques sont requis Dans le développement Web, les performances ont toujours été une considération importante. Le mécanisme de mise en cache HTML est l'une des clés pour améliorer les performances des pages Web. Cet article révélera les principes et les compétences pratiques du mécanisme de mise en cache HTML et fournira des exemples de code spécifiques. 1. Principe du mécanisme de mise en cache HTML Lors du processus d'accès à une page Web, le navigateur demande au serveur d'obtenir la page HTML via le protocole HTTP. Le mécanisme de mise en cache HTML consiste à mettre en cache les pages HTML dans le navigateur

Comment implémenter l'algorithme de mise en cache LRU à l'aide de Java Comment implémenter l'algorithme de mise en cache LRU à l'aide de Java Sep 19, 2023 am 08:59 AM

Comment implémenter l'algorithme de mise en cache LRU à l'aide de Java Introduction : Dans le domaine de l'informatique, la mise en cache est une technologie d'optimisation couramment utilisée pour améliorer la vitesse de lecture et d'écriture des données. LRU (LeastRecentlyUsed) est une stratégie courante de remplacement du cache qui détermine s'il convient de supprimer les données du cache en fonction de la dernière fois où les données ont été consultées. Cet article explique comment implémenter l'algorithme de cache LRU à l'aide du langage Java et fournit des exemples de code détaillés. Principe de l'algorithme de cache LRU L'algorithme de cache LRU est un

Comment Python utilise la stratégie de cache LRU pour la mise en cache Comment Python utilise la stratégie de cache LRU pour la mise en cache May 13, 2023 am 11:34 AM

1. Python Cache ① Fonction de cache Le cache est une technologie d'optimisation qui peut être utilisée dans les applications pour enregistrer en mémoire les données récentes ou fréquemment utilisées. L'accès aux données de cette manière est beaucoup plus rapide que la lecture directe des fichiers disque. Supposons que nous construisions un site Web d'agrégation d'actualités, similaire à Feedly, qui obtient des informations de différentes sources, puis les regroupe et les affiche. Lorsque l'utilisateur parcourt l'actualité, le programme en arrière-plan télécharge l'article et l'affiche sur l'écran de l'utilisateur. Si la technologie de mise en cache n’est pas utilisée, lorsque les utilisateurs passent plusieurs fois à parcourir le même article, ils doivent le télécharger plusieurs fois, ce qui est inefficace et peu convivial. Une meilleure approche consiste à stocker le contenu localement, par exemple dans une base de données, après l'obtention de chaque article, puis lors de la prochaine utilisation par l'utilisateur ;

Explication détaillée des types de données MySQL : ce que vous devez savoir Explication détaillée des types de données MySQL : ce que vous devez savoir Jun 15, 2023 am 08:56 AM

MySQL est l'un des systèmes de gestion de bases de données relationnelles les plus populaires au monde et est largement utilisé en raison de sa fiabilité, de sa haute sécurité, de sa grande évolutivité et de son coût relativement faible. Les types de données MySQL définissent les méthodes de stockage de différents types de données et constituent une partie importante de MySQL. Cet article expliquera en détail les types de données de MySQL et certains points de connaissances auxquels il faut prêter attention dans les applications pratiques. 1. Classification des types de données MySQL Les types de données MySQL peuvent être divisés dans les catégories suivantes : Types entiers : y compris TINYINT,

Introduction à la sécurité des réseaux : Quels sont les points de connaissances essentiels pour les débutants ? Introduction à la sécurité des réseaux : Quels sont les points de connaissances essentiels pour les débutants ? Jun 11, 2023 am 09:57 AM

Introduction à la sécurité des réseaux : Quels sont les points de connaissances essentiels pour les débutants ? Ces dernières années, avec le développement rapide d’Internet, la sécurité des réseaux a attiré de plus en plus d’attention. Cependant, pour de nombreuses personnes, la sécurité des réseaux reste encore un océan inconnu. Alors, pour se lancer dans la sécurité des réseaux, quelles connaissances essentielles les débutants doivent-ils maîtriser ? Cet article va régler le problème pour vous. 1. Attaques et menaces réseau Tout d'abord, comprendre les types d'attaques et de menaces réseau est un point de connaissance qui doit être maîtrisé pour se lancer dans la sécurité réseau. Il existe de nombreux types de cyberattaques telles que les attaques de phishing, les logiciels malveillants, les ransomwares.

Types de données Oracle révélés : points de connaissances que vous devez connaître Types de données Oracle révélés : points de connaissances que vous devez connaître Mar 07, 2024 pm 05:18 PM

Le secret des types de données Oracle : points de connaissances que vous devez comprendre et exemples de code spécifiques. En tant que l'un des principaux systèmes de gestion de bases de données au monde, Oracle joue un rôle important dans le stockage et le traitement des données. Dans Oracle, le type de données est un concept très important qui définit le format de stockage, la plage et la méthode de fonctionnement des données dans la base de données. Cet article révélera divers points de connaissance des types de données Oracle et démontrera leur utilisation et leurs caractéristiques à travers des exemples de code spécifiques. 1. Types de données courants types de données de caractères

Points de connaissances importants : compétences essentielles pour maîtriser la mise en page réactive CSS Points de connaissances importants : compétences essentielles pour maîtriser la mise en page réactive CSS Feb 24, 2024 pm 10:09 PM

Points de connaissances importants : pour maîtriser les compétences essentielles de la mise en page réactive CSS, des exemples de code spécifiques sont nécessaires. À l'ère d'Internet moderne, de plus en plus de personnes utilisent des appareils mobiles pour parcourir les pages Web, la mise en page réactive des pages Web est donc devenue particulièrement importante. La mise en page réactive signifie qu'une page Web peut ajuster automatiquement sa mise en page et son style en fonction de différentes tailles d'écran et types d'appareils pour s'adapter aux différentes expériences utilisateur. Maîtriser les compétences de mise en page réactive CSS est indispensable pour les développeurs front-end. Cet article présentera quelques points de connaissances et techniques importants et fournira des exemples de code spécifiques. utiliser les médias

See all articles