Dexaboud3@naver.com kHS 데이터베이스 테이블 및 인덱스 dexaboud3@naver.com kHS.

Slides:



Advertisements
Similar presentations
북한기도제목 4 월 3 주 (4/15-4/21). 1. 북한정치 - 통일부와 국방부는 11 일 잇따라 열린 정례 브리핑에서 지난 7 일 북한 해외 식당 종업원 들이 집단 탈북한 데 이어 북한 정찰총국 출 신 북한군 대좌와 북한 외교관이 지난해 잇 따라 한국으로 망명한.
Advertisements

1 SQL 정보보호학과 양 계 탁. 2 SQL 개요 SQL 개요 3 Database u 연관된 데이터들의 집합 u 데이터를 쉽게 관리하는 프로그램 종 류종 류 관계형 데이터베이스 객체지향형 데이터베이스 계층형 데이터베이스 네트워크 데이터베이스 데이터를 2 차원적인 테.
Oracle DB 구조 및 트랜잭션 관리 이경화 Database 의 구조 Program Global Area (PGA) Instance Database Buffer Cache Redo Log Buffer Library Cache Shared.
강사: 이종인 다우 교육원 전임강사 / 온디멘드 수석 컨설턴트 / FMG 수석 컨설턴트
SQL 언어 SQL.
제 3장 오라클 소개 오라클 소개 오라클 설치 방법 오라클 구조 제 3 장 오라클 개요.
데이터베이스 9주차 : 데이터베이스 설계 2교시 : 데이터베이스 설계(3)
Allow reverse scans allow reverse scnas. allow reverse scans allow reverse scnas.
소리가 작으면 이어폰 사용 권장!.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
12 프로젝트 실습.
데이터 모델링 방법론 2003년 03월.
PL/SQL.
데이터베이스 시스템.
Proc*C 기초 Style System 김도형.
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
관계 대수와 SQL.
오라클 데이터베이스 성능 튜닝.
DataBase 기본 교육 신입사원용 최지철.
Database & Internet Computing Laboratory 한 양 대 학 교
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
제 5 장 인덱스 생성 및 관리.
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
JDBC 프로그래밍 이수지 이동주 1.
7장 조인.
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
SQL 개요 SQL 개요 - SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나
10장. 데이터베이스 보안과 권한 관리 데이터베이스 보안과 권한 관리
MySQL performance Xhark 김재홍.
데이터베이스 담당교수 신정식 Chapter 4 SQL(1).
SQL SQL 불펌하지 마세요!!!!!!!! 불펌 금지.
데이터베이스 와 JDBC 1.데이터베이스와 데이터베이스 관리 시스템은? 2.데이터베이스 장점?
Supported Protocol 다음의 예문들은 CLP를 사용하는 방법들을 보여줍니다. 명령어들은 Windows의 DB2 명령창 프롬프트에서 실행합니다. 12. CLP 에서 +c 옵션을 이용하면 autocommit 모드가 사용되지 않으므로.
관계 데이터 모델과 제약조건 개념, 특성, 키, 무결성 제약조건.
11장. 데이터베이스 서버 구축과 운영.
오라클 데이터베이스 성능 튜닝.
14장 뷰.
6장. 물리적 데이터베이스 설계 물리적 데이터베이스 설계
4.2 SQL 개요 SQL 개요 SQL은 IBM 연구소에서 1974년에 System R이라는 관계 DBMS 시제품을 연구할 때 관계 대수와 관계 해석을 기반으로, 집단 함수, 그룹화, 갱신 연산 등을 추가하여 개발된 언어 1986년에 ANSI(미국 표준 기구)에서 SQL.
2장. 관계 데이터 모델과 제약조건 관계 데이터 모델은 지금까지 제안된 데이터 모델들 중에서 가장 개념이 단순한 데이터 모델의 하나 IBM 연구소에 근무하던 E.F. Codd가 1970년에 관계 데이터 모델을 제안함 관계 데이터 모델을 최초로 구현한 가장 중요한 관계 DBMS.
14 뷰(View) 뷰의 개념 뷰 관리.
1장. 데이터베이스 시스템 컴퓨터를 사용하여 정보를 수집하고 분석하는데 데이터베이스 기술이 활용되고 있음
16장. 테이블의 변경 새로운 행 삽입 테이블에서 테이블로 행을 복사 행 값의 변경 테이블에서 행 삭제
9장 테이블 생성 및 변경, 삭제하기(DDL).
SQL.
YOU Youngseok 트랜잭션(Transaction) YOU Youngseok
01 데이터베이스 개론 데이터베이스의 등장 배경 데이터베이스의 발전 과정 데이터베이스의 정의 데이터베이스의 특징
강사: 이종인 다우 교육원 전임강사 / 온디멘드 수석 컨설턴트 / FMG 수석 컨설턴트
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
Chapter 3: Introduction to SQL
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
고급 T-SQL.
CHAPTER 06. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
13장 무결성 제약조건.
SQL Query in the SSMS : DB, Table
JSP 게시판 구현.
View(뷰) 1 가상 테이블(Virtual Relation)
3장. SQL Server 2008전체 운영 실습 및 DB와 프로그램의 연동
오라클 쿼리 문제 EMP (사원 테이블) DEPT (부서 테이블) 컬럼명 설명 EMPNO 사원번호 ENAME 사원명 JOB
기본적인 SELECT문 작성.
8장 테이블의 생성 및 변경 정인기.
컬럼 대칭키 암호화 작업(SQL 2008) ① 마스터 키 생성 ② 인증서 생성 초기 한번만 실행 ③ 대칭키 생성
MS-SQL7.0 Implementation 강의 노트
Chapter 11 해쉬(Hash) SANGJI University Kwangman KO
뇌를 자극하는 Windows Server 장. 데이터베이스 서버.
Stored program 장종원
Mariadb 트랜잭션과 동시성 제어 장종원
Data Base Mysql.
제 5 장 MariaDB인덱스 생성 및 관리.
Presentation transcript:

