일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- RAC
- Oracle
- 친절한SQL튜닝
- 리눅스
- SQLP
- 로버트C마틴
- table full scan
- B*Tree인덱스
- 오라클
- B*Tree인덱스구조
- 파이썬
- join
- database
- leetcode215
- 조인
- db
- clean code
- B*Tree
- 오라클튜닝
- 알고리즘
- 리트코드215
- 데이터모델링
- SQL튜닝의시작
- 결합인덱스구조
- 클린코드
- index fast full scan
- intellij
- SQLD
- 클린 코드
- heapq
- Today
- Total
목록Database/Oracle (10)
개발노트
테이블에 저장된 데이터를 읽는 방식은 2가지다.- 테이블 전체를 스캔해서 읽는 방식 : Table Full Scan - 인덱스를 이용해서 읽는 방식 : Index Range Scan Table Full Scan 이란시퀀셜 액세스와 Multiblock I/O 방식으로 디스크 블록을 읽는다. 한 블록에 속한 모든 레코드를 한 번에 읽어 들이고, 캐시에서 못 찾으면 '한 번의 수면(I/O Call)을 통해 인접한 수십~수백 개의 블록을 한꺼번에 I/O하는 메커니즘이다. 이 방식을 사용하는 SQL 은 스토리지 스캔 성능이 좋아지는 만큼 성능도 좋아진다. 그러나 시퀀셜 액세스와 multiblock i/o 가 아무리 좋아도 수십~수백 건의 "소량" 데이터를 찾을 때 수백만~수천만 건 데이터를 스캔하는 것은 비효율적..
테이블에서 데이터를 찾는 방식 2가지1. 테이블 전체를 스캔 2. 인덱스를 이용 인덱스는 큰 테이블에서 소량 데이터를 검색할 때 사용한다. 그래서 온라인 트랜잭션 처리(Online Transaction Process, OLTP) 시스템에서는 소량 데이터를 주로 검색하므로 인덱스 튜닝이 무엇보다 중요하다. 인덱스란대용량 테이블에서 필요한 소량의 데이터만 빠르게 효율적으로 액세스하기 위해 사용하는 오브젝트다. DBMS 는 일반적으로 B*Tree(Balanced Tree) 인덱스를 사용한다. B*Tree 구조를 가지는 인덱스 구조 B*Tree 구조는 루트 블록, 브랜치 블록, 리프 블록으로 구성되어 있다. 루트와 브랜치 블록에 있는 각 레코드는 하위 블록에 대한 주소값을 가지고 있다. 키값은 하위 블록에 저장..
1) system 계정으로 접속 sqlplus C:\WINDOWS\system32>sqlplus 2) 관리자 권한 접속 SQL> conn/as sysdba 3) 계정 생성 CREATE USER [ID] IDENTIFIED BY [PW] create user sampleid identified by 1234; 4) 권한 부여 계정을 생성한 후 권한을 부여하지 않으면 접속 조차 안된다 CONNECT : DB 접속 권한 RESOURCE : 객체 및 데이터 조작 권한 GRANT [Roles] TO [ID] grant connect, resource, dba to sampleid; 5) 계정생성 확인 select * from all_users;
커서(Cursor) Cursor 는 Oracle 서버에서 할당한 전용 메모리 영역에 대한 포인터이다. 질의의 결과로 얻어진 여러 행이 저장된 메모리상의 위치(포인터) 값이다. 커서는 Select 문의 결과 집합을 처리할 때 사용한다. 암시적 커서(Implicit Cursor) 오라클 DB에서 실행되는 모든 SQL문장은 암시적인 커서가 생성되며, 커서 속성을 사용할 수 있다. 모든 DML과 PL/SQL SELECT 문에 대해 선언된다. 암시적인 커서는 오라클이나 PL/SQL 실행 매커니즘에 의해 처리되는 SQL 문장이 처리되는 곳에 대한 익명의 주소이다. Oracle 서버에서 SQL 문을 처리하기 위해 내부적으로 생성/관리한다. 암시적 커서는 SQL문이 실행되는 순간 자동으로 Open 과 Close 를 실..
Oracle RAC(Real Applications Cluster) RAC 데이터베이스에는 일반적으로 여러 개별 서버에 동일 공유 데이터베이스에 대한 여러 Instance 가 포함된다. 대부분의 회사들은 oracle 서버를 사용할 때 RAC 구조로 서버를 구성한다. RAC으로 연결된 N개의 Instance는 동일한 Datafile을 공유(사실 같은 파일을 공유한다기보다는.. 동기화 작업으로? 내용은 같으나 물리적 위치는 다르지 않나?)하여 사용하지만, 데이터베이스 작업에 사용할 수 있는 CPU나 메모리 등의 Resouce 는 서로 공유하지 않고 해당 Node의 Resource만 사용한다. 아래와 같은 이미지로 RAC 을 구성할 때, tnsnames.ora 는 다음과 같이 구성 TNS_I1 = (DESCR..
Instance 란? 공유 메모리 영역(SGA) 와 Backgroud Process 를 의미한다. 오라클 데이터베이스 서버가 Shutdown 상태에서 No Mount 상태로 변경될때, Instance 가 시작된다. 이는 SGA 영역이 할당되고, Backgroud process 가 시작되는 것을 의미한다. Single Instance System(=단일 인스턴스 시스템, 클러스터화되지 않은 시스템) disk 와 insatance 가 1:1 매칭됨 Disk1 ← Instance1 Disk2 ← Instance2 Disk3 ← Instance3 Clustered System(=클러스터화된 시스템, RAC) 하나의 disk를 여러 서버가 공유하는 구조 Server1 → Disk그룹1 ← Instance1(=no..
4가지 기동 상태 Shutdown : Database 와 Instance 가 모두 Close 된 상태이다. 접속 불가 No Mount : Instance(백그라운드 프로세스 + SGA) 는 Start 된 상태이다. 그러나 Database 는 여전히 Close 상태이다. 초기화 Parameter file 을 사용해서 Instance 를 구성하여 시작하는 단계이다. sql*plus 에서 Instance 를 시작하면 SGA에 할당된 메모리 사이즈를 표시해준다. Mount : Database가 Mount 된 상태이다. Instance Start 유지 Control file 을 읽어서 특정 Database 와 Instance 를 연관시키는 단계이다. 데이터파일 이름변경, 아카이브로그모드 변경, 데이터베이스 복구 ..
오라클 데이터베이스 서버의 중요한 세가지 구조 1. 메모리 구조 2. 프로세스 구조 3. 저장 영역 구조 메모리 구조 크게 SGA 와 PGA 로 구성되어 있다. 1. SGA 구성요소 Instance 에 대한 데이터 및 제어 정보를 포함하는 공유 메모리 영역이다. 사용자: 모든 서버 프로세스, 백그라운드 프로세스 다음 데이터 구조를 포함한다.(** 는 필수요소) **Database buffer cache 데이터베이스에서 검색된 데이터 블록을 캐시에 저장한다. **Shared pool 유저 간에 공유할 수 있는 다양한 구성요소를 캐시에 저장한다. Library cache : 공유 SQL 영역, SQL Parsing 방법 결정시 참고하는 영역 Dictionary cache : SQL Excute(실행)시 사용..