- 컴퓨터가 메인 메모리에서 사용하기 위해 2차 기억 장치로부터 데이터를 저장하고 검색하는 메모리 관리 기법이다.
- 즉 가상기억장치를 모두 같은 크기의 블록으로 편성하여 운용하는 기법이다. 이때의 일정한 크기를 가진 블록을 페이지(page)라고 한다. 페이지를 나눠 보여줘 서버에 부담이 가지 않도록 방지하는 기술.
- 주소공간을 페이지 단위로 나누고 실제기억공간은 페이지 크기와 같은 프레임으로 나누어 사용한다.
프레임과 페이지는 메모리를 일정한 크기의 공간으로 나누어 관리하는 단위이며, 프레임과 페이지의 크기는 같다.
페이지가 하나의 프레임을 할당 받으면, 물리 메모리에 위치하게 된다. 프레임을 할당 받지 못한 페이지들은 외부 저장장치에 저장되며, 이때도 프레임과 같은 크기 단위로 관리된다.
DATABASE에서 페이징 기술 ROWNUM,TOP-N 기술로 구현
ROWNUM 은 테이블의 튜플(행)에 임시로 부여되는 일련번호
WHERE 조건에 ROWNUM을 사용하면 출력되는 튜플(행) 개수 제한 가능하다.
Q. 2,3번째처럼 특정 행만 출력하려면 어떻게 해야할까?
ROWNUM 개념과 인라인뷰 개념을 조합해서 상위 N개의 특정 데이터만 뽑아내는 기술
EX) 출력한 결과에서 직원의 연봉이 높은 순서대로 상위 5명만 출력해주세요.
[정답] ORDER BY보다 WHERE 문법이 먼저 실행되기 때문에 ROWNUM<=5로 먼저 잘라버렸다.
[해결방안] 정렬한 후에 5개의 행을 가져오면 되겠다!
→ ORDER BY가 실행된 테이블에 WHERE를 적용하자!(TOP-N)
SELECT *
FROM 직원
WHERE 연봉 IS NOT NULL
ORDER BY 연봉 DESC ; -- 이런 테이블이 있다고 가정(뷰테이블)
-----------------------------------------------------------
SELECT *
FROM 뷰테이블
WHERE ROWNUM <=5 -- 정렬된 테이블에서 상위 5개만 뽑을 수 있다!
ex) 게시판 테이블에서 그 다음에 있는 20개의 데이터를 뽑아주세요. (게시판번호를 예시로 하면 999980 ~ 999961 데이터)
(21번부터 40번까지.. ROWNUM 자체로는 ROWNUM 1번을 사용하지 않으면 쓸 수가 없다.)
1) 인라인뷰 전체를 A라는 별칭을 붙여준 후, WHERE ROWNUM <=40을 써서 ROWNUM 40번 이하를 뽑도록 해주고,
2) ROWNUM을 RN이라는 별칭을 붙여 ROWNUM이 아니라 번호 자체로 만들어준다(ROWNUM을 속인다).
3) 그 다음 또 다시 전체를 인라인뷰로 잡아줘서 WHERE RN>=21;로 21번 이후 정보들을 뽑아준다.