본문 바로가기

Database

(17)
오라클 Object 확인 쿼리 SELECT Owner, SUM("Tab") AS Tab, SUM("Ind") AS Ind, SUM("Syn") AS Syn, SUM("Seq") AS Seq, SUM("View") AS "View", SUM("Pkg") AS Pkg, SUM("Pkg Bds") AS "Pkg-BDs", SUM("Pro") AS "Proc", SUM("Fun") AS "Func", SUM("Trg") AS "Trg", SUM("Type") AS "Type", SUM("LOB") AS "LOB", SUM("DBLK") AS "DBLK" FROM ( SELECT Owner, COUNT(*) AS "Tab", 0 AS "Ind", 0 AS "Syn", 0 AS "Seq", 0 AS "View", 0 AS "Pkg", 0 AS ..
데이터베이스 HA(고가용성)와 Sharding(샤딩) HA (High Availability, 고가용성) - DabaBase HA 구성 or DataBase 이중화 - 여러 개의 Database Server를 세팅하여 Active - Active or Active - Standby(Primary - Secondary)로 동작 - 일부의 Database Server에 문제가 발생하여도 서비스에 이상이 없도록 구성 =모든 Database Server는 모두 공통된 최신 데이터를 가지고 있어야 한다. (DB Replication) = 전달되는 각종 Request들이 여러 Database Server 전달되어 실행되는 분산 환경이 구성되어있어야 한다. (Load Balance) = Active - Standby의 경우 Active Server에 문제가 생겼을경우 ..
Oracle 문법 DDL CREATE TABLE 테이블명( 컬럼명 데이터타입[(크기)][NOT NULL | NULL] [DEFAULT 값], [CONSTRAINT 기본키설정명 PRIMARY KEY (컬럼명[,컬럼명,...])], [CONSTRAINT 외래키설정명 FOREIGN KEY (컬럼명[,컬럼명,...])] REFERENCES 외부테이블명(컬럼명)]; DROP TABLE 테이블명; DROP USER 유저명; DROP FUNCTION 기능명; ALTER TABLE OLD테이블명 RENAME TO NEW테이블명; ALTER TABLE 테이블명 ADD 컬럼명 데이터타입[(크기)][DEFAULT 값] [NOT NULL|NULL]; ALTER TABLE 테이블명 MODIFY 컬럼명 데이터타입[(크기)][DEFAULT 값] [..
고급 SQL 활용 / DML 튜닝 고급 SQL 활용 (1) CASE문 활용 - 여러 번 테이블을 ACCESS하는 경우 CASE문을 활용하여 1번만 액세스 EX) NVL( SUM (CASE WHEN COLUMN = VALUE THEN COLUMN END), 0 ) (2) UNION ALL을 활용한 M:M 관계의 조인 - FULL OUTER JOIN을 대체할 용도로 UNION ALL 활용 가능 -> FULL OUTER JOIN을 할 경우 테이블을 각각 2회씩 ACCESS, UNION ALL 1번 (4) 페이징 처리 (5) WINDOW 함수 활용 (6) WITH 구문 활용 - 자주 쓰는 SELECT FROM 절일 경우 WITH 구문을 통해 한번 선언하고 테이블처럼 어디에서나 이용 가능하게 활용 가능하다. DML 튜닝 (1) 인덱스 유지 비용 ..
조인의 원리 및 활용 1. Nested Loop 조인 - Random Access 위주의 조인방식 -> Index 필수! - 조인을 한 레코드씩 순차적으로 진행 - 대용량 처리시 치명적 한계점 발생 -> 좁은 범위에서만 쓰임 -> OLTP 환경에 적합 - 인덱스 구성 전략이 매우 중요! 2. Sort merge 조인 - 소트 단계 : 양쪽 집합을 조인 컬럼 기준으로 정렬 - 머지 단계 : 정렬된 양쪽 집합을 merge - 조인을 위해 실시간으로 인덱스를 생성하는 것과 같은 효과 - 양쪽 집합을 정렬 후 NL조인과 같은 방식으로 진행하지만, PGA 영역에서 처리 -> 빠름! - 소트 부하만 감수한다면 버퍼 캐시에서 조인하는 NL조인 보다 유리 - 조인 컬럼에 인덱스 유무와 상관없이 조인 - 사용하는 경우 : Firtst 테이블..
인덱스 구조 및 이해(2) 4. 테이블 Random Access 부하 - Row ID의 구조 1) 확장적구조 (8i 부터) - 데이터 오브젝트(Index, Table 등) 번호 (6자리) - 데이터 파일 번호 (3자리) - 블록번호 (6자리) - 로우번호 (3자리) 2) Restricted 구조 (8i 이전) - 블록번호, 파일번호, 로우번호 Sequential Access Random Access - 하나의 블록에서 순차적으로 읽는다. - 알차게 빼 먹는다 - Index Leaf Block에서 Read / Full Scan - 적은 비용 - Full Scan일 경우 Multi Block I/O 가능 - 주로 하나의 블록에서 하나의 레코드만 - 높은 비용 . 낮은 효율 - Rowid 이용 테이블 Access - DBA를 이용한 인..
아키텍처 기반 튜닝 원리 1. 데이터베이스 아키텍처 Oracle Database Instance SGA Data Buffer Cache, Redo Log Buffer Shared Area Library Cache Dictionary Cache Java Pool, Large Pool Background Process PMON(프로세스), SMON(Ins 리커버리) DBWR, LGWR CKPT(체크포인트) Database Data Files Control Files Redo Log Files 1. 프로세스 – 백그라운드 프로세서 ORACLE SQL SERVER SMON DATABASE CLEAN UP/ SHRINKING THREAD PMON OPEN DATA SERVICE DBWR LAZYWRITER THREAD LGWR LOG W..
네트워크에서의 대기 이벤트들 - 네트워크 관련 대기 이벤트들 1) SQL*Net message from/to client 2) SQL*Net more data from/to client 3) SQL*Net message from/to dblink 4) SQL*Net more data from/to dblink 이들 이벤트가 성능문제가 연관되는 경우는 네트워크 속도가 느린 경우, SQL 실행횟수가 불필요하게 높은 경우, 어플리케이션의 구현방식에 문제가 있는 경우이다. - 네트워크 속도가 느린 경우 만일 위 이벤트를 대기하는 시간이 불필요하게 높다면 네트워크 속도를 의심해볼 수 있다. 클라이언트와 DBMS 간의 문제가 있다면 1번과 2번의 문제이며, DBMS와 DBMS간의 네트워크 문제가 있다면 3번과 4번에 대한 대기시간이 증가할 수..