Maystyle :
Admin : New post
Guestbook
Local
media
Catergories
Recent Articles
Recent Comments
Recent Trackbacks
Calendar
Tag
Archive
Link
Search
 
해당되는 게시물 13건
  왜 DB의 단편화가 일어나는 걸까? 
작성일시 : 2008.01.15 14:54 | 분류 : SQL Server/Kernel | 태그 : DBCC Showconfig, Microsoft sql server 2005, 단편화, 페이지 관리자

DB 공부하기 1번째 : 선언적 데이터 무결성(Declarative Data Integrity) (http://maystyle.tistory.com/218)
DB
공부하기 2번째 : 트랜잭션 프로세싱 (http://maystyle.tistory.com/219)
DB 공부하기 3번째 : 데이터 파일과 트랜젝션 로그 파일
1. 왜 DB의 단편화가 일어나는 걸까?

데이터베이스는 8KB 크기를 갖는 페이지들의 모음이다.
페이지 관리자는 모든 형식의 페이지들을 할당하고 할당된것을 해제하면서 각 페이지들의 크기를 정리한다. 8개의 페이지를 익스텐트라고 하는데 테이블이 8개 미만의 페이지를 사용할 경우 공간 활성화를 위해 혼합된 크기로 새페이지들을 할당한다.

문제는 이러한 할당 작업과 할당 해제 작업이 지속될 경우 DB가 단편화가 될 수 있다는 사실이다. 실제 SQL 서버의 경우 클러스터드된 인덱스의 순서에 따라 물리 파일에 저장됨으로 그러한 우려는 더욱 커지게 된다.

테이블의 데이터가 얼마나 연속적인지 알아보기 위해서 DBCC Showconfig 명령어를 사용한다. 일반적으로 30%가 넘어가면 Rebuild 한다. 실제 튜닝할때 경우 인덱스가 설정된 칼럼에 대한 쿼리를 함에도 불구하고 Full Scan을 하는경우가 있다. 이럴 경우에는 인덱스 리빌드 및 DBCC INDEXDEFRAG를 통해 성능을 향상시킬 수 있다.

Name   Password   Home   Secret   Submit
  트랜잭션 프로세싱 
작성일시 : 2008.01.15 14:16 | 분류 : SQL Server/Kernel | 태그 : ACID, Atomicity, Consistencu, Durability, Isolation, Microsoft sql server 2005, 격리성, 영속성, 원자성, 일관성, 트랜잭션 프로세싱

DB 공부하기 1번째 : 선언적 데이터 무결성(Declarative Data Integrity) (http://maystyle.tistory.com/218)
DB
공부하기 2번째 : 트랜잭션 프로세싱

트랜잭션 프로세싱은 SQL 서버의 일관성과 복구 가능성을 보증하는 기능으로 SQL 서버 작업의 기본 단위이다. 모든 트랜잭션은 Commit 명령어가 실행되기 전까지 업데이트되지 않는다.

모든 트랜젝션은 ACID 속성을 갖는다.

원자성(Atomicity)
트랜잭션의 내용은 모두 Commit 되거나 Rollback 된다.

일관성(Consistencuy)
만약 송금 업무가 트랜잭션으로 발생할 경우 송금자의 계좌에서 빠져 나간 금액은 수금자의 계자에 입금된 금액과 일치해야 한다.

격리성(Isolation)
트랜잭션들은 서로 완벽하게 격리되어 다른 트랜잭션으로 부터 영향을 받지 않는다. SQL 2000의 경우  Update 혹은 Insert 등의 데이터 변환일 일어날 경우 with no lock 구믄을 사용하면 Select 시 트랜젝션이 종료 되지 않은 데이터가 읽어지는 현상이 있었다. 이는 격리성을 위반한 것으로 SQL 2005에서는 스냅샷 격리기능을 통하여, 위의 기능에 대한 격리성까지 지원 하고 있다.

영속성(Durability)
트랜잭션이 진행 되는 동안 (commit 이전)에 데이터베이스에 정전이 일어났을 경우 데이터베이스는 해당 트랜잭션을 반영하지 않는다. 반면에 Commit이 된 이후라면 반영하게 된다.

Name   Password   Home   Secret   Submit
  선언적 데이터 무결성(Declarative Data Integrity) 
작성일시 : 2008.01.15 13:25 | 분류 : SQL Server/Kernel | 태그 : Declarative Data Integrity, Microsoft sql server 2005, 도메인 무결성, 선언적 데이터 무결성, 엔티티 무결성, 참조 무결성

도메인 무결성 (Domain Integrity) : 열에 저장되는 값들은 일관성을 가져야 하며, 업무 규칙에 부합되어야 한다. 도메인 무결성은 가 열에서 수용 가능한 값을 지정해 주는  Check같은 제약 조건을 기본으로 가진다.
주 1 Check 제약 조건 : 제약 조건으로 지정된 기준을 만족시키는 값을 넣어야 한다. 데이터베이스 개발자는 양수값만 들어오게 Check 제약 조건을 정의 할 수 있다.

엔티티 무결성 (entity integrity) : 행(Row)에 저장된 정보를 참조한다. (테이블에 있는 각 행은 테이블을 설명하는 하나의 엔티티 유형에 관한 정보를 저장한다.) 이 유형의 제약 조건에서는 테이블 내에 있는 행에 저장된 정보가 일관성을 유지하고 지정된 규칙을 따르도록 해야한다. 예를 들면 각각의 행은 반드시 같은 수의 열을 보함해야 한다. (어떤 값은 빈곳으로 남겨두더라도) 좀 더 설명하도록 하겠다. 관계형 데이터베이스 이론의 핵심은 모든 관계의 모든 튜플(Tuple)(모든 테이블의 모든 행)이 고유하게 식별 될 수 있다는 것이다. 유일성을 보증하는 속성이나 속성들의 조합 (칼럼이나 칼럼들의 조합)을 "기본키"라고 부른다. 테이블은 한개의 기본키만을 가질 수 있다. 테이블을 정의할 때 키본키를 구성하는 칼럼들을 지정할 수 있다. 이를 Primary key 제약이라 부른다. 이렇게 기본키를 사용함으로써 테이블의 엔티티 무결성이 파괴되는것을 막는다. 물론 가끔 여러 칼럼들이 행을 고유하게 식별할 수 있다. 예를 들어 , employee 테이블은 ID, 주민번호 칼럼을 갖고 있을 수 있고, 이 칼럼들의 값들이 모두 유일한 값을 갖는다고 생각 할 수 있다. 이 키들을 대체키(alternate key) 또는 후보키 (candidate key) 라고 부른다.

참조 무결성(referential integrity) : 참조 무결성은 테이블 사이에 적용되며 이들 개체 간에 포함된 정보는 일관성을 유지되도록 해야 한다. 참조 무결성은 테이블들 사이의 관계를 포함한다. 테이블 사이에 대응하는 실제 열은 외래 키와 기본키를 참조한다.

Name   Password   Home   Secret   Submit
 Prev   1   2   Next