분류 전체보기
-
[Oracle] 오라클 DB 버퍼 캐시_(캐시 버퍼 LRU 체인)IT/etc 2022. 3. 30. 20:01
캐시 버퍼 LRU 체인 버퍼 헤더는 해시 체인 뿐 아니라 LRU 체인에 의해서도 연결돼 있다. DB 버퍼 캐시는 한번 읽은 데이터 블록을 캐싱해 두는 메모리 공간이지만 메모리는 유한한 자원이어서 모든 데이터를 캐싱할 수는 없는 일이다. 따라서 버퍼 캐시가 사용빈도가 높은 데이터 블록들 위주로 구성 될 수 있도록 LRU(Least recently used) 알고리즘을 사용해 관리된다. 모든 버퍼 블록 헤더를 LRU 체인에 연결해 사용빈도 순으로 위치를 옮겨가다가, Free 버퍼가 필요해질 때마나 액세스가 빈도가 낮은 데이터 블록들을 우선하여 밀어냄으로써 자주 액세스되는 블록들이 캐시에 더 오래 남아 있도록 관리한다. LRU 리스트에는 내부적으로 두 개의 리스트를 갖는다. *Dirty 리스트 : 캐시 내에서..
-
[Oracle] 오라클 DB 버퍼 캐시_(캐시 버퍼 체인)IT/etc 2022. 3. 29. 20:00
오라클 DB 버퍼 캐시_(캐시 버퍼 체인) 캐시 버퍼 체인 해시 체인은 래치에 의해 보호된다. DB 버퍼 캐시는 공유 메모리 영역인 SGA 내에 존재하므로 여러 프로세스에 의한 동시 액세스가 일어날 가능성이 크다. 따라서 같은 리소스에 대한 액세스를 반드시 직렬화해야하고, 이를 위해 구현된 일종의 Lock 메커니즘을 래치 라고 부른다. 래치를 획득한 프로세스만이 그 래치에 의해 보호되는 자료구조로의 진입이 허용된다. 두 개 이상의 프로세스가 같은 해시 체인으로 진입해 새로운 버퍼 블록을 연결하고 해제 하는 작업을 동시에 진행한다면 문제가 발생할 수 있고, 이를 방지하기 우이해 사용하는 것이 cache buffers chains 래치다. 하나의 cache buffers chains 래치가 여러 개 해시 체..
-
[Oracle] 오라클 DB 버퍼 캐시IT/etc 2022. 3. 28. 19:37
DB 버퍼 캐시 빠른 데이터를 입출력을 위해 SGA 공유 메모리를 이용한다고 설명했는데, 좀 더 구체적으로 말해 사용자가 입력한 데이터를 데이터파일에 저장하고 이를 다시 읽는 과정에서 거쳐 가는 캐시 영역은 SGA 구성요소 중 하나인 DB 버퍼 캐시(DB Buffer Cache) 이다. 블록단위 I/O 오라클에서는 I/O는 블록(block) 단위로 이루어지는데, 메모리 버퍼 캐시에서 버퍼 블록을 액세스 할 때뿐만 아니라 데이터파일에 저장된 데이터 블록을 DB 버퍼 캐시로 적재하거나 캐시에서 변경된 블록을 다시 데이터파일에 저장 할 때도 블록 단위로 처리한다. 데이터파일에서 버퍼 캐시로 블록을 적재할 때, 인덱스를 경유한 테이블 액세스 시에는 한 번에 한 블록씩(single block read) 읽어들이지..
-
[Oracle] 오라클 아키텍처 2IT/etc 2022. 3. 27. 20:00
오라클 데이터베이스 아키텍처 리스너(Listener)에 연결요청을 하는 순간 하나의 프로세스를 뛰우고(fork) PGA 메모리를 할당한다는 사실이다. 이는 비용이 매우 큰 작업이므로 하나 또는 일련의 SQL문을 수행하기 위해 매번 연결요청을 한다면 결코 성능이 좋을 리 없다. 오라클에 접속하는 애플리케이션을 구축할 때 반드시 커넥션 풀(Connection Pool)기능이 필요한 이유가 여기에 있다. 한번 커넥션을 맺으면 작업을 완료하더라도 이를 해제하지 않고 애플리케이션 서버에 Pooling 하고 있다가 반복 재사용한다. 뒤에서 라이브러리 캐시 최적화 원리, DB 버퍼캐시 최적화 원리를 공부하면서 느끼겠지만 그 모든 것이 재사용성과 관련 있다. 소프트웨어 세계에서 가장 중요한 화두인 재사용성은 데이터베이..
-
[Oracle] 오라클 아키텍처 1IT/etc 2022. 3. 26. 20:53
오라클 데이터베이스 아키텍처 Oracle Database에 대해 다시 Remind 하려고 한다. 먼저 기본 아키텍처부터 시작한다. 참고서적은 "오라클 성능 고도화 원리와 해법"이다. 오라클은 데이터베이스(데이터를 저장하는 파일 집합)와 이를 액세스하는 프로세스 사이에 SGA 라고 하는 메모리 캐시 영역을 두고 있다. 디스크를 경유한 입출력은 물리적으로 액세스 암(Arm)이 움직이면서 헤드를 통해 데이터를 읽고 쓰는 반면 메모리 캐시를 통한 입출력은 전기적 신호에 불과하기 때문에 디스크 I/O에 비교할 수 없이 빠르다. 우리가 흔히 사용하는 워드 프로세스도 이런 원리이다. 사용자가 워드파일(.doc)을 클릭하면 디스크를 읽어 해당 내용을 메모리로 상주시켜서 워드프로세서 프로그램에 보여진다. 여기서 워드프로..
-
봄식물 진달래/참꽃일상생활 2022. 3. 25. 20:24
봄 식물 진달래 봄이면 생각나는 꽃은 여러 가지 있다. 가장 먼저 생각나는 게 진달래와 개나리 일 것이다. 진달래에 대해 알아보자. 위키피디아에서는 아래와 같이 진달래를 정의하고 있다. 진달래 이름 진달래꽃. 두견화, 참꽃이라고도 한다. 함경북도에서는 천지꽃이라고 한다. 봄꽃 중에 화사하기로는 제일이다. 철쭉과 매우 비슷하지만, 독성이 강한 철쭉과 달리 진달래는 식용이 가능하다. 그래도 미량의 독이 있으니 잘못 먹으면 심한 복통에 시달릴 수 있어 주의해야 한다. 독소가 많은 꽃술은 떼어내고 먹어야 한다. 진달래와 철쭉은 맨눈만으로는 구분하기 어려운데, 진달래가 피는 시기가 철쭉보다 이르고, 진달래는 철쭉과 달리 꽃이 다 지고 난 다음 잎이 돋아나므로 구별하기 쉽다. 반면에 철쭉은 잎이 먼저 나오고 꽃이 ..
-
[Oracle] DBA_View의 테이블을 생성해보자.IT/etc 2022. 3. 24. 20:00
DBA_View 테이블 생성 Oracle Database의 dba_view는 dba_로 시작하는 뷰로 Database 운영 시 schema 그리고 운영시 필요한 정보를 담고 있는 뷰(View)이다. DBA_View를 조회 해보자. "select * from dba_views;" 이렇게 조회하면 Database 내의 view의 정보를 확인할 수 있다. dba_views 는 SYS계정 소유의 뷰이다. 만약 다른 A라는 계정에게 X,Y,Z 계정의 뷰 정보만 보여주자고 할 경우 dba_views의 select 권한을 부여하면 Database 내의 전체 계정의 뷰를 조회할 수 있어 요청의 범위를 넘어선다. 이럴 경우는 어떻게 해야 할까! 테이블을 생성해서 요청 계정의 뷰 정보만 삽입하여 처리할 수 있다. 여기서 ..
-
[중고차 고질병 6탄] 기아 모하비IT/etc 2022. 3. 23. 20:22
중고차 고질병 모하비 이번에는 기아 SUV의 사골 모하비의 중고차 구매시 고려사항에 대해 알아보겠다. 현대 베라크루즈와 쌍둥이라 할 수 있다 비슷한 시기에 출시가 되었다, 하지만 베라크루즈는 15년도에 단종이 되었지만 모하비는 아직 판매하고 있다. 정말 기아가 사골 끓이듯이 팔고 있다. 얼른 텔루라이드가 국내에서 생산이 되어야 팰리세이드와 경쟁을 할 수 있지 않을까! 모하비의 고질병은 어떤 부분이 있을까? 1. 오일필터 하우징에서 누유가 발생한다. 오일필터 주변을 보면 누유가 되어 있는지 확인을 해야 하며 만약 구매를 결정하였을 경우에는 오일필터하우징 어셈플리 교체 및 흡기클리닝으로 약 40만원정도 비용이 든다고 한다. 2. 모하비에는 에어서스펜션이 있다. 중고 구매시 에어서스펜션이 잘 동작이 되는지 컴..