dexaboud3@naver.com kHS 데이터베이스 테이블 및 인덱스 dexaboud3@naver.com kHS

오라클 테이블 유형 힙 구조 테이블 인덱스 구조 테이블 인덱스 클러스터 테이블 해시 클러스터 테이블 중첩 테이블 임시 테이블 데이터가 추가 될 때 가장 적절한 빈 공간에 저장 CREATE TABLE에 의해 생성되는 기본적인 테이블 유형 정렬되지 않은 행들의 모임 인덱스 구조 테이블 기본 키(색인)에 따라 정렬된 순서로 저장 인덱스 클러스터 테이블 여러 테이블의 테이터가 동일한 블록에 저장될 수 있음 동일한 클러스터 키 값을 가지는 데이터는 함께 저장됨 클러스터 키는 B*트리 인덱스를 사용하여 만들어짐 해시 클러스터 테이블 중첩 테이블 임시 테이블 객체 테이블

힙 구조 테이블 기존 테이블 생성처럼 일반 CREATE TABLE 문을 사용하면 된다 CREATE TABLE Dept ( dept_no int, dept_name varchar(100) );

인덱스 구조 테이블 CREATE TABLE 시 PRIMARY KEY를 추가하고 구문 끝에 ORGANIZATION INDEX를 추가함 CREATE TABLE index_Dept ( dept_no int PRIMARY KEY, dept_name varchar(100) ) ORGANIZATION INDEX; ORA-01429 에러가 발생하면 TABLESPACE를 만들어야 함 CREATE TABLESPACE [테이블스페이스 명] DATAFILE [절대경로] SIZE [용량] AUTOEXTEND ON -- 자동 테이블스페이스 파일 추가 EXTENT MANAGEMENT LOCAL AUTOALLOCATE; 예시) CREATE TABLESPACE test_space DATAFILE ‘C:\DBP\TABLESPACE\test_space.DBF' SIZE 10M AUTOEXTEND ON -- 자동 테이블스페이스 파일 추가 EXTENT MANAGEMENT LOCAL AUTOALLOCATE; CREATE TABLE index_dept ( deptno int PRIMARY KEY , dept_name varchar(100)) ORGANIZATION INDEX OVERFLOW TABLESPACE test_space; -- 테이블 스페이스 명

