STUDY
-
개발자를 위한 인덱스 생성과 SQL작성 노하우 : 9-11STUDY/DB 2022. 7. 25. 00:15
- 공정쿼리 작성법 공정쿼리란, 무엇을 어떻게 조회할지에 대한 내용을 담고 있고, 쿼리 자체만으로 인덱스 생성 위치와 실행계획을 알 수 있는 쿼리이다. 무엇을 어떻게 조회할지에 대한 내용을 모두 포함해서 쿼리를 작성하므로 공정쿼리로 작성한 쿼리에서는 쿼리의 결과뿐만 아니라 생성해야 할 인덱스 정보와 접근돼야 할 실행계획 정보까지 모두 알 수 있다. 오라클 CBO(Cost Based Optimizer) 방식은 통계정보를 이용해 비용을 계산한 후 SQL을 수행한다. 통계정보가 존재하고 비교적 정확하다면, 오라클은 대부분의 쿼리에서 올바르고 적절한 실행계획을 제공하고 쿼리를 수행한다. 만약 통계정보가 존재하지 않거나 잘못된 정보를 갖고 있다면 정확한 실행계획을 제공하지 못하고 쿼리 수행도 최적이지 않다. 올바..
-
개발자를 위한 인덱스 생성과 SQL작성 노하우 : 인덱스STUDY/DB 2022. 6. 29. 22:02
1. 인덱스는 분류이다. 분류의 특징 분류의 역사는 인류의 역사와 궤를 같아한다. 분류는 인간 세계뿐만 아니라 동물의 세계에서도 존재한다. 수많은 자료를 정리,관리,검색한다는 의미에서 분류는 DB 그 자체이다. 과거의 계층적인 분류부터 최근의 컴퓨터정보 분류에 이르기까지 분류는 지속적으로 발전했다. 체계적으로 정리된 자료는 검색 시간을 줄여 비용 절감으로 연결괸다. 이것이 분류의 힘이다. 물리적 분류의 특징 직접적이고 시각적인 분류 방식 인류 역사와 함께 널리 사용됨 현실 세계의 분류에서 적합 분류 대상과 분류 정보 일체형 동일한 시공간에서 오직 한 분류만 가능 분류 대상과 분류 정보는 1:1 관계 논리적 분류의 특징 간접적이고 추상적인 분류 방식 컴퓨터 사용과 더불어 폭넓게 사용 디지털 세상의 분류에 ..
-
그림으로 공부하는 오라클 구조 : 커넥션과 서버 프로세스의 생성STUDY/DB 2022. 5. 30. 00:32
1. 오라클의 접속 동작 1.1 소켓의 동작 오라클은 TCP/IP의 소켓(socket)을 네트워크 통신 수단으로 사용하고 있다. 한 번 소켓을 만들어 두면 소켓을 읽고 쓰기만 해도 송수신을 구현할 수 있으므로 프로세스의 측면에서 편리한 기능이다. 네트워크의 드라이버와 OS의 라이브러리가 송수신을 수행하며, 네트워크 안에는 여러 개의 소켓이 존재한다. 소켓은 '주소(address)'와 '포트(port)번호'라고 불리는 번호의 조합으로 식별할 수 있고, 소켓의 연결에서 중요한 부분은 연락이 오기만을 기다리는 프로세스가 존재한다는 점과 연결할 때는 송신 측에서 '주소'와 '포트'를 반드시 지정해야 한다는 점이다. 1.2 오라클에서 소켓의 동작 오라클에서도 위 그림과 같이 동작하며, 오라클에서는 수신을 기다리는..
-
그림으로 공부하는 오라클 구조 : 오라클의 기동과 정지STUDY/DB 2022. 5. 15. 21:38
1. 기동과 정지 오라클을 창고회사라고 비유했을 때, 기동은 창고 회사의 업무 시작이고, 정지는 창고 회사의 업무 종료를 의미한다. - 기동(업무 시작)의 흐름 사원(영업 제외)이 출근함 창고에 관한 정보(관리 대장)를 조사함 창고를 대충 훑어본 뒤, 문제가 없다면 창고를 열어 업무를 시작함 - 정지(업무 종료)의 흐름 업무(SQL이나 트랜잭션 등)가 끝나는 것을 기다린다. 단, 급할 때는 업무 중이더라도 업무 처리를 중지함(종료 명령어 옵션으로 지정 가능) 작업장의 물건(캐시상의 데이터)을 창고(파일)에 정리한다. 단, 급할 떄는 작업장의 물건들을 정리하지 않음.(종료 명령어 옵션으로 지정 가능) 사원이 퇴근함(프로세스의 종료) * 컨트롤 파일이란, 데이터베이스의 구성 정보가 적혀 있는 파일로서 데이터..
-
그림으로 공부하는 오라클 구조 : SQL문 분석과 공유 풀STUDY/DB 2022. 5. 9. 00:17
1. SQL문의 분석과 공유 풀을 배워야 하는 이유 디스크를 늘리고 클럭이 빠른 CPU를 추가하더라도 처리 방법 자체가 나쁘면, 안좋은 장비에서 동작하지만 처리 방법이 더 효율적인 RDBMS에게 밀리게 된다. 또한, SQL문을 처리하는 방법을 생성하는 데는 CPU를 오래 사용하므로, 처리 방법을 생성하는 횟수를 줄이면 데이터베이스 전체의 성능을 높일 수 있다. 2. SQL문과 일반적인 프로그래밍 언어의 차이 가장 큰 차이점은 SQL은 '처리 방법(절차)'을 기술하지 않는다는 점이다. 프로그래밍 언어는 객체지향 언어, 스크립트 언어에 상관없이 처리 방법(어디선가 데이터를 꺼내와서 반복문을 수행하고 조건문을 사용해 분기를 시킨다)을 기술해야 한다. 반면에, SQL문에서는 '데이터의 조건이나 관계'만을 기술한..
-
그림으로 공부하는 오라클 구조 : 캐시와 공유 메모리STUDY/DB 2022. 5. 8. 22:03
1. 캐시 일반적으로 캐시를 '작업장'이나 '작업대'에 비교 캐시의 목적은 빈번하게 사용하는 데이터를 매번 디스크에서 꺼내오지 않고 캐시라고 불리는 메모리에 둠으로써 빠르게 사용할 수 있도록 하는 것이다. 메인 메모리에는 프로세스가 사용한 메모리(변수 등)는 물론, 캐시가 놓여 있다. 디스크의 데이터를 처리해야 할 때, 메모리(캐시)에 같은 데이터가 존재하면 디스크에서 읽을 필요없이 CPU에게 데이터를 직접 건네줄 수 있다. - 오라클에서의 데이터 캐시(버퍼 캐시) 동작 버퍼 캐시에 놓여 있는지 확인 데이터를 버퍼 캐시에서 빠르게 꺼내와서 처리 캐시를 히트하면 처리 속도가 느린 디스크를 사용할 필요가 없기 때문에 SQL문의 처리 속도가 빨라진다. 버퍼 캐시에 놓여 있는지 확인 데이터를 디스크에서 읽어 옴..
-
그림으로 공부하는 오라클 구조 : 오라클의 여러 프로세스STUDY/DB 2022. 4. 25. 00:00
오라클 - DBMS인 오라클은 해당 데이터를 디스크에 저장하고 관리한다. 오라클을 포함한 DBMS의 기본적인 동작은 데이터를 보관하고, 요구에 따라 데이터를 반환한다. - 오라클은 SQL문과 그 결과 데이터를 프로그램과 송수신한다. - 프로그램은 여러 개 존재할 수 있으며, 오라클의 프로세스도 여러 개 존재한다. 데이터베이스를 사용하지 않는 애플리케이션의 프로그래밍에서는 각각의 프로세스가 자신이 가진 변수(데이터)를 처리하는 것이 일반적이다. 같은 프로그램이 여러 개 실행되었다 하더라도 실제로 변수는 개개의 프로그램마다 존재하기 때문에 프로세스간의 간석을 신경 쓸 필요없이 데이터를 건드려도 문제가 없다. 하지만 데이터베이스에서는 여러 프로세스나 사용자가 하나의 데이터베이스(데이터 집합)에 접근하기 때문에..
-
그림으로 공부하는 오라클 구조 : I/O와 디스크의 관계STUDY/DB 2022. 4. 24. 22:30
- 오라클을 이해하기 위한 키워드 1. 병렬 처리를 가능케 하고 높은 처리량을 실현한다. 2. 응답 시간(response time)을 중시한다. 3. 커밋(commit)한 데이터는 지킨다. DBMS의 내부 구조는 복잡한데, 그 이유는 위 세 가지 특성을 충족시켜야하는데 세 가지 특성이 상반된 성향을 가지고 있어서 동시에 모두 만족시키기 어렵기 때문이다. ex1) '커맛(commit)한 데이터는 지킨다.' 를 만족하기 위해 커밋하는 순간 데이터를 디스크에 기록하고 싶지만, 그렇게 하면 응답 시간이 나빠지게 된다. ex2) '벙렬 처리를 가능케 하고 높은 처리량을 실현한다' 도 병렬 처리할 때는 모순되는 처리가 발생하지 않도록 Lock이 필요하며, 그로 인해 성능이 저하되는 경우가 발생할 수 있다. - 오라..