본문 바로가기
DB 기본 개념 다지기

데이터베이스 관리 - 중요 옵션, 파일 크기 증가/축소, DB 분리와 연결

by 양블로그 2023. 7. 5.
반응형

데이터베이스의 중요 옵션

데이터베이스를 만들 때 또는 만들고 나서 여러 옵션을 지정할 수 있습니다. 해당하는 데이터베이스의 사용 목정이나 용도에 따라 적절하게 설정되어야 합니다. 대부분의 옵션은 그대로 두는 것이 일반적입니다. 

분류 옵션 설명
자동 옵션 AUTO_CREATE_STATISTICS - ON(기본값) : WHERE 절에 사용되는 열에 대해 자동으로 통계가 생성됩니다. 
- OFF : 통계가 자동으로 생성되지 않으며, 대신 통계를 수동으로 만들 수 있습니다.
AUTO_UPDATE_STATISTICS - ON(기본값) : 쿼리 최적화에 필요한 통계가 최신 상태로 자동 업데이트 됩니다.
- OFF : 통계를 수동으로 업데이트 해주어야 합니다.
SUTO_CLOSE - ON : 마지막 사용자가 끝낸 후 데이터베이스가 종료되고, 해당 리소스가 해제됩니다. 사용자가 데이터베이스를 다시 사용하려고 하면 데이터베이스가 자동으로 다시 열립니다.
- OFF(기본값) : 마지막 사용자가 끝낸 후 데이터베이스가 종료되지 않습니다.
* Express 버전의 경우에는 기본값이 ON
AUTO_SHRINK - ON : 데이터베이스 파일이 정기적으로 축소됩니다. 데이터베이스가 단순 복구 모델로 설정되거나 로그가 백업된 경우에만 트랜잭션 로그의 크기를 축소합니다.
- OFF(기본값) : 사용되지 않는 공간을 정기적으로 검사할 때 데이터베이스 파일을 자동으로 축소하지 않습니다.
가용성
옵션
OFFLINE / ONLINE / EMERGENCY - OFFLINE : 데이터베이스가 닫히고 종료되며, 오프라인으로 표시됩니다.
- ONLINE(기본값) : 데이터베이스가 열려 데이터베이스를 사용할 수 있습니다.
- EMERGENCY : 데이터베이스가 읽기 전용으로 표시되며, 액세스가 sysadmin 고정 서버 역할의 멤버로 제한됩니다.
READ_ONLY / READ_WRITE - READ_ONLY : 데이터베이스의 데이터를 읽을 수 있으나 수정할 수 없습니다.
- READ_WRITE(기본값) : 읽기/쓰기 작업을 수행할 수 있습니다.
SINGLE_USER / RESTRICTED_USER / MULTI_USER - SINGLE_USER : 한 번에 한 명의 사용자만 데이터베이스에 연결할 수 있습니다.
- RESTRICTED_USER : db_owner 고정 데이터베이스 역할 및 dbcreator와 sysadmin 고정 서버 역할의 멤버만 연결할 수 있습니다. 연결할 수 있는 멤버의 수는 제한이 없습니다.
- MULTI_USER(기본값) : 적합한 권한을 가진 모든 사용자가 연결할 수 있습니다.
커서 옵션 CURSOR_CLOSE_ON_COMMIT - ON : 트랜잭션이 커밋되거나 롤백될 때 열려 있는 커서가 모두 닫힙니다.
- OFF(기본값) : 트랜잭션 커밋 시에는 그대로 열려 있으나 트랜잭션 롤백 시 INSENSITIVE 또는 STATIC으로 저으이된 것을 제외한 모든 커서가 닫힙니다.
CURSOR_DEFAULT - LOCAL : 커서의 범위는 커서가 생성된 일괄처리, 저장 프로시저 또는 트리거에 로컬로 적용됩니다. 커서 이름은 그 범위 내에서만 유효합니다.
- GLOBAL(기본값) : 커서의 범위는 연결에 대해 전역으로 적용됩니다. 연결되어 실행하는 모든 저장 프로시저 또는 일괄 처리에서 커러 이름을 참조할 수 있습니다.
복구 옵션 RECOVERY - FULL(기본값) : 트랜잭션 로그 백업을 사용하여 미디어 오류 발생 후 완전 복구 기능이 제공됩니다. 데이터 파일이 손상된 경우 미디어 복구 기능을 통해 모든 커밋된 트랜잭션을 복원할 수 있습니다. 대량로그로 설정하면 특정 대량 작업에 대해 성능 최적화 기능과 로그 공간 최소화 기능이 결합된 미디어 오류 후 복구 기능이 제공됩니다.
- SIMPLE : 최소한의 로그 공간을 사용하는 단순 백업 전략이 제공됩니다.
  PAGE_VERIFY - CHECKSUM(기본값) : 페이지를 디스크에 쓸 때 전체 페이지 내용에 대한 CHECKSUM이 계산되어 페이지 헤더에 값이 저장됩니다. 