테이블스페이스 데이터를 논리적으로는 테이블스페이스에 저장하고 물리적으로는 해당 테이블스 페이스와 연관된 데이터 파일(Data file)들에 저장한다. 데이터 파일(Data file)은 하나의 테이블스페이스에만 속한다. 테이블스페이스는 하나 이상의 데이터 파일(Data file)로 구성됩니다. 데이터 파일, 테이블스페이스와 스키마 객체의 관계

테이블스페이스의 논리적 구조 테이블스페이스는 논리적 데이터베이스 구조에서 가장 큰 상위의 단위 데이터 베이스: 테이블 스페이스 하나 이상 포함 테이블 스페이스 : 세그먼트가 하나 이상 포함 저장소(세그먼트): 논리적 블록으로 구성된 확장영역 블록: 읽기 및 쓰기 작업의 최소 단위 확장영역: 연속적 데이터블록으로 구성되며 세그먼트 저장 단위로 사용

인덱스 클러스터 구조 테이블 먼저 클러스터와 클러스터에 대한 인덱스를 만들어야 함 클러스터 상에 테이블을 생성 함 create cluster emp_dept_cluster (dept_no int) size 1000; create index emp_dept_cluster_idx on cluster emp_dept_cluster; 클러스터 상에 테이블을 생성 함 CREATE TABLE cluster_Dept ( dept_no int, dept_name varchar(100) ) cluster emp_dept_cluster(dept_no); 클러스터를 삭제 하는 법 DROP CLUSTER 클러스터 이름 [ INCLUDING TABLES ];

해시 클러스터 구조 테이블 인덱스 클러스터와 개념적으로 유사하지만, 해시 함수를 이용하는 점이 다르다. 인덱스 클러스터 구조와 마찬가지로 먼저 클러스터를 만듦 하지만 클러스터에 인덱스가 필요 없고 해시 함수를 위한 옵션들이 추가 됨 CREATE CLUSTER hash_cluster (hash_key int) HASHKEYS 10000 SIZE 256 SINGLE TABLE HASH IS hash_key 클러스터에 테이블을 추가하는 방법은 같다 CREATE TABLE Hash_Dept ( deptno int, dept_name varchar(100) ) CLUSTER hash_cluster(deptno); 클러스터 구조 테이블의 경우 조인 쿼리에 대해 높은 성능을 보인다

실습 #1 앞에서 만든 각 테이블 종류 별로 아래의 쿼리를 실행한 뒤 결과를 비교해 보자 DROP TABLE Dept; INSERT INTO Dept VALUES(1, 'A'); INSERT INTO Dept VALUES(3, 'C'); INSERT INTO Dept VALUES(2, 'B'); INSERT INTO Dept VALUES(5, 'E'); SELECT * FROM Dept; DELETE FROM Dept where dept_name = 'B'; INSERT INTO Dept values(4, 'D'); DROP TABLE Dept; CREATE TABLE Dept ( dept_no int, dept_name varchar(100) ); INSERT INTO Dept VALUES(1, 'A'); INSERT INTO Dept VALUES(3, 'C'); INSERT INTO Dept VALUES(2, 'B'); INSERT INTO Dept VALUES(5, 'E'); SELECT * FROM Dept; DELETE FROM Dept where dept_name = 'B'; INSERT INTO Dept values(4, 'D'); --------------------------------------------------------------- DROP TABLE index_Dept; CREATE TABLE index_Dept ( dept_no int PRIMARY KEY, ) ORGANIZATION INDEX; INSERT INTO index_Dept VALUES(1, 'A'); INSERT INTO index_Dept VALUES(3, 'C'); INSERT INTO index_Dept VALUES(2, 'B'); INSERT INTO index_Dept VALUES(5, 'E'); SELECT * FROM index_Dept; DELETE FROM index_Dept where dept_name = 'B'; INSERT INTO index_Dept values(4, 'D'); drop index emp_dept_cluster_idx; drop cluster emp_dept_cluster including tables; -- 테이블 동시 삭제 --drop table cluster_Dept; create cluster emp_dept_cluster (dept_no int) size 1000; create index emp_dept_cluster_idx on cluster emp_dept_cluster; CREATE TABLE cluster_Dept ( ) cluster emp_dept_cluster(dept_no); INSERT INTO cluster_Dept VALUES(1, 'A'); INSERT INTO cluster_Dept VALUES(3, 'C'); INSERT INTO cluster_Dept VALUES(2, 'B'); INSERT INTO cluster_Dept VALUES(5, 'E'); SELECT * FROM cluster_Dept; DELETE FROM cluster_Dept where dept_name = 'B'; INSERT INTO cluster_Dept values(4, 'D'); ----------------------------------------------------- drop cluster hash_cluster including tables; CREATE CLUSTER hash_cluster ( hash_key int ) HASHKEYS 10000 SIZE 256 SINGLE TABLE HASH IS hash_key; CREATE TABLE hash_Dept ( ) cluster hash_cluster(dept_no); INSERT INTO hash_Dept VALUES(1, 'A'); INSERT INTO hash_Dept VALUES(3, 'C'); INSERT INTO hash_Dept VALUES(2, 'B'); INSERT INTO hash_Dept VALUES(5, 'E'); SELECT * FROM hash_Dept; DELETE FROM hash_Dept where dept_name = 'B'; INSERT INTO hash_Dept values(4, 'D');

