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
▲ top