데이터 베이스 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中块的数据又是一致的,此时,块就又变成了干净块。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Python 치트 시트 모음, 어떤 지식 포인트를 마스터하셨나요? Python 치트 시트 모음, 어떤 지식 포인트를 마스터하셨나요? Apr 26, 2023 pm 10:49 PM

Python은 현재 가장 인기 있는 프로그래밍 언어입니다. 저는 수많은 초보 친구들이 매일 학습 대열에 합류할 것이라고 믿습니다. 하지만 아무리 배우기 쉬운 언어라 할지라도 초보자에게는 여전히 많은 기본 개념과 기본 지식이 있어서 한 번에 익히기가 어렵습니다. 오늘은 포괄적이라고 할 수 있는 파이썬 관련 지식 치트시트를 많이 모았습니다. 앞으로 엄마는 더 이상 모든 사람이 지식 포인트를 기억하지 못할까 봐 걱정할 필요가 없습니다! Python 기초 Pythonbasics 이 치트 시트에는 변수 데이터 유형부터 목록 문자열, 환경 설치부터 일반적으로 사용되는 라이브러리 사용까지 Python에 대한 모든 기본 지식이 포함되어 있어 포괄적이라고 할 수 있습니다. 초보자의Pytho

HTML 캐싱 메커니즘의 비밀 공개: 필수 지식 포인트 HTML 캐싱 메커니즘의 비밀 공개: 필수 지식 포인트 Jan 23, 2024 am 08:51 AM

HTML 캐싱 메커니즘의 비밀: 필수 지식 포인트, 특정 코드 예제가 필요합니다. 웹 개발에서 성능은 항상 중요한 고려 사항이었습니다. HTML 캐싱 메커니즘은 웹 페이지 성능을 향상시키는 핵심 중 하나입니다. 이 기사에서는 HTML 캐싱 메커니즘의 원리와 실제 기술을 공개하고 구체적인 코드 예제를 제공합니다. 1. HTML 캐싱 메커니즘의 원리 웹 페이지에 액세스하는 동안 브라우저는 HTTP 프로토콜을 통해 HTML 페이지를 가져오도록 서버에 요청합니다. HTML 캐싱 메커니즘은 브라우저에서 HTML 페이지를 캐시하는 것입니다.

Java를 사용하여 LRU 캐싱 알고리즘을 구현하는 방법 Java를 사용하여 LRU 캐싱 알고리즘을 구현하는 방법 Sep 19, 2023 am 08:59 AM

Java를 사용하여 LRU 캐싱 알고리즘을 구현하는 방법 소개: 컴퓨터 과학 분야에서 캐싱은 데이터 읽기 및 쓰기 속도를 향상시키기 위해 일반적으로 사용되는 최적화 기술입니다. LRU(LeastRecentlyUsed)는 데이터에 마지막으로 액세스한 시간을 기준으로 캐시에서 데이터를 제거할지 여부를 결정하는 일반적인 캐시 교체 전략입니다. 본 기사에서는 Java 언어를 사용하여 LRU 캐시 알고리즘을 구현하는 방법을 소개하고 자세한 코드 예제를 제공합니다. LRU 캐시 알고리즘의 원리 LRU 캐시 알고리즘은 시간 기반입니다.

Python이 캐싱을 위해 LRU 캐시 전략을 사용하는 방법 Python이 캐싱을 위해 LRU 캐시 전략을 사용하는 방법 May 13, 2023 am 11:34 AM

1. Python 캐시 ① 캐시 기능 캐시는 최근 또는 자주 사용하는 데이터를 메모리에 저장하기 위해 애플리케이션에서 사용할 수 있는 최적화 기술입니다. 이러한 방식으로 데이터에 액세스하는 것은 디스크 파일을 직접 읽는 것보다 훨씬 빠릅니다. 다양한 소스에서 뉴스를 얻은 다음 이를 집계하고 표시하는 Feedly와 유사한 뉴스 집계 웹사이트를 구축한다고 가정해 보겠습니다. 사용자가 뉴스를 탐색하면 백그라운드 프로그램이 기사를 다운로드하여 사용자 화면에 표시합니다. 캐싱 기술을 사용하지 않으면 사용자가 동일한 기사를 여러 번 탐색하기 위해 전환할 때 해당 기사를 여러 번 다운로드해야 하므로 비효율적이고 비우호적입니다. 더 나은 접근 방식은 각 기사를 얻은 후 사용자가 다음 번에 콘텐츠를 데이터베이스와 같이 로컬에 저장하는 것입니다.