실습 #1 결과 힙 구조 테이블 인덱스 구조 테이블 인덱스 클러스터 구조 테이블 해시 클러스터 구조 테이블

실습 #1 테이블 삭제 DROP TABLE Dept; DROP TABLE index_Dept; DROP INDEX emp_dept_cluster_idx; DROP CLUSTER emp_dept_cluster INCLUDEING TABLES; -- 테이블 동시 삭제 --DROP TABLE cluster_Dept; DROP CLUSTER hash_cluster INCLUDEING TABLES;

실습 #2 아래 테이블을 각 테이블 종류 별로 만드세요 다음 코드를 이용하여 각 테이블에 테스트용 데이터를 삽입 EMPNO EMP, INDEX_EMP, CLUSTER_EMP, HASH_EMP DEPT, INDEX_DEPT, CLUSTER_DEPT, HASH_DEPT 다음 코드를 이용하여 각 테이블에 테스트용 데이터를 삽입 EMPNO EMP_NAME SALARY DEPTNO INT VARCHAR(100) DEPTNO DEPT_NAME INT VARCHAR(100)

실습 #2 각 테이블 구조에 대한 다음 질의의 실행 플랜을 서로 비교하기 select * from emp where empno = 65000; select * from index_emp where empno = 65000; select * from cluster_emp where empno = 65000; select * from hash_emp where empno = 65000; 각 테이블 구조에 대한 다음 조인 질의의 실행 플랜을 서로 비교하기 select empno, salary, dept_name from emp, dept where emp.deptno = dept.deptno ; select empno, salary, dept_name from index_emp, index_dept where index_emp.deptno = index_dept.deptno; select empno, salary, dept_name from cluster_emp, cluster_dept where cluster_emp.deptno = cluster_dept.deptno; select empno, salary, dept_name from hash_emp, hash_dept where hash_emp.deptno = hash_dept.deptno;

% 실행 플랜 보는 방법 자동 추적 기능(또는 F6 키)를 선택함

보조 인덱스 만들기 기본 키에 대한 보조 인덱스 만들기 테이블에 기본 키를 지정하여 테이블을 생성함 create table pk2_emp (empno int primary key, emp_name varchar(100), salary int, deptno int); 비 기본 키에 대한 보조 인덱스 만들기 비기본 키에 대해 명시적으로 색인을 생성함 create table nk2_emp (empno int, emp_name varchar(100), salary int, deptno int); create index nk2_emp_idx on nk2_emp (salary);

실습 #3 기본키 보조 색인를 갖는 힙구조 테이블, 비기본키 보조 색인을 갖는 힙구조 테이 블에 데이터 입력함 기본키 보조 색인를 갖는 힙구조 테이블, 비기본키 보조 색인을 갖는 힙구조 테이 블에 데이터 입력함 insert into pk2_emp select * from emp; insert into nk2_emp select * from emp; 아래 질의를 실행하여 실행 플랜을 서로 비교하기 select empno, salary from emp where empno = 65000; select empno, salary from pk2_emp where empno = 65000; select empno, salary from nk2_emp where empno = 65000; select empno, salary from emp where salary = 30000; select empno, salary from pk2_emp where salary = 30000; select empno, salary from nk2_emp where salary = 30000;