CS/오라클구조 (8) 썸네일형 리스트형 [그림으로 배우는 오라클구조]REDO와 UNDO의 동작 ACID 트랜잭션이 가지고 있어야하는 특성에 'ACID'가 있다. 이 특성을 구현하기 위해 REDO와 UNDO가 필요하다. A(Atomicity) : 원자성 DBMS는 수행 중인 트랜잭션에서 데이터를 일부만 변경하고 나머지는 수행하지 않은 채 커밋할 수 없다. 트랜잭션은 더 이상 분리할 수 없는 데이터 변경을 위한 최소 단위이다. C(Consistency) : 일관성 트랜잭션에 의해 데이터 간의 일관성이 어긋나서는 안된다. 일관성이 어긋나는 예로, '고객 개인의 데이터는 변경되었는데, 고객 전체의통계 데이터는 변경되지 않았다.' 같은 것들이 있다. I(Isolation) : 고립성 트랜잭션 끼리는 독립되어 있다. 어떤 트랜잭션을 단독으로 실행하는 것과 다른 트랜잭션과 동시에 실행하는 것에 결과가 같아야 .. [그림으로 배우는 오라클구조]오라클의 데이터 구조 가변 길이 데이터를 관리할 프로그램을 만들기 위해 여러 테이블의 데이터를 파일로 관리하기 위한 프로그램을 처음부터 만든다고 가정하고, 해당 프로그램의구조를 떠올려보자. 관리할 데이터는 가변 길이이며, 길어지는 경우도 있지만 짧아지는 경우도 있고, 삭제하거나 생성하는 경우도 있다. 파일의 선두에서부터 데이터를 차례대로 넣어 두면 이미 입력된 데이터의 크기를 변경할 때 문제가 발생하고 데이터를 동시에 처리할 수도 없다. 또한 선두에서부터 차례로 저장할 경우 어떤 테이블이 어떤 데이터를 가졌는지 I/O를 읽어오는 횟수가 많아지며, 공간이 잘게 나누어져 관리하기도 힘들다. 이런 문제점을 정리하면 다음의 세 가지를구현할 수 있는 구조가 필요하다. 관리 및 I/O의 효율을 고려해 공간을 어느 정도의 크기로 뭉쳐서 .. [그림으로 배우는 오라클구조]커넥션과 서버 프로세스의 생성 오라클의 접속 동작 애플리케이션에서 접속하는 것을 최적화 하는 것 만으로도 데이터베이스 성능을 더욱 끌어올릴 수 있다. 오라클은 네트워크 통신 수단으로서 대부분 TCP/IP의 소켓을 사용한다. -커넥션 동작 1. 서버는 특정 포트번호로 오는 것을 기다림(listen 상태) 2. 클라이언트는 커넥션 하고 싶은 상대의 IP 주소와 포트 번호를 향해 송신 3. 서버는 클라이언트의 요청에 응답 커넥션 처리 1 : 리스너 기동 하나의 리스너는 여러개의 DB에 안내할 수 있다. 일반적인 상황에서는 하나의 리스너가 데이터베이스 한 개를 담당한다. 리스너의 설정이 끝나면, lsnrctl 이라는 도구를 사용해서 리스너를 기동한다. 커넥션 처리 2 : 애플리케이션에서의 커넥션 다음은 애플리케이션 측에서의 커넥션이다. 먼저.. [그림으로 배우는 오라클구조]오라클의 기동과 정지 기동/정지의 개요 오라클을 창고 회사라고 비유하면, 기동은 업무의 시작이고 정지는 업무의 종료이다. 이를 큰 흐름으로 보면 다음과 같다. -업무 시작 흐름 사원(영업 제외)이 출근함 창고에 관한 정보(관리 대장)를 조사함 창고를 대충 훑어본 뒤 문제가 없다면 창고를 열어 업무를 시작함 -업무 종료 흐름 업무(SQL이나 트랜잭션 등)가 끝나는 것을 기다린다. 단, 급할 때는 업무 중이더라도 업무 처리를 중지함 작업장의 물건(캐시상의 데이터)을 창고(파일)에 정리한다. 단, 급할 때는 작업장의 물건들을 정리하지 않음 사원이 퇴근함(프로세스 종료) 이를 정리하면 네 가지 상태로정리할 수 있다. OPEN : 데이터 처리를 할 수 있는 상태. SQL을 처리할 수 있는 상태 MOUNT : 데이터 파일 등에 접근할 .. [그림으로 배우는 오라클구조]SQL문 분석과 공유 풀 SQL문의 분석과 공유 풀을 왜 배워야 하는가? 아무리 디스크를 늘리고 클럭이 빠른 CPU를 추가하더라도 RDBMS의 처리 방법 자체가 나쁘면 처리 방법이 효율적인 더 낮은 사양의 장비에서 동작하는 RDBMS에게 질 수밖에 없다. 또한 SQL문을 처리하는 방법을 생성하는 데는 CPU를 오래 사용하므로, 처리 방법을 생성하는 횟수를 줄이면 DM 전체의 성능을 높일 수도 있다. 이번 장에서 주로 다를 분석(Parse, 파스)은 이런 처리 방법 중 하나이다. SQL문과 일반 프로그래밍 언어의 차이 일반적인 프로그래밍 언어와 SQL의 차이는 무엇일까. SQL은 처리방법(절차)을 기술하지 않는다는 점이 가장 큰 차이라고 말할 수 있다. 프로그래밍 언어는 종류에 상관없이 처리 방법을 기술해야한다. 어디서 데이터를 .. [그림으로 배우는 오라클구조]오라클의 대기와 Lock 대기와 오라클의 Lock을 배워야하는 이유와 필요한 이유 데이터베이스 안에 대기가 발생하면 성능이 제대로 나오지 않거나 처리가 지연된다. 대기의 구조를 제대로 이해하지 않으면, 이런 지연을 해소할 수 없다. 나아가 'Lock 대기', 'Deadlock(교착 상태)'와 같은 장애를 만날 수도 있다. 이런 경우 대기나 Lock 구조를 재댜로 이해하고 있지 않으면 대처하기 어렵다. 어떤 고객이 창고에 맡긴 물건의 내용에 숫자 1을 더하고 싶다고 요청했다. SELECT counter FROM counter_table WHERE id=1; UPDATE counter_table SET counter = WHERE id=1; 먼저 데이터를 꺼낸 후 그 값에 1을 더하여 다시 업데이트하는 방법으로 충분할거 같아 보인다.. [그림으로 배우는 오라클구조]캐시와 공유 메모리 캐시란? 캐시(Cache)를 일반적으로 '작업장' 또는 '작업대'에 비유하는 경우가 많다. 캐시의 목적은 자주 쓰는 도구들을 책상 위나 손이 잘 닿는 곳에 두는 것과 같다. 일반 컴퓨터에서 메인메모리는 디스크의 데이터를 처리해야 할 때, 캐시 메모리에 같은 데이터가 존재하면 디스크에서 읽을 필요 없이 바로 CPU에게 데이터를 직접 건네줄 수가 있다. 이와 같이 오라클은 디스크의 동작이 매우 느리다는 한계를 캐시를 이용해 보완한다. 가능한 한 디스크에서 처리하지 않고 캐시에서 처리하는 구조를 갖고 있다. 캐시를 사용한 인덱스 검색 인덱스를 3계층이라고 가정하고 인덱스를 사용해 테이블에서 데이터를 한건 꺼내오는 SQL문의 시간을 예측해보자. 테이블의 한 블록을 포함해 총 네 블록을 처리해야하는 경우, I/O.. [그림으로 배우는 오라클구조]오라클 디스크와 프로세스 오라클을 이해하기 위한 필수 키워드 병렬 처리를 가능케 하고 높은 처리량을 실현한다 응답 시간을 중시한다 커밋한 데이터는 지킨다 DBMS(DataBase Management system)가 복잡해지는 이유는 위 세 가지 특성을 모두 충족시켜야하기 때문이다 이 특성들은 서로 상반된 성향이 있어 동시에 만족시키기 어려움 ex) 3번째 특성을 위해 커밋하는 순간 데이터를 디스크에 기록하면, 응답시간이 나빠짐 1번째 특성을 위해 Lock을 처리하면 성능이 저하됨. 디스크의 동작과 인덱스(Index) 데이터베이스를 저장하고 관리하는 공간인 디스크는 항상 회전하고 있으며 그 위로 헤드가 움직여서 데이터를 읽거나 기록한다. 탐색(Seek) 데이터를 읽기or기록하기 위해 원하는 데이터가 저장되기 시작한 첫머리를 찾는 .. 이전 1 다음