MySQL 데이터 유형에 대한 자세한 설명: 알아야 할 사항 MySQL 데이터 유형에 대한 자세한 설명: 알아야 할 사항 Jun 15, 2023 am 08:56 AM

MySQL은 세계에서 가장 널리 사용되는 관계형 데이터베이스 관리 시스템 중 하나이며 안정성, 높은 보안, 높은 확장성 및 상대적으로 저렴한 비용으로 인해 널리 사용됩니다. MySQL 데이터 유형은 다양한 데이터 유형의 저장 방법을 정의하며 MySQL의 중요한 부분입니다. 이 기사에서는 MySQL의 데이터 유형과 실제 응용 프로그램에서 주의해야 할 몇 가지 지식 사항을 자세히 설명합니다. 1. MySQL 데이터 유형 분류 MySQL 데이터 유형은 다음과 같은 범주로 나눌 수 있습니다. 정수 유형: TINYINT 포함,

네트워크 보안 입문: 초보자를 위한 필수 지식 포인트는 무엇입니까? 네트워크 보안 입문: 초보자를 위한 필수 지식 포인트는 무엇입니까? Jun 11, 2023 am 09:57 AM

네트워크 보안 입문: 초보자를 위한 필수 지식 포인트는 무엇입니까? 최근 인터넷의 급속한 발전과 함께 네트워크 보안에 대한 관심이 더욱 높아지고 있습니다. 그러나 많은 사람들에게 네트워크 보안은 여전히 ​​미지의 바다입니다. 그렇다면 네트워크 보안을 시작하려면 초보자가 마스터해야 할 필수 지식은 무엇입니까? 이 기사가 당신을 위해 정리할 것입니다. 1. 네트워크 공격 및 위협 우선, 네트워크 공격 및 위협의 유형을 이해하는 것은 네트워크 보안을 시작하기 위해 반드시 숙달해야 하는 지식 포인트입니다. 피싱공격, 악성코드, 랜섬웨어 등 사이버 공격의 종류는 다양합니다.

밝혀진 Oracle 데이터 유형: 꼭 알아야 할 지식 포인트 밝혀진 Oracle 데이터 유형: 꼭 알아야 할 지식 포인트 Mar 07, 2024 pm 05:18 PM

Oracle 데이터 유형의 비밀: 반드시 이해해야 할 지식 포인트와 구체적인 코드 예제. 세계 최고의 데이터베이스 관리 시스템 중 하나인 Oracle은 데이터 저장 및 처리에서 중요한 역할을 합니다. 오라클에서 데이터 타입(Data Type)은 데이터베이스에 존재하는 데이터의 저장 형식, 범위, 연산 방식 등을 정의하는 매우 중요한 개념이다. 이 기사에서는 Oracle 데이터 유형에 대한 다양한 지식 포인트를 공개하고 특정 코드 예제를 통해 해당 사용법과 특성을 보여줍니다. 1. 공통 데이터 유형 문자 데이터 유형

중요한 지식 포인트: CSS 반응형 레이아웃을 마스터하기 위한 필수 기술 중요한 지식 포인트: CSS 반응형 레이아웃을 마스터하기 위한 필수 기술 Feb 24, 2024 pm 10:09 PM

중요한 지식 포인트: CSS 반응형 레이아웃의 필수 기술을 익히려면 구체적인 코드 예제가 필요합니다. 현대 인터넷 시대에는 점점 더 많은 사람들이 모바일 장치를 사용하여 웹 페이지를 탐색하므로 웹 페이지의 반응형 레이아웃이 특히 중요해졌습니다. 반응형 레이아웃은 웹 페이지가 다양한 화면 크기와 장치 유형에 따라 레이아웃과 스타일을 자동으로 조정하여 다양한 사용자 경험에 적응할 수 있음을 의미합니다. CSS 반응형 레이아웃 기술을 익히는 것은 프런트엔드 개발자에게 필수입니다. 이 기사에서는 몇 가지 중요한 지식과 기술을 소개하고 구체적인 코드 예제를 제공합니다. 미디어를 사용하다

See all articles