일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Oracle
- SQLP
- RAC
- 클린 코드
- leetcode215
- intellij
- clean code
- 알고리즘
- 친절한SQL튜닝
- 로버트C마틴
- 리트코드215
- table full scan
- 결합인덱스구조
- db
- 리눅스
- join
- B*Tree인덱스구조
- SQLD
- 조인
- heapq
- 파이썬
- B*Tree인덱스
- 데이터모델링
- B*Tree
- 클린코드
- SQL튜닝의시작
- index fast full scan
- 오라클튜닝
- 오라클
- database
- Today
- Total
목록Database (22)
개발노트
테이블에 저장된 데이터를 읽는 방식은 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;
ROWNUM 이란? ROWNUM 은 Oracle 에서 제공하는 가상 컬럼이다. Select 절에서 사용할 경우, 추출하는 데이터의 순번을 부여하는 용도로 사용된다. Where 절에서 사용할 경우, 추출할 데이터 중 일부만 가져올 용도로 사용된다. 특히, where 절에 사용되는 ROWNUM은 인덱스의 특성을 이용하여 부분범위 처리로 유도할 수 있어 잘 사용하면 효율적인 SQL이 된다. ROWNUM 사용시 주의 사항 ROWNUM 데이터를 먼저 추출한 이후 조회하자 ROWNUM 은 SQL 결과 셋에 순번을 1부터 부여하는 가상컬럼으로써, Fetch 단계에서 추출하는 첫 번째 로우에 1을 부여한다. 그리고 다음 로우 추출시 ROWNUM을 +1 한다. 따라서 1이 존재하지 않으면 다음 순번을 부여할 수가 없다...
WITH절 설명 & 사용법 정의 WITH절은 오라클9 버전부터 사용되었고, 이름이 부여된 임시 서브쿼리라고 생각하면 된다. 임시 테이블을 만든다는 관점에서 보면 VIEW 와 쓰임새가 비슷하다. 그러나 차이가 있다면 VIEW 는 DROP 되지 않는 한 재사용이 가능한 Object 이지만, WITH절의 경우 실행되는 쿼리문 안에서만 재사용된다. 사용법 예시 WITH cte1 AS (SELECT a, b FROM table1), cte2 AS (SELECT c, d FROM table2) SELECT b, d FROM cte1 JOIN cte2 WHERE cte1.a = cte2.c; - 서브쿼리를 AS 뒤에 괄호에 넣고, AS 앞에 서브쿼리에 대한 이름을 붙여준다. - WITH 절로 생성된 서브쿼리는 tab..
속성 업무에서 필요한 정보인 엔터티가 가지는 항목이다 속성은 더이상 분리되지 않는 단위로, 업무에 필요한 데이터를 저장할 수 있다 인스턴스의 구성요소이고, 의미적으로 더 이상 분해되지 않는다 속성의 특징 속성은 업무에서 관리되는 정보이다 속성은 하나의 값만 가진다 주식별자에게 함수적으로 종속된다. → 기본키가 변경되면 속성의 값도 변경된다 속성의 종류 분해 여부에 따른 속성의 종류 단일 속성 하나의 의미로 구성된 것 예) 회원id, 이름 복합 속성 여러 개의 의미가 있는 것 예) 주소(시, 군, 동 등으로 분해 가능) 다중값 속성 여러개의 값을 가지는 것 다중값 속성은 엔터티로 분해된다 예) 상품 리스트 특성에 따른 속성의 종류** 기본 속성 비즈니스 프로세스에서 도출되는 본래의 속성이다 예) 회원id,..
엔터티(Entity) 엔터티는 업무에서 관리해야 하는 데이터 집합을 의미하며, 저장되고 관리되어야 하는 데이터이다. 엔터티는 개념, 사건, 장소 등의 명사이다. 엔터티의 특징 1) 유일한 식별자가 있어야 한다 2) 2개 이상의 인스턴스가 있어야 한다 3) 1개 이상의 속성을 가지고 있어야 한다 4) 다른 엔터티와 최소 1개 이상의 관계가 있어야 한다 5) 업무에서 관리되어야 하는 집합이다 엔터티의 종류 유/무형에 따른 엔터티의 종류 유형 엔터티 물리적 형태가 있다 업무에서 도출되며, 지속적으로 사용되는 엔터티이다 예) 고객, 강사, 사원 등 개념 엔터티 개념 엔터티는 물리적 형태가 없다 예) 거래소 종목, 코스닥 종목, 생명보험 상품 사건 엔터티 비즈니스 프로세스를 실행하면서 생성되는 엔터티이다 예) 주..
스키마(Schema) 컴퓨터 과학에서 데이터베이스 스키마(database schema)는 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조이다. 데이터베이스 관리 시스템(DBMS)이 주어진 설정에 따라 데이터베이스 스키마를 생성하며, 데이터베이스 사용자가 자료를 저장, 조회, 삭제, 변경할 때 DBMS는 자신이 생선한 데이터베이스 스키마를 참조하여 명령을 수행한다. 3층 스키마(3 level schema) 사용자, 설계자, 개발자가 데이터베이스를 보는 관점에 따라 데이터베이스를 기술하고 이들간의 관계를 정의한 ANSI 표준이다. 데이터의 독립성을 확보하기 위한 방법 중 하나이다. 데이터 독립성의 확보는 데이터 복잡도 증가, 데이터 중복 제거, 사용자 요구사항 변..