Post
MSSQL 뷰, 인덱션, 트랜잭션 정리
테이블과 뷰
1. 테이블과 뷰
* 제약조건 : 테이블 무결성을 지키기 위해 제한된 조건을 의미
즉 입력 시 특정 조건을 충족시키게 만든다.
1) PRIMARY KEY(기본키) : 중복X, NULL X
ex) UserID char(8) NOT NULL PRIMARY KEY
2) FORGIN KEY(외래키) : 두 테이블 사이의 관계 선언, 데이터 무결성 보장
다른 테이블에 의존하게 됨
기준 테이블의 열은 반드시 Primary Key이거나 Unique 제약 조건 설정
3) UNIQUE : 중복되지 않는 유일한 기술. PRIMARY와 차이, NULL 허용
(단 한개만 허용)
4) CHECK 제약 조건 : 입력되는 데이터를 점검하는 기능
5) DEFAULT는 값 입력 X, 자동 입력되는 디폴트 값
* 임시 테이블 : 임시로 잠깐 사용하는 테이블
테이블을 생성할 때 테이블 이름 앞에 #, ## 붙이면 된다.
2. 데이터베이스 캐체의 이름과 외부 서버 개체의 접근
* 데이터베이스 개체
테이터베이스의 정식 명칭 : 서버 이름. 데이터베이스.이름.스키마이름.개체이름
스키마는 데이터베이스 내에 있는 개체들을 관리하기 위한 묶음
스키마 != 소유자
개체를 생성할 대 아무것도 붙이지 않으면 자동 디폴트 스키마인 dbo
스키마란?
데이터베이스 안에 있는 네임스페이스.
3. 뷰
* 뷰 란? 테이블과 비슷한 역활을 하도록 SELECT 문을 이용해 만드는 개체
ex ) CREATE VIEW v_userTb1
AS
SELECT userid, name, addr, from UseTb1
GO
SELECT * FROM v_userTb1
* 뷰의 종류?
표준 뷰 : 한개 또는 그 이상의 테이블을 이용해 만든 뷰.
분할 뷰 : 여러 대의 서버에 있는 테이블들을 조인해 하나의 테이블 처럼 보이게 만든
인덱싱 뷰 : 실제 데이터가 존재하느 뷰. 클러스터 인덱스 정렬에 의해 정렬된 결과를 보여주는 뷰.
시스템 뷰 : 말 그대로 시스템에 접근 못하도록 만든 뷰
인덱스
1. 인덱스의 개요와 활용
인덱스란? 목차와 같은 것. 데이터를 좀 더 빠르게 찾을 수 있도록 해주는 도구.
단점은 필요없는 인덱스를 만들면 공간만 차지하고 느려짐
장 ? 검색속도가 무척 빨라진다. (항상 그렇진 않다)
그결과 시스템의 부하가 줄어들어, 결국 시스템 전체의 성능이 향상
단 ? 인덱스 추가 공간 필요.
인덱스 생성 시 시간이 소요될 수 있고 데이터 변경 작업이 자주 일어나면 성능 나빠짐
2. 인덱스의 종류
클러스터형 인덱스 : 순서대로 정렬. 인덱스 자체가 책 내용.
비클러스터형 인덱스 : 찾아보기가 별도로 있음.
클러스터 인덱스는 테이블 당 하나만 생성.
비클러스터는 테이블 당 여러개 생성 가능.
PRIMARY KEY 로 지정하면 자동적으로 클러스터형 인덱스
3. 인덱스 내부동작
B-Tree => 트리 형식을 사용함 => 그래서. 트리.노드.부모누드. 위치 등이 변경 된다면 느려짐.
4. 인덱스 특징
1) 클러스터 인덱스
- 클러스터형 인덱스를 생성할 때는 데이터페이지 전체를 다시 정렬.
- 그러므로 시스템 부하가 있을 수 있다.
- 검색속도 빠르다. 업데이트 느림.
- 테이블 한개에 생성 가능.
2) 비클러스터형 인덱스
- 그냥 페이지는 두고 인덱스 구성(목차, 찾아보기 처럼 되어있다.)
- 찾기는 느려도, 데이터 변경은 빠름.
- 남용하면 더 느려진다. 적절히 사용할 것.
5. 인덱스를 생성해야 하는 경우는?
- where 절에 사용되는 열에 인덱스를 만든다.
- where 절에 결과가 자주사용하는 경우에야 가치가 있다.
- 데이터 중복도 높은 열 x
- 외래키가 있는 열
트랜잭션과 잠금
* 트랜잭션이란 ? 전부 되거나, 전부 안되거나. 원자성. 일관성. 격리성. 영속성
* 트랜잭션의 문법과 종류?
1. 자동 커밋 트랜잭션 : 각 쿼리마다 자동적으로 붙여지는 것.
2. 명시적 트랜잭션 : 직접 BEGIN TRAN ~ COMMIT TRAN 사용
3. 암시적 트랜잭션 : SET IMPLICIT_TRANSACIONSON
4. 일괄 처리 범위 트랜잭션
2) 잠금
사용자가 데이터를 사용하면 다른 사용자가 변경 못하게 만듬.
3) 블로킹 : 잠금이 생성되어 다른 개체 접근 못함.
저장 프로시저
저장 프로시저란 ? 프로그래밍 기능 제공.
쿼리 문의 집합. 일괄 처리하기 위한 용도, 모듈화
특징?
1. SQL 성능을 향상시킬 수 있다. > 최적화. 컴파일 내용이 캐시에 저장. 다시 가져다 쓰므로 속도가 빨라짐.
2. 모듈식 프로그래밍 기능 => 언제든 실행 가능.
3. 보안 강화. 프로시저 접근 권한
4. 네트워크 전송량 줄임
'이전게시판 > MySQL MSSQL' 카테고리의 다른 글
MSSQL MYSQL 차이 (0) | 2016.05.11 |
---|---|
MSSQL 기초 정리 (0) | 2016.05.10 |
MSSQL JOIN (INNER JOIN, OUTER JOIN) (0) | 2016.04.06 |