<데이터 베이스 만들기와 파일 및 파일그룹에 대해서>
데이터 베이스를 만들기 전에 데이터 베이스의 구조부터 이해 하여야 한다.
일단 밑의 그림을 참고하시고요..
일단 가장 작은 개념부터 얘기하자면
record > page > extent > data file > file group > DB의 순서이다.
1) Page
데이터베이스를 구성하는 최소 단위이다.
몇 개의 record가 모여 8kb가 되면 이를 하나의 page라 부른다.
하나의 Record는 여러개의 Page에 걸쳐 저장 될 수 없고 단 하나의 Page에만 저장 될 수 있다.
이러한 이유로 하나의 Record의 최대 사이즈는 8060 바이트입니다. 계산해보면 8 * 1024(1kb=1024byte) 는 8192 입니다. 하지만 8192바이트를 Row가 전부 차지하지 못하는 이유는 몇가지 정보를 저장하기 위한 약간의 공간이 필요하기 때문입니다.
2) Extent
테이블과 인덱스는 Extent에 저장됩니다. Extent란 8개의 연속된 페이지를 가리킵니다. 1 Page가 8KB 이므로 1 Extent는 64KB 입니다.
이러한 extent가 모여 하나의 데이터 파일을 이루고 있으며 이러한 데이터 파일은 각각의 파일그룹에 속해 있다.
3) file group
위의 그림과 같이 데이터 파일은 무조건 하나의 파일그룹에 속해 있다. 최초로 지정되는 데이터 파일은 확장자가 .mdf이며 이후로 지정되는 데이터 파일은 확장자가 .ndf이다. 로그파일은 확장자가 .ldf이며 파일그룹과는 무관하다.
Primary 파일 그룹 : 반드시 있어야 하며 MDF화일은 반드시 이 주데이터 화일 그룹에 있어야 한다.
Secondary 파일 그룹 : 추가적으로 있어도 되고 없어도 되지만 대용량 데이터 베이스 경우에는 파일그룹을 나누어서 데이터베이스를 생성하는 것이 실행속도 면 에서
효율적이다. 또한 파일그룹의 이름을 임의로 명명할 수 있다.
1. 데이터베이스 만들기
o NAME : 내부적으로 사용될 데이터베이스 파일의 논리적인 이름(실제이름이 아니다.)
o FILENAME : 데이터베이스 파일의 물리적인 위치와 파일명(데이터파일의 이름이 된다)
o SIZE : 데이터베이스의 초기 사이즈
o MAXSIZE : 데이터베이스가 증가될 수 있는 최대 사이즈, 지정되지 않으면 하드디스크가 허용하는한 무작정 사이즈 증가.
o FILEGROWTH : 데이터베이스 공간이 부족할 떄 자동으로 증가하게되는 사이즈
Ex 1)
GO |
Ex2)
create database mydbA
on
primary (name = mydbA,
filename = 'd:\data\mydbdatA.mdf',
size = 50mb,
maxsize = 100mb,
filegrowth = 10mb),
filegroup sec_abc(name = mydbA2,
filename = 'd:\data\mydbdatA2_1.ndf',
size = 100mb,
maxsize = 200mb,
filegrowth = 20mb),
( name = mydbA3,
filename = 'd:\data\mydbdatA2_2.ndf',
size = 100mb,
maxsize = 200mb,
filegrowth = 20mb)
log on
(name = mydblog1,
filename = 'd:\data\mydblog1.ldf',
size = 10mb,
maxsize = 100mb,
filegrowth = 10mb),
(name = mydblog2,
filename = 'd:\data\mydblog2.ldf',
size = 50mb,
maxsize = 100mb,
filegrowth = 10mb)
ex1) 파일을 지정해서 사이즈 늘리기.
USE master
GO
ALTER DATABASE mydbA
MODIFY FILE
SIZE = 150MB)
GO
Ex2) 데이터베이스 mydbA에 FileGroup3을 추가 합니다.
ALTER DATABASE mydbA
ADD FILEGROUP FileGroup3
EX3) 데이터베이스 FileGroup3에 화일 을 추가하기.
ALTER DATABASE mydbA
( NAME = mydbA7,
FILENAME = 'd:\Data\mydbA7.ndf',
SIZE = 10MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
TO FILEGROUP FileGroup3
Ex4) FileGroup3을 기본 파일 그룹으로 지정하기
ALTER DATABASE mydbA
MODIFY FILEGROUP FileGroup3 DEFAULT
GO
Ex5) 로그파일 추가하기.
ALTER DATABASE mydbA
ADD LOG FILE
( NAME = testlog3,
FILENAME = 'd:\Data\testlog3.ldf',
SIZE = 10MB,
MAXSIZE = 100MB,
FILEGROWTH = 5MB)
GO
Ex6) 데이터 파일 제거하기
먼저 데이터파일에 들어있는 내용을 emptyfile을 써서 비우고 난다음
USE mydbA
GO
DBCC SHRINKFILE (mydbA2, emptyfile)
GO
파일을 제거시킨다.
USE master
GO
ALTER DATABASE mydbA
REMOVE FILE mydbA2
GO
Ex7) 데이터베이스 이름 변경하기.
use master
go
exec sp_dboption mydbA,'single user','on'
go
싱글모드로 전환하여야 데이터베이스의 이름을 바꿀수 있다.
exec sp_renamedb 'mydbA','mydbA2'
go
데이터베이스의 이름을 바꾼다.
exec sp_dboption mydbA2,'single user','false' 싱글모드를 해제시킨다.
3. 데이터베이스 삭제
뭐든지 삭제에 관련된 문법사항은 간단하다. 하지만 뭐든지 삭제를 시킬때는 신중을 기해야 한다.
drop database mydbA2
'Lecture > MS-SQL서버' 카테고리의 다른 글
데이터베이스 백업 및 복원 (0) | 2008.12.04 |
---|