📌 8장에서는 SQL을 처리할 때 발생하는 대기(wait)에 관해 알아봅니다. 또한, 대기를 발생시켜 '성능 문제'를 발생시키는 나쁜 이미지가 있지만 꼭 그렇지만은 않은 Lock에 대해서도 살펴봅니다. 8.1 | 대기와 오라클의 Lock을 왜 배워야 하는가? · 시스템 운영시 데이터베이스 안에 대기가 발생해 성능이 제대로 나오지 않거나 처리가 지연되기도 함. 이 때 대기의 구조를 제대로 이해하지 않으면 튜닝도 못하고, 지연도 해소할 수 없음 8.2 | 데이터베이스에 Lock이 필요한 이유 · Lock의 본질은 '다중 처리를 구현하기 위해 데이터를 보호한다'는 것이며, 병렬 처리를 가능케 하고 높은 처리량을 실현할 수 있음 · 병렬 처리를 하면 실행하는 시점에 따라서는 값이 변경되지 않는 현상이 발생(ex..
📌 7장에서는 오라클이 데이터를 실제로 보관하는 방식인 '데이터 구조'에 관하여 알아보며, 데이터를 꺼내고 집어넣을 때 어떤 방식으로 데이터가 보관되는 것이 유리할지 알아봅니다. 또한, 테이블스페이스, 세그먼트, 익스텐트, 블록등의 용어도 살펴봅니다. 7.1 | 오라클의 데이터 구조를 왜 배워야 하는가? · 오라클은 데이터를 관리하는 시스템이므로 데이터를 어떻게 저장하고 있는지를 이해하는 것은 오라클을 알기 위해선 필수 · 오라클은 전달받은 데이터를 '몇 개의 상자(데이터 구조)'로 나누어 저장하도록 고안됨. 7.2 | 가변 길이 데이터를 관리할 프로그램을 만들기 위해서는? · 데이터를 파일의 선두에서부터 차례대로 넣어 두면 쉽게 구현할 수 있을 것처럼 보이나, '데이터 변경'이나 '동시 처리'의 문제가..
📌 6장에서는 SQL을 처리하기 위해 애플리케이션에서 오라클로의 커넥션을 맺는 것에 관한 전반적인 내용과 서버 프로세스의 생성에 관해 살펴봅니다. 6.1 | 애플리케이션에서의 접속을 왜 배워야 하는가? · 애플리케이션에서 접속을 최적화하는 것만으로도 데이터베이스의 성능을 더욱 끌어올릴 수 있고, 애플리케이션에서 피해야만 하는 코딩 방식을 이해하는 데 도움이 되기 때문 · 접속 설정으로 인한 장애가 쉽게 발생하지만, 애플리케이션 접속을 포함한 아키텍처를 이해하고 있다면 대부분 쉽게 해결할 수 있음 · 오라클은 애플리케이션 서버를 사용한 시스템이나 클라이언트/서버 형태의 시스템에서도 많이 사용되고 있음. 즉 오라클과 '오라클을 사용하는 애플리케이션'이 같은 서버위에 있는 경우는 드물며, 애플리케이션(오라클 ..
📌 5장에서는 오라클의 기동에는 네 가지 상태가 있다는 것과, 기동 처리의 흐름, 기동할 때 사용되는 파일 등 오라클의 기동과 정지에 관해 살펴봅니다. 5.1 | 기동과 정지를 왜 배워야 하는가? · 기동할 때 어떤 파일을 어떻게 사용하는지, 의존 관계가 어떻게 되어 있는지를 안다면 내부 동작을 더 쉽게 이해할 수 있음 · 각종 파일이 손상된 장애에 대응해야 할 때도 내부 동작에 관한 지식을 알고 있다면 도움이 됨 5.2 | 오라클의 기동/정지의 개요 · 오라클을 창고 회사라고 비유하면 오라클의 기동은 '창고 회사의 업무 시작'이고, 오라클의 정지는 '창고 회사의 업무가 종료하는 것'에 해당 [창고 회사 오라클의 업무 시작 흐름] 1. 사원(영업 제외)이 출근함 2. 창고에 관한 정보(관리 대장)을 조사..
📌 4장에서는 RDBMS의 두뇌라고 할 수 있는 옵티마이저와 공유 풀이라고 불리는 오라클 특유의 캐시를 통해 오라클의 데이터베이스 성능을 향상할 수 있는 구조에 관하 살펴봅니다. 4.1 | SQL문의 분석과 공유 풀을 왜 배워야 하는가? · 디스크를 늘리고 클럭이 빠른 CPU를 추가하더라도 처리 방법 자체가 나쁘다면, 보잘것없는 장비에서 동작하지만 처리 방법이 더 효율적인 RDBMS에게 질 수 밖에 없음. · SQL을 처리하는 방법을 생성하는 데는 CPU를 오래 사용하므로, 처리 방법을 생성하는 횟수를 줄이면 데이터베이스 전체의 성능을 높일 수 있음. 따라서, '분석(parse, 파스)'이라 부르는 처리 방법의 생성과 생성한 처리 방법을 캐시하는 장소인 '공유 풀(shared pool)'을 배워야 함 4..
📌 3장에서는 SQL문을 고속으로 처리하는 오라클의 데이터 캐시 기능(버퍼 캐시)와 오라클의 프로세스가 캐시를 공유하기 위해 사용하는 특수한 메모리 기능(공유 메모리)에 관해 살펴봅니다. 3.1 | 어째서 캐시가 필요한 것인가? · 디스크가 동작하는 것은 매우 느리고 I/O 1회에 10~20밀리초 정도 걸리기 때문에 오라클은 '캐시'라고 불리는 기술을 사용해 가능한 한 디스크에서 처리하지 않고, 메모리에서 처리하는 구조를 갖고 있음 · 캐시는 가장 간단한 튜닝 항목이자 잘 알려진 기능 중 하나이며, 캐시의 동작을 잘 이해하면 데이터베이스 성능을 올려줄 수 있음 3.2 | 그래서 캐시란 대체 무엇인가? · 캐시란 빈번하게 사용하는 데이터를 매번 디스크에서 꺼내오지 않고 캐시라고 불리는 메모리에 둠으로써 빠..
📌 2장에서는 오라클에는 어떤 프로세스가 있고, 어떤 식으로 병렬 처리를 수행하는지 알아보며 SQL*Plus 등의 각종 프로그램과 데이터를 주고받는 구조를 설명합니다. 2.1 | 오라클의 역할 이미지 · 오라클을 포함한 DBMS(데이터베이스 관리 시스템)의 기본적인 동작은 '창고업자'로 비유할 수 있음. '데이터를 짐처럼 맡아서 보관하고, 요구에 따라 데이터를 반환한다'는 점에서 꽤 비슷함 · 시스템에서 데이터베이스는 데이터를 보관하는 장소로 사용되고 있으며, 애플리케이션이 데이터를 보관하고(또는 변경하거나 꺼내고) 싶을 때 사용 · 애플리케이션은 업무 처리나 화면 처리를 수행·처리하다가 '이 데이터가 필요하다'라고 생각한 시점이 되면 데이터베이스에 접근해서 데이터를 꺼내옴. 애플리케이션도 변수의 형태로..
📌 1장에서는 오라클의 기본 기능을 이해하기 위한 오라클 필수 키워드를 선정하고 이것을 토대로 I/O(Input, Output, 입출력)와 디스크의 관계를 자세하게 설명합니다. 1.1 | 오라클을 이해하기 위한 필수 키워드 ① 병렬 처리를 가능케 하고 높은 처리량을 실현한다. ② 응답 시간(response time)을 중시한다. ③ 커밋(COMMIT)한 데이터는 지킨다. 오라클을 포함한 모든 DBMS(Database Management System, 데이터베이스 관리 시스템)의 내부 구조는 매우 복잡하다. DBMS가 복잡해지는 이유는 위 세가지 특성을 모두 충족시켜야 하기 때문임. 이 세 가지 특성은 상반된 성향이 있어서 동시에 모두 만족시키기가 매우 어려움. 예를 들어, ③ '커밋(COMMIT)한 데이..