OCP知识点讲解 之 LRU链与脏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中块的数据又是一致的,此时,块就又变成了干净块。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Python adalah bahasa pengaturcaraan yang paling popular pada masa ini. Saya percaya bahawa sebilangan besar rakan baru akan menyertai barisan pembelajaran setiap hari. Walau bagaimanapun, betapa mudahnya sesuatu bahasa itu dipelajari, masih terdapat banyak konsep asas dan pengetahuan asas Bagi seorang pemula, ia masih sukar untuk menguasai begitu banyak sekali. Hari ini saya telah mengumpulkan banyak helaian tipu ilmu berkaitan Python, yang boleh dikatakan merangkumi semua Pada masa akan datang, ibu tidak perlu lagi risau tentang semua orang tidak dapat mengingati apa-apa mata pengetahuan! Asas Python Asas Python Helaian cheat ini mengandungi semua pengetahuan asas Python, daripada jenis data berubah-ubah kepada rentetan senarai, daripada pemasangan persekitaran kepada penggunaan perpustakaan yang biasa digunakan, ia boleh dikatakan komprehensif. Pemula'sPytho

Rahsia mekanisme caching HTML: mata pengetahuan penting, contoh kod khusus diperlukan Dalam pembangunan web, prestasi sentiasa menjadi pertimbangan penting. Mekanisme caching HTML adalah salah satu kunci untuk meningkatkan prestasi halaman web. Artikel ini akan mendedahkan prinsip dan kemahiran praktikal mekanisme caching HTML, dan memberikan contoh kod khusus. 1. Prinsip mekanisme caching HTML Semasa proses mengakses halaman Web, pelayar meminta pelayan untuk mendapatkan halaman HTML melalui protokol HTTP. Mekanisme caching HTML adalah untuk cache halaman HTML dalam penyemak imbas

Bagaimana untuk melaksanakan algoritma caching LRU menggunakan Java Pengenalan: Dalam bidang sains komputer, caching ialah teknologi pengoptimuman yang biasa digunakan untuk meningkatkan kelajuan membaca dan menulis data. LRU (LeastRecentlyUsed) ialah strategi penggantian cache biasa yang menentukan sama ada untuk mengalih keluar data daripada cache berdasarkan kali terakhir data itu diakses. Artikel ini akan memperkenalkan cara melaksanakan algoritma cache LRU menggunakan bahasa Java dan memberikan contoh kod terperinci. Prinsip algoritma cache LRU Algoritma cache LRU adalah berasaskan masa

1. Python Cache ① Cache function Cache ialah teknologi pengoptimuman yang boleh digunakan dalam aplikasi untuk menyimpan data terkini atau yang kerap digunakan dalam ingatan Mengakses data dengan cara ini adalah lebih cepat daripada membaca fail cakera secara langsung. Katakan kita membina tapak web pengagregatan berita, serupa dengan Feedly, yang memperoleh berita daripada sumber yang berbeza dan kemudian mengagregat dan memaparkannya. Apabila pengguna menyemak imbas berita, program latar belakang memuat turun artikel dan memaparkannya pada skrin pengguna. Jika teknologi caching tidak digunakan, apabila pengguna bertukar untuk menyemak imbas artikel yang sama beberapa kali, mereka mesti memuat turunnya beberapa kali, yang mana ia tidak cekap dan tidak mesra. Pendekatan yang lebih baik adalah untuk menyimpan kandungan secara tempatan, seperti dalam pangkalan data, selepas mendapatkan setiap artikel kemudian, apabila pengguna seterusnya

MySQL ialah salah satu sistem pengurusan pangkalan data hubungan yang paling popular di dunia dan digunakan secara meluas kerana kebolehpercayaannya, keselamatan yang tinggi, berskala tinggi dan kos yang agak rendah. Jenis data MySQL mentakrifkan kaedah penyimpanan pelbagai jenis data dan merupakan bahagian penting MySQL. Artikel ini akan menerangkan secara terperinci jenis data MySQL dan beberapa titik pengetahuan yang perlu diberi perhatian dalam aplikasi praktikal. 1. Klasifikasi jenis data MySQL Jenis data MySQL boleh dibahagikan kepada kategori berikut: Jenis integer: termasuk TINYINT,

Pengenalan kepada keselamatan rangkaian: Apakah mata pengetahuan penting untuk pemula? Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat Internet, keselamatan rangkaian telah menarik lebih banyak perhatian. Walau bagaimanapun, bagi kebanyakan orang, keselamatan rangkaian masih merupakan lautan yang tidak diketahui. Jadi, untuk bermula dengan keselamatan rangkaian, apakah pengetahuan penting yang perlu dikuasai oleh pemula? Artikel ini akan menyelesaikannya untuk anda. 1. Serangan dan ancaman rangkaian Pertama sekali, memahami jenis serangan dan ancaman rangkaian adalah titik pengetahuan yang mesti dikuasai untuk memulakan keselamatan rangkaian. Terdapat banyak jenis serangan siber seperti serangan phishing, malware, ransomware

Jenis Data Oracle Didedahkan: Mata Pengetahuan Yang Anda Mesti Faham, Contoh Kod Khusus Diperlukan Oracle, sebagai salah satu sistem pengurusan pangkalan data terkemuka di dunia, memainkan peranan penting dalam penyimpanan dan pemprosesan data. Dalam Oracle, jenis data adalah konsep yang sangat penting, yang mentakrifkan format penyimpanan, julat dan kaedah operasi data dalam pangkalan data. Artikel ini akan mendedahkan pelbagai mata pengetahuan tentang jenis data Oracle dan menunjukkan penggunaan serta cirinya melalui contoh kod tertentu. 1. Jenis data biasa jenis data aksara

Mata pengetahuan penting: Untuk menguasai kemahiran penting reka letak responsif CSS, contoh kod khusus diperlukan Dalam era Internet moden, semakin ramai orang menggunakan peranti mudah alih untuk menyemak imbas halaman web, jadi reka letak halaman web yang responsif telah menjadi sangat penting. Reka letak responsif bermakna halaman web boleh melaraskan reka letak dan gayanya secara automatik mengikut saiz skrin dan jenis peranti yang berbeza untuk menyesuaikan diri dengan pengalaman pengguna yang berbeza. Menguasai kemahiran reka letak responsif CSS adalah satu kemestian untuk pembangun bahagian hadapan. Artikel ini akan memperkenalkan beberapa perkara dan teknik pengetahuan yang penting, serta memberikan contoh kod khusus. guna media
