안녕하세요 ^^
드디어!! 기다리던 파티션 테이블에 대한 두번째 시간이 돌아왔습니다. 짝짝짝~
사실 DBA들은 연말과 연초에 가장 바쁘지 않나라는 생각해봅니다.
분기별로도 살짝 바쁘긴하죠 ^^;;
이런저런 사정으로 인해 지금에서야 쓰게 되었습니다.
지난번에는 파티션 테이블이 어떤이유로 파생되었는지 각 버전별로 분해(?) 해봤는데요
급 준비된거라 여러가지 언급에 미흡한부분이 살짝 비춰졌습니다만....
10번 정도 읽어보면(이전글이 그럴만한 가치가 있냐.. 퍽~).. 이해가 되지 않을까 생각합니다 ㅋ;;
그럼 각설하고 이번 포스팅의 주제인 partitioned table의 예에 대해서 알아보도록 하겠습니다.
들어가기에 앞서 하위 Query 들은 SQL Server 2005 Enterprise 및 Developer edition만
동작함을 유의하시고 진행해 보도록 하겠습니다. ^^
Chapter 1 : Partitioned Table 만들기
A. 준비단계
파티션테이블을 만들기위해 파일그룹을 생성하고 파티션 함수를 만들고 이를 배치하는 과정을 보여줍니다.
즉,
파일그룹 생성 -> 파티션함수 생성 -> 파일그룹 배치
이 과정이 있어야 파티션 테이블을 만들 수 있다는것이지요!!
허나 약간은 생소한 말이 튀어나옵니다. 파티션 함수인데요 이녀석은 각 파티션을 어떠한 기준으로 구분지어서
만들것인지에 대한 정의를 내는녀석이죠!! 즉, 이녀석 자체가 파티션의 경계를 정의 해 준다고 보시면됩니다.
또하나, 보시면 경계를 구분지을때 Left와 Right가 있습니다. 이는 경계 구분자에 대한 소속을 정의하는데요
(어렵죠 ;;;) 쉽게 생각하시면
서울시에서 지하철(Or 기차) 이용자에대한 통계를 산출하기위해 매시간마다 인원을 기록하는 System을
만들었습니다. 그런데 매시 정각에 기록하다보니 꼭~ 그시간에 호차를 옮기시는 분들이 있다는거죠!!
일딴 인원은 적어야하는데 "이사람을 어디 소속에 둘것인가?"에 대한 의문이 생깁니다.
오기전에 호차에 둘것인지 아니면 옮길 호차에 둘것인지에 대한 구분을
바로 Left와 Right가 정의해준다는것이죠 ^^;
이해가 되시나요? ^^;;
이해가 안되도 상관없습니다. 저의 글발이 부족해서 Orz..
사실 글로 읽는것 보다는 한번 실행해보는것이 훨씬 와닿죠!!
아래의 "B.데이터 행 배치 및 분포보기"의 코드를 실행해보시고 글을 읽어보도록 하겠습니다.
그럼 퍼뜩~ 이해가 될테니까요 ^^
-- create database Ancia use Ancia; -- File Group 나누기 ALTER DATABASE Ancia ADD FILEGROUP fg1; ALTER DATABASE Ancia ADD FILEGROUP fg2; ALTER DATABASE Ancia ADD FILEGROUP fg3; ALTER DATABASE Ancia ADD FILEGROUP fg4; ALTER DATABASE Ancia ADD FILEGROUP fg5; -- patition Function 만들기 CREATE PARTITION FUNCTION Left_Partition (int) as RANGE LEFT FOR VALUES (1, 10, 100); CREATE PARTITION FUNCTION Right_Partition (int) as RANGE RIGHT FOR VALUES (1, 10, 100); -- 파티션 배치 확인 SELECT $PARTITION.Left_Partition(10); SELECT $PARTITION.Right_Partition(10); -- 파티션 구성표에 파일 그룹 지정 (파일그룹 배치) -- Primary 파일그룹 전체를 파티션 할때 CREATE PARTITION SCHEME Primary_Left_Scheme AS PARTITION Left_Partition ALL TO ([PRIMARY]) -- 여러개의 파일그룹을 하나의 파티션으로 지정할때 CREATE PARTITION SCHEME Different_Left_Scheme AS PARTITION Left_Partition TO (fg1, fg2, fg3, fg4, fg5) --여러개의 파일그룹을 다수의 파티션으로 구분할때 CREATE PARTITION SCHEME Multiple_Left_Scheme AS PARTITION Left_Partition TO (fg1, fg2, fg1, fg2)
B. 데이터 행 배치 및 분포 보기
자 이제 파티션 테이블에 대한 준비과정이 완료되었습니다. 실제 파티션 테이블을 만들어봐야겠는데요
만드는 방법은 의외로 매우~ 정말로!! 심플합니다.
Create Table의 하위에 ON ~ 절을 이용해서 파티션 타입을 지정해주면되는것이지요!!
그럼 아래의 코드를 실행해보도록 하죠!!
자 이제 파티션 테이블에 대한 준비과정이 완료되었습니다. 실제 파티션 테이블을 만들어봐야겠는데요
만드는 방법은 의외로 매우~ 정말로!! 심플합니다.
Create Table의 하위에 ON ~ 절을 이용해서 파티션 타입을 지정해주면되는것이지요!!
그럼 아래의 코드를 실행해보도록 하죠!!
-- 테이블 생성 CREATE TABLE Partitioned_Table ( col1 INT ,col2 VARCHAR(15) ) ON Primary_Left_Scheme (col1) --파티션 배치 확인 SELECT $PARTITION.Left_Partition (1) SELECT $PARTITION.Left_Partition (2) SELECT $PARTITION.Left_Partition (3) SELECT $PARTITION.Left_Partition (4) SELECT $PARTITION.Left_Partition (10) SELECT $PARTITION.Left_Partition (11) SELECT $PARTITION.Left_Partition (12) SELECT $PARTITION.Left_Partition (13) SELECT $PARTITION.Left_Partition (14) SELECT $PARTITION.Left_Partition (100) SELECT $PARTITION.Left_Partition (101) SELECT $PARTITION.Left_Partition (102) SELECT $PARTITION.Left_Partition (103) SELECT $PARTITION.Left_Partition (104) -- 데이터 입력 -- A INSERT INTO Partitioned_Table VALUES (1,'Description') -- B INSERT INTO Partitioned_Table VALUES (2,'Description') INSERT INTO Partitioned_Table VALUES (3,'Description') INSERT INTO Partitioned_Table VALUES (4,'Description') INSERT INTO Partitioned_Table VALUES (10,'Description') -- C INSERT INTO Partitioned_Table VALUES (11,'Description') INSERT INTO Partitioned_Table VALUES (12,'Description') INSERT INTO Partitioned_Table VALUES (13,'Description') INSERT INTO Partitioned_Table VALUES (14,'Description') INSERT INTO Partitioned_Table VALUES (100,'Description') -- D INSERT INTO Partitioned_Table VALUES (101,'Description') INSERT INTO Partitioned_Table VALUES (102,'Description') INSERT INTO Partitioned_Table VALUES (103,'Description') INSERT INTO Partitioned_Table VALUES (104,'Description') -- 데이터 확인 SELECT ps.partition_number ,ps.row_count FROM sys.dm_db_partition_stats ps INNER JOIN sys.partitions p ON ps.partition_id = p.partition_id AND p.[object_id] = OBJECT_ID('Partitioned_Table')
TIP. 파티션을 정해줬습니다만, 확인할때마다 Select 명령어를 날려서 보는것은
조금 비효율 적으로 보입니다. 실제 실무에서는 거의 사용하지 않는파티션 테이블이지만
확인하는 방법의 Tip이 있습니다. 바로바로 SystemView를 통해서 볼 수 있는데요
아래와 같죠 ^^
조금 비효율 적으로 보입니다. 실제 실무에서는 거의 사용하지 않는파티션 테이블이지만
확인하는 방법의 Tip이 있습니다. 바로바로 SystemView를 통해서 볼 수 있는데요
아래와 같죠 ^^
SELECT * FROM SYS.PARTITION_FUNCTIONS -- 파티션 함수 정보 SELECT * FROM SYS.PARTITION_PARAMETERS -- 매개 변수 정보 SELECT * FROM SYS.PARTITION_RANGE_VALUES -- 경계 구성 SELECT * FROM SYS.PARTITION_SCHEMES -- 파티션 구성 정보 SELECT * FROM SYS.DATA_SPACES -- 파티션 구성 정보 SELECT * FROM SYS.DESTINATION_DATA_SPACES -- 개별 파티션 구성 정보 SELECT * FROM SYS.PARTITIONS -- 파티션 정보 SELECT * FROM SYS.TABLES -- 테이블 분할 정보 SELECT * FROM SYS.INDEXES -- 인덱스 분할 정보 SELECT * FROM SYS.INDEX_COLUMNS -- 인덱스 컬럼 정보
인덱스 관련은 아직 나오지 않았으니 위에 나열되어있는 쿼리들을 한번씩 실행해보믄 센스!!를
갖춘 당신은 진정한 "열혈 DBA"입니다. ^^
Chapter 2 : Partitioned Table 수정
파티션 테이블을 운영하다보면 아무래도 경계값의 추가나 수정 그리고 테이블간의 데이터 이동이 불가피
한데요 이를 예를 통해서 살펴 보도록 하겠습니다.
A. 신규 파티션 추가
-- 파티션 배치 확인 SELECT $PARTITION.left_Partition(501) -- 파티션 추가 ALTER PARTITION FUNCTION Left_Partition() SPLIT RANGE(500) -- 파티션 배치 확인 SELECT $PARTITION.Left_Partition(501)
B. 파티션 끼워넣기
--파티션 배치 확인 SELECT $PARTITION.Left_Partition (5) SELECT $PARTITION.Left_Partition (1) SELECT $PARTITION.Left_Partition (10) -- 파티션에 새로운 File Group을 생성 ALTER PARTITION SCHEME Primary_Left_Scheme NEXT USED [PRIMARY] -- 새로운 파티션을 생성 ALTER PARTITION FUNCTION Left_Partition () SPLIT RANGE(5) --파티션 배치 확인 SELECT $PARTITION.Left_Partition (5) SELECT $PARTITION.Left_Partition (1) SELECT $PARTITION.Left_Partition (10)
C. 데이터이동
1. 파티션간 합치기
-- 파티션 테이블 생성 CREATE TABLE multiple_partition ( col1 INT PRIMARY KEY CLUSTERED ,col2 VARCHAR(15) ) ON Primary_Left_Scheme (col1) -- 데이터 입력 -- A INSERT INTO multiple_partition VALUES (1,'Description') -- B INSERT INTO multiple_partition VALUES (2,'Description') INSERT INTO multiple_partition VALUES (3,'Description') INSERT INTO multiple_partition VALUES (4,'Description') INSERT INTO multiple_partition VALUES (10,'Description') -- C INSERT INTO multiple_partition VALUES (11,'Description') INSERT INTO multiple_partition VALUES (12,'Description') INSERT INTO multiple_partition VALUES (13,'Description') INSERT INTO multiple_partition VALUES (14,'Description') INSERT INTO multiple_partition VALUES (100,'Description') -- D INSERT INTO multiple_partition VALUES (101,'Description') INSERT INTO multiple_partition VALUES (102,'Description') INSERT INTO multiple_partition VALUES (103,'Description') INSERT INTO multiple_partition VALUES (104,'Description') -- 데이터 확인 SELECT OBJECT_NAME(ps.[object_id]) ,ps.partition_number ,ps.row_count FROM sys.dm_db_partition_stats ps INNER JOIN sys.partitions p ON ps.partition_id = p.partition_id AND p.[object_id] = OBJECT_ID('multiple_partition') -- 파티션 배치 확인 SELECT $PARTITION.Left_Partition (1) SELECT $PARTITION.Left_Partition (10) SELECT $PARTITION.Left_Partition (100) SELECT $PARTITION.Left_Partition (101) -- 파티션 병합 ALTER PARTITION FUNCTION Left_Partition() MERGE RANGE (10) -- 데이터 확인 SELECT OBJECT_NAME(ps.[object_id]) ,ps.partition_number ,ps.row_count FROM sys.dm_db_partition_stats ps INNER JOIN sys.partitions p ON ps.partition_id = p.partition_id AND p.[object_id] = OBJECT_ID('multiple_partition') -- 파티션 배치 확인 SELECT $PARTITION.Left_Partition (1) SELECT $PARTITION.Left_Partition (10) SELECT $PARTITION.Left_Partition (100) SELECT $PARTITION.Left_Partition (101)
2. 일반 테이블을 파티션 테이블로 옮기기
-- 일반 테이블 생성 CREATE TABLE single_partition ( col1 INT PRIMARY KEY CLUSTERED ,col2 VARCHAR(15) ) -- 데이터 입력 INSERT INTO single_partition VALUES (101,'Description') INSERT INTO single_partition VALUES (102,'Description') INSERT INTO single_partition VALUES (103,'Description') INSERT INTO single_partition VALUES (104,'Description') -- 파티션 함수 생성 CREATE PARTITION FUNCTION Left_Partition (int) AS RANGE LEFT FOR VALUES (1,10,100) -- 파일그룹 배치 CREATE PARTITION SCHEME Primary_Left_Scheme AS PARTITION Left_Partition ALL TO ([PRIMARY]) -- 파티션 테이블 생성 CREATE TABLE multiple_partition ( col1 INT PRIMARY KEY CLUSTERED ,col2 VARCHAR(15) ) ON Primary_Left_Scheme (col1) -- 데이터 입력 -- A INSERT INTO multiple_partition VALUES (1,'Description') -- B INSERT INTO multiple_partition VALUES (2,'Description') INSERT INTO multiple_partition VALUES (3,'Description') INSERT INTO multiple_partition VALUES (4,'Description') INSERT INTO multiple_partition VALUES (10,'Description') -- C INSERT INTO multiple_partition VALUES (11,'Description') INSERT INTO multiple_partition VALUES (12,'Description') INSERT INTO multiple_partition VALUES (13,'Description') INSERT INTO multiple_partition VALUES (14,'Description') INSERT INTO multiple_partition VALUES (100,'Description') -- 데이터 확인 SELECT OBJECT_NAME(ps.[object_id]) as name ,ps.partition_number ,ps.row_count FROM sys.dm_db_partition_stats ps INNER JOIN sys.partitions p ON ps.partition_id = p.partition_id AND p.[object_id] IN (OBJECT_ID('multiple_partition'), OBJECT_ID('single_partition')) order by name -- 데이터 이전 ALTER TABLE single_partition SWITCH TO multiple_partition PARTITION 4 -- 데이터 확인 SELECT OBJECT_NAME(ps.[object_id]) as name ,ps.partition_number ,ps.row_count FROM sys.dm_db_partition_stats ps INNER JOIN sys.partitions p ON ps.partition_id = p.partition_id AND p.[object_id] IN (OBJECT_ID('multiple_partition'), OBJECT_ID('single_partition')) order by name
3. 파티션테이블에서 파티션 테이블로 이전
-- 파티션 함수 생성 CREATE PARTITION FUNCTION Active_Partition (int) AS RANGE LEFT FOR VALUES (1,10,100) CREATE PARTITION FUNCTION Archive_Partition (int) AS RANGE LEFT FOR VALUES (100,200,300) --파일그룹 배치 CREATE PARTITION SCHEME Active_Scheme AS PARTITION Active_Partition ALL TO ([PRIMARY]) CREATE PARTITION SCHEME Archive_Scheme AS PARTITION Archive_Partition ALL TO ([PRIMARY]) -- 테이블 생성 CREATE TABLE active_data ( col1 INT PRIMARY KEY CLUSTERED ,col2 VARCHAR(15) ) ON Active_Scheme (col1) CREATE TABLE archive_data ( col1 INT PRIMARY KEY CLUSTERED ,col2 VARCHAR(15) ) ON Archive_Scheme (col1) --데이터 입력 -- A INSERT INTO active_data VALUES (1,'Description') -- B INSERT INTO active_data VALUES (2,'Description') INSERT INTO active_data VALUES (3,'Description') INSERT INTO active_data VALUES (4,'Description') INSERT INTO active_data VALUES (10,'Description') -- C INSERT INTO active_data VALUES (11,'Description') INSERT INTO active_data VALUES (12,'Description') INSERT INTO active_data VALUES (13,'Description') INSERT INTO active_data VALUES (14,'Description') INSERT INTO active_data VALUES (100,'Description') -- A INSERT INTO archive_data VALUES (200,'Description') -- B INSERT INTO archive_data VALUES (300,'Description') -- C INSERT INTO archive_data VALUES (400,'Description') -- 데이터 확인 SELECT OBJECT_NAME(ps.[object_id]) ,ps.partition_number ,ps.row_count FROM sys.dm_db_partition_stats ps INNER JOIN sys.partitions p ON ps.partition_id = p.partition_id AND p.[object_id] IN (OBJECT_ID('active_data'),OBJECT_ID('archive_data')) -- 데이터 이전 ALTER TABLE active_data SWITCH PARTITION 3 TO archive_data PARTITION 1 -- 데이터 확인 SELECT OBJECT_NAME(ps.[object_id]) ,ps.partition_number ,ps.row_count FROM sys.dm_db_partition_stats ps INNER JOIN sys.partitions p ON ps.partition_id = p.partition_id AND p.[object_id] IN (OBJECT_ID('active_data'),OBJECT_ID('archive_data'))
4. 파티션 데이터를 일반 테이블로 이전
-- 파티션 함수 생성 CREATE PARTITION FUNCTION Active_Partition (int) AS RANGE LEFT FOR VALUES (1,10,100) -- 파일그룹 배치 CREATE PARTITION SCHEME Active_Scheme AS PARTITION Active_Partition ALL TO ([PRIMARY]) -- 테이블 생성 CREATE TABLE active_data ( col1 INT PRIMARY KEY CLUSTERED ,col2 VARCHAR(15) ) ON Active_Scheme (col1) CREATE TABLE archive_data ( col1 INT PRIMARY KEY CLUSTERED ,col2 VARCHAR(15) ) -- 데이터 입력 INSERT INTO active_data VALUES (1,'Description') INSERT INTO active_data VALUES (2,'Description') INSERT INTO active_data VALUES (3,'Description') INSERT INTO active_data VALUES (4,'Description') INSERT INTO active_data VALUES (10,'Description') INSERT INTO active_data VALUES (11,'Description') INSERT INTO active_data VALUES (12,'Description') INSERT INTO active_data VALUES (13,'Description') INSERT INTO active_data VALUES (14,'Description') INSERT INTO active_data VALUES (100,'Description') -- 데이터 확인 SELECT OBJECT_NAME(ps.[object_id]) ,ps.partition_number ,ps.row_count FROM sys.dm_db_partition_stats ps INNER JOIN sys.partitions p ON ps.partition_id = p.partition_id AND p.[object_id] IN (OBJECT_ID('active_data'),OBJECT_ID('archive_data')) -- 데이터 이전 ALTER TABLE active_data SWITCH PARTITION 3 TO archive_data -- 데이터 확인 SELECT OBJECT_NAME(ps.[object_id]) ,ps.partition_number ,ps.row_count FROM sys.dm_db_partition_stats ps INNER JOIN sys.partitions p ON ps.partition_id = p.partition_id AND p.[object_id] IN (OBJECT_ID('active_data'),OBJECT_ID('archive_data'))
자.. 이제 파티션 테이블에 대한 생성과 수정에 대해서 알아봤습니다.
먼가 부족하죠? 이게 끝인가?... 당연히 아니죠!!
DB에 있어서 가장 필요하신분 바로바로 INDEX가 남아있습니다. index역시 테이블과 동일하게 잘게
쪼개서 넣을 수 있는데요 그럼 지금부터 알아보도록 하죠!!
Chapter 2 : Partitioned Index 만들기
파티션 인덱스는 크게 두가지로 나뉘어지는데요
A. 정렬된 인덱스
B. 정렬되지 않은 인덱스
딱~봐도 정렬된 인덱스가 먼가 있어보이죠? 이거슨~ 파티션 테이블을 만든 후에 다른 파티션 구성표를
지정하지 않고 인덱스를 만들면 자동으로 정렬된 인덱스가 만들어집니다. 그래서~ 이 녀석을 많이 사용
하는것이지요 ^^
그럼 예제를 통해서 알아보도록 하겠습니다.
A. 정렬된 인덱스 만들기 -- 파티션 함수 만들기 CREATE PARTITION FUNCTION Left_Partition (int) AS RANGE LEFT FOR VALUES (1,10,100) -- 파일그룹 배치 CREATE PARTITION SCHEME Primary_Left_Scheme AS PARTITION Left_Partition ALL TO ([PRIMARY]) -- 테이블 생성 CREATE TABLE multiple_partition ( col1 INT ,col2 VARCHAR(15) ) ON Primary_Left_Scheme (col1) -- 인덱스 생성 CREATE NONCLUSTERED INDEX cl_multiple_partition ON multiple_partition(col1) INSERT INTO multiple_partition VALUES (1,'Description') INSERT INTO multiple_partition VALUES (2,'Description') INSERT INTO multiple_partition VALUES (3,'Description') INSERT INTO multiple_partition VALUES (4,'Description') INSERT INTO multiple_partition VALUES (10,'Description') INSERT INTO multiple_partition VALUES (11,'Description') INSERT INTO multiple_partition VALUES (12,'Description') INSERT INTO multiple_partition VALUES (13,'Description') INSERT INTO multiple_partition VALUES (14,'Description') INSERT INTO multiple_partition VALUES (100,'Description') INSERT INTO multiple_partition VALUES (101,'Description') INSERT INTO multiple_partition VALUES (102,'Description') INSERT INTO multiple_partition VALUES (103,'Description') INSERT INTO multiple_partition VALUES (104,'Description') -- 데이터 확인 SELECT OBJECT_NAME(ps.[object_id]) ,ps.partition_number ,ps.row_count FROM sys.dm_db_partition_stats ps INNER JOIN sys.partitions p ON ps.partition_id = p.partition_id AND p.[object_id] = OBJECT_ID('multiple_partition') -- 인덱스 확인 SELECT partition_id, index_id FROM sys.partitions pt WHERE pt.[object_id] = OBJECT_ID('multiple_partition')
B. 정렬되지 않은 비클러스터형 인덱스 만들기
-- 인덱스에 사용할 파티션 함수 생성 CREATE PARTITION FUNCTION Index_Left_Partition (int) AS RANGE LEFT FOR VALUES (10,50,100) -- 테이블에 사용할 파티션 함수 생성 CREATE PARTITION FUNCTION Left_Partition (int) AS RANGE LEFT FOR VALUES (1,10,100) -- 파일그룹 배치 CREATE PARTITION SCHEME Index_primary_Left_Scheme AS PARTITION Index_Left_Partition --Partition must currently exist in database ALL TO ([PRIMARY]) CREATE PARTITION SCHEME Primary_Left_Scheme AS PARTITION Left_Partition --Partition must currently exist in database ALL TO ([PRIMARY]) -- 테이블 생성 CREATE TABLE multiple_partition ( col1 INT ,col2 INT ) ON Primary_Left_Scheme (col1) -- 정렬되지 않은 index 생성 CREATE NONCLUSTERED INDEX cl_multiple_partition ON multiple_partition(col2) ON Index_primary_Left_Scheme (col2) -- 데이터 입력 INSERT INTO multiple_partition VALUES (1,10) INSERT INTO multiple_partition VALUES (2,10) INSERT INTO multiple_partition VALUES (3,10) INSERT INTO multiple_partition VALUES (4,10) INSERT INTO multiple_partition VALUES (10,50) INSERT INTO multiple_partition VALUES (11,50) INSERT INTO multiple_partition VALUES (12,50) INSERT INTO multiple_partition VALUES (13,50) INSERT INTO multiple_partition VALUES (14,50) INSERT INTO multiple_partition VALUES (100,100) INSERT INTO multiple_partition VALUES (101,100) INSERT INTO multiple_partition VALUES (102,100) INSERT INTO multiple_partition VALUES (103,100) INSERT INTO multiple_partition VALUES (104,100) -- 데이터 확인 SELECT OBJECT_NAME(ps.[object_id]) ,ps.partition_number ,ps.row_count FROM sys.dm_db_partition_stats ps INNER JOIN sys.partitions p ON ps.partition_id = p.partition_id AND p.[object_id] = OBJECT_ID('multiple_partition') AND p.index_id = 0 --인덱스 확인 SELECT OBJECT_NAME(ps.[object_id]) ,ps.partition_number ,ps.row_count FROM sys.dm_db_partition_stats ps INNER JOIN sys.partitions p ON ps.partition_id = p.partition_id AND p.[object_id] = OBJECT_ID('multiple_partition') AND p.index_id <> 0정리를하면 인덱스를
동일한 파티션 함수를 써서 정렬되어진 index를 만들것인가
성능향상을위해 새롭게 구분된 파티션 함수를 이용해서 별도의 분할된 index를 만들것인가
흠... 아무래도 실무에 잘 사용하지 않다보니 정렬되지 않은 인덱스를 사용할 일이 있을런지는 ㅋ;;
이로서 Partitioned Table과 index에 대한 정리가 끝났네요 긴글 읽어주셔서 감사합니다.
하위 참고문서에서 많은 정보를 얻을 수 있었습니다.
역시 저는 아직 멀었더군요 이해하는데도 꽤 오래걸렸거든요 ^^;
그럼 다들 고생하시고 2010년 새해에는 정말 좋은 일만 가득한 해피한 한해 되시기 바랍니다.
새해 복 많이 받으세요 ^-^
참고문서
A. http://technet.microsoft.com/ko-kr/magazine/2007.03.partitioning.aspx
B. http://technet.microsoft.com/ko-kr/cc487839.aspx
'MSSQL > SQL Server 2005 new Feature' 카테고리의 다른 글
향상된 인덱싱된 뷰 (0) | 2010.01.07 |
---|---|
조인힌트 (0) | 2010.01.07 |
SQL 2000 VS SQL2005 의 인덱스 관련 비교 (0) | 2009.12.11 |
온라인 인덱스 구성(Online Index) (0) | 2009.12.11 |
미러 백업의 개요 (0) | 2009.12.11 |