오라클 LRU알고리즘

허선우·2021년 6월 9일
0

SQL-Oracle/my SQL

목록 보기
1/1
post-thumbnail

LRU알고리즘이란 Oracle database의 메모리 관리를 효율적으로 하기 위해 고안된 대표적인 알고리즘으로 최신 데이터를 메모리에 유지시키고 오래된 데이터를 메모리에서 내보내게 하는 알고리즘

메모리에서 조회하면 1초가 걸린다. cache hit
메모리에 없어서 디스크에서 조회하면 5초가 걸린다. cache miss

cache hit를 많이 할 수 있도록 메모리를 관리하는 알고리즘? LRU알고리즘


오라클에서
select ename
from emp
where ename = 'SCOTT';이라는 입력을 넣으면

1.먼저 디스크에서 데이터를 읽는다. (cache miss, 5초 소요)
2. 조회한 데이터는 메모리에 저장되며 그 다음 정보들이 메모리에 들어오게 됨에 따라 MRU에서 LRU쪽으로 이동한다.
3.LRU에 도착하면 더이상 저장할 공간이 없어 디스크로 이동한다.


LRU알고리즘 설명링크
https://cafe.daum.net/oracleoracle/Sh6h/2023
알고리즘 작성

cities = ['Jeju','Pangyo','NewYork','NewYork']

def cacheProcess(city_list,cachesize):
    cities = list(map(lambda x:x.lower(),city_list)) #요소를 소문자로 변경
    cache = [None for i in range(cachesize)]    # None으로 구성된 리스트 생성
    
    time = 0
    for i in range(len(cities)):
        
        if cities[i] in cache:    #메모리에 데이터가 들어있다면 1초 추가
            time+=1
        else:                     #디스크에 데이터가 들어있다면 5초 추가
            time+=5
            
        cache.append(cities[i])    #메모리 변경
        del[cache[0]]
    return time
cacheProcess(cities,4)

0개의 댓글