- TORN_PAGE_DETECTION : 페이지를 디스크에 쓸 때마다 8KB 데이테베이스 페이지의 512바이트 섹터마다 특정 비트가 DB 페이지 헤더에 저장됩니다.
- NONE : 페이지를 쓸 때 CHECKSUM 또는 TORN_PAGE_DETECTION 값이 생성되지 않습니다.
SQL 옵션 ANSI_NULL_DEFAULT CREATE TABLE 또는 ALTER TABLE 문에서 NULL 허용 여부가 명시적으로 정의되어 있지 않은 별칭 데이터 형식의 열에 대한 기본값(NULL OR NOT NULL)을 결정합니다.
- ON : 기본값이 NULL
- OFF(기본값) : 기본값이 NOT NULL
  ANSI_NULLS - ON : NULL 값에 대한 모든 비교 결과는 UNKNOWN이 됩니다.
- OFF(기본값) : 유니코드가 아닌 값과 NULL 값을 비교한 결과는 두 값이 모두 NULL일 경우 TRUE 입니다.
  RECURSIVE_TRIGGERS - ON : AFTER 트리거의 재귀 실행이 허용됩니다.
- OFF(기본값) : AFTER 트리거의 직접 재귀 실행만 허용되지 않습니다.

 

파일 크기 증가 및 축소

데이터베이스를 운영하다보면 공간이 부족해질 수 있습니다. 기본적으로는 충분한 공간의 여유가 있는 디스크에 데이터베이스 관련 파일들이 위치할 수 있도록 해야합니다. 

 

1) 크기 증가

해당하는 데이터베이스 속성 화면에서 "파일" 부분을 선택하고, 증가시키고자 하는 파일의 크기를 적절히 증가시키면 됩니다.

 

2) 크기 축소

해당하는 데이터베이스를 선택하고 우클릭 후 "태스트"-"축소"-"파일" 부분을 선택하고, 파일의 크기를 적적하게 지정해서 축소할 수 있습니다. "DBCC SHRINKFILE" 문을 사용해서 처리할 수도 있습니다.

DBCC SHRINKFILE('TestDB', 50)

 

데이터베이스 분리와 연결

1) 분리

분리할 데이터베이스를 선택하고 마우스 우측 클릭해 표시되는 단축 메뉴에서 "태스트"-"분리"를 선택한 후 연결된 사용자 삭제 및 통계 업데이트 여부를 설정하면 분리가 됩니다.

 

master 데이터베이스에서 해당 데이터베이스의 존재 기록만을 제거하므로 데이터베이스 분리 작업은 빠르게 처리됩니다. 데이터베이스가 분리되면 개체 탐색기에는 해당 데이터베이스가 목록에서 사라지지만, 물리적인 데이터 파일과 로그 파일은 그대로 해당 폴더에 남아있습니다.

 

sp_detach_db 시스템 저장 프로시저를 사용해서 처리할 수도 있습니다.

EXEC master.dbo.sp_detach_db @dbname = 'TestDB', @skipchecks = 'false'

 

2) 연결

분리된 데이터베이스의 데이터 파일과 로그 파일을 원하는 폴더로 이동한 후 개체 탐색기에서 마우스 우클릭 후 단축 메뉴에서 "연결"을 선택합니다. 연결 대화상자가 나타난 후 "추가" 버튼을 눌러 복사해 온 데이터 파일 중에서 mdf 확장자를 갖는 주 데이터 파일을 추가하면 모든 데이터 파일들에 대한 정보가 자동으로 등록됩니다. 이 때 하단의 데이터베이스 정보 부분에 잘못된 내용이 있으면 정정한 후 "확인" 버튼을 누르면 데이터베이스가 연결됩니다.

 

master 데이터베이스에 정보를 등록하는 과정이므로 데이터베이스 연결은 빠르게 처리됩니다. 그리고 연결 과정에서 데이터베이스 이름을 다르게 지정할 수도 있습니다.

 

단순히 CREATE DATABASE 문을 사용해서 처리할 수도 있습니다.

CREATE DATATABLE TestDB ON
	(FILENAME = 'D:\...Data\TestDB.mdf'),
    (FILENAME = 'E:\...Log\TestDB_log.ldf')
    FOR ATTACH
반응형