·Î±×ÀÎ | ȸ¿ø°¡ÀÔ (´º½º·¹ÅͽÅû) | SITEMAP
   
  °³¹ß   Ç÷§Æû   ½Ã½ºÅÛ   ¸Å´ÏÁö¸ÕÆ®   Àüü±â»ç  
ÀÚ¹Ù
´å³Ý
C/C++
DB
¸ðµ¨¸µ
À¥°³¹ß
±âŸ
À¯´Ð½º/¸®´ª½º
À©µµ¿ì
±âŸ
¼­¹ö
³×Æ®¿öÅ©
º¸¾È
±âŸ
BM
PM
±âŸ
 
±â»çÀúÀå
0
 
¸¶ÀÌ ½ºÅ©·¦
[SQL ¼­¹ö 2005 ½ÇÀü Ȱ¿ë] ¨ê »õ·Î¿î DB º¸È£¡¤º¹±¸ ¸ðµ¨

ÇÑ¿ëÈñ (·Ôµ¥Á¤º¸Åë½Å)   2005/08/03
¿¬Àç¼ø¼­
1. T-SQLÀÇ »õ·Î¿î ¸ð½À
2. VS.NETÀ¸·Î °³¹ßÇÏ´Â SQL ¼­¹ö 2005
3. SQL ¼­¹ö 2005 °ü¸®ÀÚ¸¦ À§ÇÑ º¯È­
4. DB º¸È£¿Í º¹±¸¸¦ À§ÇÑ »õ·Î¿î ¸ðµ¨
SQL ¼­¹ö 2005°¡ ³ª¿À¸é¼­ °³ÀÎÀûÀ¸·Î °¡Àå Å©°Ô °ü½ÉÀ» º¸ÀÎ ºÎºÐÀÌ ¹Ù·Î Å×ÀÌºí ÆÄÆ¼¼Å´×ÀÌ´Ù.

ÇöÀç ·Ôµ¥Ä¥¼ºÀ½·á¿¡¼­µµ ¸Å´Þ 100¸¸ °ÇÀÇ °Å·¡¸í¼¼Ç¥ ³»¿ªÀÌ ½×À̸鼭 À̸¦ ó¸®Çϱâ À§ÇÑ ´ë¿ë·® µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇØ ³ôÀº °ü½ÉÀ» ±â¿ïÀ̰í ÀÖ´Ù. À̹ø ±Û¿¡¼­´Â ´ë¿ë·® µ¥ÀÌÅͺ£À̽º¸¦ À§ÇÑ Å×ÀÌºí ÆÄÆ¼¼Å´×°ú °¡¿ë¼ºÀ» ³ôÀ̱â À§ÇÑ ½º³À¼¦ ±×¸®°í ¹Ì·¯¸µ¿¡ ´ëÇØ ¾Ë¾Æ º¼ °ÍÀÌ´Ù.

¿¬Àç °¡À̵å¿î¿µÃ¼Á¦ : À©µµ¿ì 2000, À©µµ¿ì 2003, À©µµ¿ì XP
°³¹ßµµ±¸ : MS SQL ¼­¹ö 2005 º£Å¸ 2, ºñÁÖ¾ó ½ºÆ©µð¿À 2005 º£Å¸ 1
±âÃÊÁö½Ä : MS SQL ¼­¹ö 2000, C#
ÀÀ¿ëºÐ¾ß : MS SQL ¼­¹ö 2005 °ü¸®¿Í °³¹ß
Áö³­ 3ȸ¿¡ °ÉÃÄ SQL ¼­¹ö 2005ÀÇ »õ·Î¿î Ư¡µé¿¡ ´ëÇØ ¾Ë¾ÆºÃ´Ù. À̹ø ±Û¿¡¼­´Â ¸¶Áö¸·À¸·Î ´ë¿ë·® µ¥ÀÌÅͺ£À̽º¸¦ À§ÇÑ ±âÁ¸ÀÇ ÆÄƼ¼Çºä¸¦ ´ëüÇÏ´Â Å×ÀÌºí ÆÄÆ¼¼Å´×°ú µ¥ÀÌÅͺ£À̽º ÀÌ·Â °ü¸®¸¦ À§ÇÑ ½º³À¼¦, ±×¸®°í °¡¿ë¼ºÀ» ³ôÀ̱â À§ÇÑ Å¬·¯½ºÅ͸µ¿¡ °ßÁÙ ¼ö ÀÖ´Â ¹Ì·¯¸µ¿¡ ´ëÇØ ¾Ë¾Æ º¼ °ÍÀÌ´Ù.

±â¾÷ÀÇ µ¥ÀÌÅÍ´Â ½Ã°£ÀÌ Áö³¯¼ö·Ï Á¡Á¡ ¸¹¾ÆÁö°í ÀÖ´Ù. ºÐ¼®À» À§ÇÑ µ¥ÀÌÅÍ´Â Á¡Á¡ ´õ ½×¿©¸¸ °¡°í ´õ ÀÌ»ó ÇϳªÀÇ Å×ÀÌºí¿¡ ÀÌ ¸ðµç Á¤º¸¸¦ ´ã¾Æ µÎ´Â °ÍÀÌ ºñÈ¿À²ÀûÀÏ ¶§°¡ ÀÖ´Ù. º¸Åë ±â°¡³ª Å×¶ó ´ÜÀ§ÀÇ µ¥ÀÌÅ͸¦ ÇϳªÀÇ Å×ÀÌºí¿¡ ´ã¾Æ µÎ°Ô µÇ¸é Å×À̺í À¯Áö º¸¼ö°¡ Èûµé¸ç ¼º´É ¶ÇÇÑ ´À·ÁÁö°Ô µÈ´Ù.

ÀÌ·¯ÇÑ µ¥ÀÌÅÍ´Â ´ëºÎºÐ °ú°ÅÀÇ µ¥ÀÌÅͰ¡ ÇÔ²² À־ ±×·¯´Âµ¥, ¾Æ¸¶ ¸î ³â ÀüÀÇ µ¥ÀÌÅÍ´Â °ÅÀÇ »ç¿ëÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù. ÀÌ·² ¶§¿¡´Â Å×À̺íÀ» ³ª´©¾î¼­ ÃÖ±ÙÀÇ µ¥ÀÌÅÍ´Â ³ôÀº ¼º´ÉÀ» ³»´Â I/O¿¡ ´ã¾Æ µÎ°í, ¿¹ÀüÀÇ µ¥ÀÌÅÍ´Â ºñ±³Àû ³·Àº ¼º´ÉÀÇ Àú·ÅÇÑ I/O ÀåÄ¡¿¡ ´ã¾Æ µÎ´Â °ÍÀÌ È¿À²ÀûÀÏ °ÍÀÌ´Ù. ÀÌ·² ¶§ »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù·Î ÆÄƼ¼Å´×ÀÌ´Ù.

SQL ¼­¹ö 7.0/2000¿¡¼­ ºÐÇÒµÈ ºä
ÆÄƼ¼Å´×À» À§ÇÑ Àü·«Àº SQL ¼­¹ö 7.0¿¡¼­ºÎÅÍ Áö¿øÇß´Ù. ºÐÇÒµÈ ºä(partitioned view)¸¦ ÀÌ¿ëÇÏ¿© °¢°¢ÀÇ Å×À̺íÀ» UNIONÀ¸·Î ¹­¾î¼­ ¸¶Ä¡ ÇϳªÀÇ Å×À̺í·Î º¼ ¼ö ÀÖµµ·Ï Çß´Ù.

CREATE VIEW Production.vTransaction
AS
SELECT * FROM Production.Transaction_2003_09 UNION ALL
SELECT * FROM Production.Transaction_2003_10 UNION ALL
SELECT * FROM Production.Transaction_2003_11

ÀÌ¿Í °°ÀÌ 2003³â 9¿ùÀÇ Å×À̺í°ú 2003³â 10¿ùÀÇ Å×À̺í, 2003³â 11¿ùÀÇ Å×À̺íÀ» UNIONÀ¸·Î °áÇÕÇÔÀ¸·Î½á ºÐÇÒµÈ ºä¸¦ ¸¸µé ¼ö ÀÖ´Ù. ÀÌ ¶§ °¢ Å×À̺íÀº ÆÄƼ¼Å´× Ä÷³À» CHECK Á¶°ÇÀ» ÀÌ¿ëÇÏ¿© ¹Ì¸® Á¦ÇÑÇØµÖ¾ß ÇÑ´Ù. ¿¹¸¦ µé¸é ¾ÕÀÇ °¢ Å×ÀÌºí¿¡ TransactionDate¶ó´Â ³¯Â¥ Ä÷³ÀÌ ÀÖ´Ù¸é Á¦ÇÑ Á¶°ÇÀ¸·Î ´ÙÀ½°ú °°ÀÌ Áà¾ß ÇÑ´Ù.

CHECK ( TransactionDate between '2003-09-01' AND '2003-09-30')

ÀÌ·¸°Ô ÆÄƼ¼Å´× Ä÷³À» Á¤ÀÇÇϰí ÀÌ Ä÷³¿¡ INDEX¸¦ °É¾î µÎ¸é ºÐÇÒµÈ ºä¸¦ ÀÌ¿ëÇÏ¿© Å×ÀÌºí¿¡ Á¢±ÙÇÒ ¶§ ´Ù¸¥ ³¯Â¥ÀÇ Å×À̺íÀº ÀÐÁö ¾Ê°Ô µÈ´Ù. SQL ¼­¹ö 2000¿¡¼­´Â ºÐÇÒ ºä¸¦ ÀÌ¿ëÇÏ¿© µ¥ÀÌÅÍ °»½Å ÀÛ¾÷ÀÌ È¿°úÀûÀ¸·Î ¼öÇàÇϵµ·Ï Áö¿øÇÏ¿´À¸¸ç ºÐ»ê ºÐÇÒµÈ ºä(distributed partitioned view)·Î±îÁö ¹ßÀüÀ» ÇÏ¿© °¢°¢ÀÇ Å×À̺íÀÌ ÇÑ ¼­¹ö°¡ ¾Æ´Ñ ´Ù¸¥ ¼­¹ö¿¡ À־ °¡´ÉÇϵµ·Ï ¹ßÀüÇß´Ù.

ÇÏÁö¸¸ ºÐÇÒµÈ ºä ¹æ½ÄÀÇ ÆÄƼ¼Å´×Àº ¿©·¯ Å×À̺íÀ» ÇϳªÀÇ ºä·Î ¸ð¾Ò±â ¶§¹®¿¡ °ü¸®»ó ºÒÆíÇÑ Á¡ÀÌ ¸¹¾Ò´Ù. ¿¹¸¦ µé¸é Å×ÀÌºí ±¸Á¶¸¦ ¹Ù²Û ´Ù°Å³ª À妽º¸¦ Àç»ý¼ºÇϰųª º¯°æÇÏ´Â °æ¿ì °¢°¢ÀÇ Å×À̺íÀ» ¸ðµÎ ¹Ý¿µÇØÁà¾ß Çϱ⠶§¹®ÀÌ´Ù.

SQL ¼­¹ö 2005ÀÇ Å×ÀÌºí ÆÄÆ¼¼Å´×
SQL ¼­¹ö 2005¿¡¼­´Â ºä¸¦ ÅëÇÑ ÆÄƼ¼Å´×ÀÌ ¾Æ´Ñ Å×ÀÌºí ´ÜÀ§ÀÇ ÆÄƼ¼Å´×À» Áö¿øÇÑ´Ù. Áï ÇϳªÀÇ Å×À̺íÀ» ¿©·¯ Á¶°¢À¸·Î Âɰ³¾î °ü¸®ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ±×·¯¹Ç·Î ºÐÇÒµÈ ºäó·³ °¢ Å×À̺íÀ» µû·Î °ü¸®ÇÒ Çʿ䰡 ¾ø´Ù. ¿¹¸¦ µé¸é À妽º¸¦ ¸¸µå´Âµ¥ À־ ÇϳªÀÇ Å×ÀÌºí¸¸ ¸¸µé¸é µÇ¹Ç·Î °ü¸®»ó ÀÌÁ¡ÀÌ ÀÖ´Ù. ¶ÇÇÑ ¼º´É¿¡ À־µµ ´õ ÁÁÀº ¼º´ÉÀ» º¸¿©ÁØ´Ù.

ºÐÇÒµÈ ºä¿¡¼­´Â °¢°¢ÀÇ Å×À̺íÀ» º¸°í ³ªÁß¿¡ ÇÕÄ¡´Â ¹æ½ÄÀ¸·Î ÁøÇàµÇ¾úÁö¸¸, Å×ÀÌºí ÆÄÆ¼¼Å´×¿¡¼­´Â ¸ÖƼ CPU ȯ°æÀ̶ó¸é º´·Äó¸®(demand parallelism)¸¦ ÀÌ¿ëÇÏ¿© º¸´Ù ºü¸¥ Äõ¸®¸¦ ¼öÇàÇÒ ¼öµµ ÀÖ´Ù. Äõ¸®¸¦ ÄÄÆÄÀÏÇϴµ¥ À־µµ ºÐÇÒµÈ ºä¿¡¼­´Â Å×À̺íÀÌ ¸¹À»¼ö·Ï ´À·ÈÁö¸¸, Å×ÀÌºí ÆÄÆ¼¼Å´×¿¡¼­´Â ÆÄƼ¼Ç °³¼ö¿¡ »ó°ü¾øÀÌ ºü¸¥ ¼Óµµ¸¦ º¸ÀåÇÑ´Ù.

<±×¸² 1> Å×ÀÌºí ÆÄÆ¼¼Å´×

Å×ÀÌºí ÆÄÆ¼¼Å´×Àº ÆÄƼ¼Å´× ÇÔ¼ö¿Í ½ºÅ°¸¶¸¦ ÀÌ¿ëÇÏ¿© ±¸ÇöÀ» ÇÑ´Ù. ÆÄƼ¼Å´× ÇÔ¼ö·Î´Â °æ°è ¿µ¿ªÀ» ±¸ºÐÇÏ°í ½ºÅ°¸¶·Î´Â ½ÇÁ¦ ¹°¸®ÀûÀÎ ÆÄÀÏ ±×·ì¿¡ °¢ ÆÄƼ¼ÇÀ» ¸ÊÇÎÇÑ´Ù.

CREATE PARTITION FUNCTION myRangePF1 (int)
AS RANGE LEFT FOR VALUES (1, 100, 1000)

ÀÌ ¿¹Á¦´Â myRangePF1À̶ó´Â ÆÄƼ¼Ç ÇÔ¼ö¸¦ Á¤ÀÇÇϴµ¥ ÀÖ¾î °æ°è ºÎºÐÀ» ¿ÞÂÊ¿¡ Æ÷ÇÔÇÏ´Â ÇÔ¼ö¸¦ ¸¸µé°í ÀÖ´Ù. ÀÌ¿Í °°ÀÌ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°ÀÌ 4°³ÀÇ ÆÄƼ¼Ç ¿µ¿ªÀ» Á¤ÀÇÇÑ´Ù.

ÆÄƼ¼Ç 1 2 3 4
°ª col <= 1 col > 1 and col <= 100 col > 100 AND col <= 1,000 col > 1,000

Áï, °æ°è¸¦ ¿ÞÂÊ ºÎºÐ¿¡ Æ÷ÇÔÇϱ⠶§¹®¿¡ 1,100,1000Àº °¢°¢ ¿ÞÂÊ ÆÄƼ¼Ç¿¡ Æ÷ÇÔÇÏ°Ô µÈ´Ù. ¸¸¾à LEFT ´ë½Å¿¡ RIGHT¶ó°í ¾´´Ù¸é 1,100,1000Àº °¢°¢ ¿À¸¥ÂÊ ÆÄƼ¼Ç¿¡ Æ÷ÇÔÇÏ°Ô µÈ´Ù. ÆÄƼ¼Ç ÇÔ¼ö¸¦ ¸¸µé¾úÀ¸¸é ½ÇÁ¦ ¹°¸®ÀûÀÎ ¿µ¿ª¿¡ ¸ÊÇÎÇÒ ¼ö ÀÖ´Â ½ºÅ°¸¶¸¦ Á¤ÀÇÇØ¾ß ÇÑ´Ù.

CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
TO (test1fg, test2fg, test3fg, test4fg)

ÀÌ ±¸¹®Àº ¾Õ¿¡¼­ Á¤ÀÇÇÑ ÆÄƼ¼Ç ÇÔ¼ö¸¦ ¹ÙÅÁÀ¸·Î °¢°¢ 4°³ÀÇ ÆÄÀÏ ±×·ì¿¡ ¸ÊÇÎÇϰí ÀÖ´Ù. µû¶ó¼­ ÀÌ·± °æ¿ì´Â °¢°¢ÀÇ ÆÄƼ¼ÇÀÌ º°°³ÀÇ ¹°¸®ÀûÀÎ °ø°£¿¡ ÀúÀåµÇ°Ô µÈ´Ù. ¹°·Ð ÇϳªÀÇ ÆÄÀÏ ±×·ì¿¡ ´ãÀ» ¼öµµ ÀÖ´Ù. ±×·³ ÀÌÁ¦ SQL ¼­¹ö 2000ÀÇ ºÐÇÒµÈ ºä¿Í SQL ¼­¹ö 2005ÀÇ Å×ÀÌºí ÆÄÆ¼¼Å´×ÀÇ Â÷ÀÌÁ¡¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ.

ºÐÇÒµÈ ºä vs. Å×ÀÌºí ÆÄÆ¼¼Å´×
¸ÕÀú ºÐÇÒµÈ ºä¸¦ ¸¸µé¾îº¸ÀÚ. ±âº»ÀûÀ¸·Î SQL ¼­¹ö 2005 º£Å¸2¸¦ ¼³Ä¡Çϸé AdventureWorks¿¡ TransactionHistory¶ó´Â Å« Å×À̺íÀÌ Á¸ÀçÇÑ´Ù. À̸¦ ¸ÕÀú ºÐÇÒµÈ ºä·Î ¸¸µé±â À§ÇØ ´ÙÀ½°ú °°ÀÌ ¿©·¯ °³ÀÇ Å×À̺í·Î ³ª´©°í °¢°¢ CHECK Á¦¾à Á¶°£À» ÁÖ°í À妽º¸¦ »ý¼ºÇغ¸ÀÚ. Àüü ÄÚµå´Â ¡®ÀÌ´ÞÀÇ µð½ºÄÏ¡¯¿¡ ÀÖ´Ù.

Å×ÀÌºí ºÐÇÒ
SELECT *
INTO Production.Transaction_2003_09
FROM Production.TransactionHistory
WHERE TransactionDate between '2003-09-01' and '2003-09-30';

SELECT *
INTO Production.Transaction_2003_10
FROM Production.TransactionHistory
WHERE TransactionDate between '2003-10-01' and '2003-10-31';
...

üũ Á¦¾à Á¶°Ç »ðÀÔ
ALTER TABLE [Production].[Transaction_2003_09]
WITH CHECK ADD CONSTRAINT [CK_Transaction_2003_09]
CHECK (TransactionDate between '2003-09-01' AND '2003-09-30');

ALTER TABLE [Production].[Transaction_2003_10]
WITH CHECK ADD CONSTRAINT [CK_Transaction_2003_10]
CHECK ( TransactionDate between '2003-10-01' AND '2003-10-31');
...

À妽º ¸¸µé±â
CREATE CLUSTERED INDEX [IX_Transaction_2003_09_TransactionDate] ON
[Production].[Transaction_2003_09]([TransactionDate]);
CREATE CLUSTERED INDEX [IX_Transaction_2003_10_TransactionDate] ON
[Production].[Transaction_2003_10]([TransactionDate]);
...

ºä ¸¸µé±â
CREATE VIEW Production.vTransaction
AS
SELECT * FROM Production.Transaction_2003_09 UNION ALL
SELECT * FROM Production.Transaction_2003_10 UNION ALL
...

ÀÌÁ¦ ´Ù ¸¸µé¾úÀ¸¸é °ú¿¬ Àß ¸¸µé¾ú´ÂÁö »ùÇà Äõ¸®¸¦ ½ÇÇàÇØº¸ÀÚ.

SELECT * FROM Production.vTransaction
WHERE TransactionDate between '2003-09-01' and '2003-10-31';

-----------------------------------------------------------------
(20494 row(s) affected)
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Transaction_2003_10'. Scan count 1, logical reads 74, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Transaction_2003_09'. Scan count 1, logical reads 88, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

ÀÌ °á°ú¸¦ º¸¸é ¿¹»ó´ë·Î ´Ù¸¥ Å×À̺íÀº ÀбⰡ ¾ø°í ÇØ´ç Å×ÀÌºí¿¡¼­¸¸ ÀбⰡ ÀϾ °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·³ ½ÇÁ¦ ½ÇÇà °èȹÀ» º¸ÀÚ.

<È­¸é 1> ºÐÇÒµÈ ºä¸¦ ÀÌ¿ëÇÑ ½ÇÇà °èȹ

½ÇÇà °èȹÀ» º¸¸é ´Ù¸¥ Å×À̺íÀ» ¸ðµÎ º» ´ÙÀ½¿¡ ÇÊÅÍ·Î °É·¯¼­ ³ªÁß¿¡ °áÇÕ(concatenation) ¿¬»êÀ» ÀÌ¿ëÇÏ¿© ÇÕÄ¡´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. ¾Õ¿¡¼­´Â PK(Primary Key)°¡ ¾ø¾î¼­ ±×·± °ÍÀ̰í, ¸¸¾à ÆÄƼ¼Å´× Ä÷³ÀÌ PK¶ó¸é ´Ù¸¥ Å×À̺íÀº ¾Æ¿¹ º¸Áöµµ ¾Ê°í ÇÊÅ͸µµµ ¾ø¾î ¹Ù·Î µ¥ÀÌÅ͸¦ °¡Á®¿Â´Ù.

ÇÏÁö¸¸ PK°¡ ÀÖ´Â Å×ÀÌºíµµ ÀúÀå ÇÁ·Î½ÃÀú¸¦ ÀÌ¿ëÇÏ¿© Äõ¸®¸¦ ÇÏ¸é ¾îÂ÷ÇÇ ÇöÀç¿Í ¶È°°ÀÌ ÇÊÅ͸µÇÏ¿© °áÇÕÇϹǷΠū Â÷ÀÌ´Â ¾ø´Ù°í ºÁµµ µÈ´Ù. Àб⠼ö¸¦ º¸´õ¶óµµ ´Ù¸¥ Å×À̺íÀº ÇÊÅ͸µÀ» ÇϹǷΠ0ÀÌ ³ª¿Â´Ù. ÀÌÁ¦´Â Å×ÀÌºí ÆÄÆ¼¼Å´×À» ÀÌ¿ëÇØº¸ÀÚ. SQL ¼­¹ö 2005 º£Å¸2¿¡¼­ ¿£Áø ¿¹½Ã(Engine Example)¸¦ ¼³Ä¡ÇÏ¿© ´ÙÀ½ Æú´õ¿¡ °¡º¸¸é Å×ÀÌºí ÆÄÆ¼¼Å´× ¿¹Á¦°¡ ÀÖ´Ù.

C:\Program Files\Microsoft SQL Server\90\Tools\Samples\1033\Engine\Administration\Partitioning\Scripts
\PartitionAW.sql

ÀÌ ¿¹Á¦¸¦ ½ÇÇà½Ã۸é TransactionHistory Å×À̺íÀ» ÆÄƼ¼Å´×À» Çϴµ¥, 2003³â 10¿ù ÀÌÀüºÎÅÍ 2004³â 8¿ù ÀÌÈıîÁö 12°³ÀÇ ÆÄƼ¼ÇÀ¸·Î ³ª´©¾î¼­ ¸¸µç´Ù. ´ÙÀ½Àº ÁÖ¿ä ÄÚµå Áß¿¡ ÇϳªÀÌ´Ù.

-- Range partition table TransactionHistory
CREATE PARTITION FUNCTION TransactionRangePF1 (datetime)
AS RANGE RIGHT FOR VALUES ('10/01/2003', '11/01/2003', '12/01/2003',
    '1/01/2004', '2/01/2004', '3/01/2004', '4/01/2004',
    '5/01/2004', '6/01/2004', '7/01/2004', '8/01/2004');
GO

ÆÄƼ¼Ç ÇÔ¼ö¸¦ ¸¸µå´Âµ¥ ÀÖ¾î ¿ùº°·Î ÃÑ 12°³ÀÇ ÆÄƼ¼ÇÀ¸·Î ³ª´©°í ÀÖ´Ù.

CREATE PARTITION SCHEME TransactionsPS1
AS PARTITION TransactionRangePF1
TO ([PRIMARY], [PRIMARY], [PRIMARY]
, [PRIMARY], [PRIMARY], [PRIMARY]
, [PRIMARY], [PRIMARY], [PRIMARY]
, [PRIMARY], [PRIMARY], [PRIMARY]
, [PRIMARY]);

¿©±â¿¡¼­ ¸¸µç ÇÔ¼ö¸¦ ½ºÅ°¸¶¸¦ ÀÌ¿ëÇÏ¿© ¹°¸®ÀûÀÎ °ø°£¿¡ ¸ÊÇÎÇÏ´Â µ¥ ÀÖ¾î ÇϳªÀÇ ÆÄÀÏ ±×·ì¿¡ ¸ÊÇÎÇϰí ÀÖ´Ù.

CREATE TABLE [Production].[TransactionHistory](
  [TransactionID] [int] IDENTITY (1, 1) NOT NULL,
  [ProductID] [int] NOT NULL,
  [ReferenceOrderID] [int] NOT NULL,
  [ReferenceOrderLineNumber] [smallint] NOT NULL ,
  [TransactionDate] [datetime] NOT NULL ,
  [TransactionType] [nchar](1) NOT NULL,
  [Quantity] [int] NOT NULL,
  [ActualCost] [money] NOT NULL,
  [ModifiedDate] [datetime] NOT NULL
) ON TransactionsPS1 (TransactionDate);

Å×À̺íÀ» »ý¼ºÇÒ ¶§ ¾Õ¿¡¼­ ¸¸µç ½ºÅ°¸¶ À§¿¡ ¸¸µé°í ÀÖ´Ù. ´Ù ¸¸µé¾úÀ¸¸é Àß ¸¸µé¾ú´ÂÁö ¿¹Á¦ Äõ¸®¸¦ ½ÇÇàÇØº¸ÀÚ.

SELECT * FROM Production.TransactionHistory
WHERE TransactionDate between '2003-09-01' and '2003-10-31';

-------------------------------------------------------------------
(20494 row(s) affected)
Table 'TransactionHistory'. Scan count 2, logical reads 162, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

Å×À̺íÀÌ ÇϳªÀ̹ǷΠÇϳªÀÇ Å×ÀÌºí¿¡¼­ µÎ ¹øÀÇ ½ºÄµÀÌ ÀϾ´Ù. ÀÌÁ¦ ½ÇÇà °èȹÀ» º¸ÀÚ.

<È­¸é 2> Å×ÀÌºí ÆÄÆ¼¼Å´×À» ÀÌ¿ëÇÑ ½ÇÇà °èȹ

½ÇÇà °èȹÀ» º¸¸é ¡®Nested Loops Join¡¯À» ÀÌ¿ëÇÏ¿© ÇØ´ç Å×À̺íÀ» ¡®Index Seek¡¯ÇÏ¿© µ¥ÀÌÅ͸¦ °¡Á®¿À°í ÀÖ´Ù. ÀÌ Äõ¸®¿¡¼­´Â µÎ ´Þ Ä¡ÀÇ µ¥ÀÌÅ͸¦ ÀÐÀ¸¹Ç·Î µÎ ¹øÀÇ ½ºÄµÀÌ ÀϾÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

½½¶óÀ̵ù À©µµ¿ì ±¸Çö
ÆÄƼ¼ÇµÈ Å×À̺íÀ» °ü¸®ÇÏ´Ù º¸¸é ¿À·¡µÈ µ¥ÀÌÅÍ´Â °ÅÀÇ »ç¿ëÀ» ÇÏÁö ¾Ê°Ô µÈ´Ù. ¾î¼´Ù ÇÑ ¹ø¾¿ Åë°è ÀÚ·á¿ëÀ¸·Î »ç¿ëÇÏ´Â °æ¿ì°¡ ´ëºÎºÐÀÌ´Ù. ÀÌ·¯ÇÑ µ¥ÀÌÅ͸¦ °è¼Ó °í¼º´ÉÀÇ I/O ÀåÄ¡¿¡ ´ã¾Æ µÎ´Â °ÍÀº ºñÈ¿À²ÀûÀÌ´Ù. µû¶ó¼­ ¿À·¡µÈ µ¥ÀÌÅÍ´Â ´õ ÀÌ»óÀÇ Æ®·£Àè¼ÇÀÌ ÀϾÁö ¾ÊÀ¸¹Ç·Î ºñ±³Àû ³·Àº ¼º´ÉÀÇ Àú·ÅÇÑ I/O ÀåÄ¡·Î À̽ÄÇÏ´Â °ÍÀÌ È¿À²ÀûÀÌ´Ù.

ÀÌ·¯ÇÑ °úÁ¤À» ¡®½½¶óÀ̵ù À©µµ¿ì(ÆÄƼ¼Ç ½ºÀ§Äª)¡¯¶ó°í ÇÑ´Ù. ½½¶óÀ̵ù À©µµ¿ìÀÇ ¿ì¸®¸» ¶æÀº ¡®¹Ì´ÝÀÌ⡯ÀÌ´Ù. Áï ¹Ð¾î¼­ ¿©´Ý´Â âÀ̶ó´Â ¶æÀε¥, ¿À·¡µÈ µ¥ÀÌÅÍ´Â ¹Ð¾î¼­ ³»º¸³»°í ´ë½Å »õ µ¥ÀÌÅ͸¦ ¹Þ¾ÆµéÀδٴ Àǹ̷Πº¸¸é µÉ °ÍÀÌ´Ù.

½½¶óÀ̵ù À©µµ¿ì¸¦ ±¸ÇöÇϴµ¥ ÀÖ¾î ´ë·®ÀÇ µ¥ÀÌÅͰ¡ À̵¿ÇϹǷΠ´À¸± °ÍÀ̶ó°í »ý°¢ ÇÒ ¼ö ÀÖÀ¸³ª, ½ÇÁ¦·Î´Â ¸ÞŸ µ¥ÀÌÅ͸¸ À̵¿ÇϹǷΠ»ó´çÈ÷ ºü¸£°Ô ÀÛ¾÷ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦ ¿ª½Ã SQL ¼­¹ö 2005¸¦ ¼³Ä¡ÇÑ ´ÙÀ½ Æú´õ¿¡ °¡¸é ½½¶óÀ̵ù À©µµ¿ì ¿¹Á¦°¡ ÀÖ´Ù.

C:\Program Files\Microsoft SQL Server\90\Tools\Samples\1033\Engine\Administration\SlidingWindow\Scripts
\sliding.sql

À̹ø ¿¹Á¦¿¡¼­´Â 2003³âµµ 9¿ùÀÇ µ¥ÀÌÅ͸¦ TransactionHistory Å×ÀÌºí¿¡¼­ ¶¼¾î ³»¾î TransactionHistoryArchive Å×À̺í·Î ¿Å±â´Â ÀÛ¾÷ÀÌ´Ù. Ãʱ⠻óÅ´ <±×¸² 2>¿Í °°´Ù.

<±×¸² 2> Ãʱ⠻óÅÂ

TransactionHistory¿¡´Â 12°³ÀÇ ÆÄƼ¼ÇÀÌ ÀÖ°í TransactionHistoryArchive¿¡´Â 2°³ÀÇ ÆÄƼ¼ÇÀÌ ÀÖ´Ù. TransactionHistoryArchive´Â ÀÚÁÖ »ç¿ëÇÏÁö ¾Ê´Â µ¥ÀÌÅ͸¦ ¸ð¾Æ µÎ´Â °÷À̹ǷΠµÎ °³ÀÇ ÆÄƼ¼Ç¸¸À» ¸¸µé¾ú´Ù. ¿©±â¿¡¼­ TransactionHistory Å×ÀÌºí¿¡¼­ 2004³âµµ 9¿ù µ¥ÀÌÅ͸¦ À§ÇÑ »õ·Î¿î µ¥ÀÌÅ͸¦ À§ÇÑ °ø°£À» È®º¸ÇÏÀÚ.

ALTER PARTITION FUNCTION TransactionRangePF1() SPLIT RANGE ('9/01/2004');


<±×¸² 3> TransactionHistory¿¡ 2004³âµµ 9¿ù 1ÀÏ·Î ºÐÇÒ

»õ·Î¿î °ø°£À» È®º¸Çϱâ À§ÇÏ¿© ±âÁ¸ °ø°£À» ºÐÇÒÇÏ¿© ÃÑ 13°³ÀÇ ÆÄƼ¼ÇÀ» ¸¸µé¾ú´Ù. ÀÌÁ¦´Â TransactionHistoryArchive¿¡µµ ¿ª½Ã »õ·Î¿î °ø°£À» È®º¸ÇÏÀÚ.

ALTER PARTITION FUNCTION TransactionArchivePF2() SPLIT RANGE ('10/01/2003');


<±×¸² 4> TransactionHistoryArchive¿¡ 2003³âµµ 10¿ù 1ÀÏ·Î ºÐÇÒ

°¢°¢ÀÇ Å×ÀÌºí¿¡ »õ·Î¿î °ø°£À» ÇÒ´çÇÏ¿´À¸´Ï ÀÌÁ¦ ÆÄƼ¼ÇÀ» ¿Å°Ü º¸ÀÚ.

ALTER TABLE [Production].[TransactionHistory] SWITCH PARTITION 1 to [Production].[TransactionHistoryArchive] PARTITION 2;

°¢°¢ÀÇ Å×ÀÌºí¿¡ »õ·Î¿î °ø°£À» ÇÒ´çÇÏ¿´À¸´Ï ÀÌÁ¦ ÆÄƼ¼ÇÀ» ¿Å°Ü º¸ÀÚ.

<±×¸² 5> TransactionHistoryÀÇ ÆÄƼ¼Ç 1À» TransactionHistoryArchiveÀÇ ÆÄƼ¼Ç 2·Î À̵¿

¿Å°åÀ¸¸é ÀÌÁ¦ ±âÁ¸ ÆÄƼ¼ÇÀ» º´ÇÕÇÏ¿© Ãʱ⠻óÅ·Π¸¸µé¾îÁà¾ß ÇÑ´Ù. ¸ÕÀú TransactionHistoryºÎÅÍ º´ÇÕÇÏÀÚ. º´ÇÕÇϱâ Àü¿¡ sys.partition_range_values¶ó´Â Å×À̺íÀ» Á¶È¸ÇÏ¿© ÆÄƼ¼Ç Á¤º¸¸¦ Á¶È¸Çغ¸ÀÚ.

function_id boundary_id parameter_id value
------------- ------------- -------------  
65536 1 1 2003-10-01 00:00:00.000
65536 2 1 2003-11-01 00:00:00.000
65536 3 1 2003-12-01 00:00:00.000
65536 4 1 2004-01-01 00:00:00.000
65536 5 1 2004-02-01 00:00:00.000
65536 6 1 2004-03-01 00:00:00.000
65536 7 1 2004-05-01 00:00:00.000
65536 8 1 2004-05-01 00:00:00.000
65536 9 1 2004-06-01 00:00:00.000
65536 10 1 2004-07-01 00:00:00.000
65536 11 1 2004-08-01 00:00:00.000
65536 12 1 2004-09-01 00:00:00.000
65536 1 1 2003-09-01 00:00:00.000
65537 2 1 2003-10-01 00:00:00.000
(14 row(s) affected)

ÀÌÁ¦±îÁö Á¦´ë·Î ÀÛ¾÷À» Çß´Ù¸é ÃÑ 14°³ÀÇ ÇàÀÌ ÀÖÀ» °ÍÀÌ´Ù. ÀÌÁ¦ ´ÙÀ½°ú °°ÀÌ º´ÇÕÀ» ÇÏÀÚ.

ALTER PARTITION FUNCTION TransactionRangePF1() MERGE RANGE ('10/01/2003');


<±×¸² 6> TransactionHistory¿¡¼­ 2003³â 10¿ù 1ÀÏ º´ÇÕ

º´ÇÕÀ» ÇÑ ÈÄ ´Ù½Ã Å×ÀÌºí ÆÄÆ¼¼Ç Á¤º¸¸¦ º¸ÀÚ.

function_id boundary_id parameter_id value
------------- ------------- -------------  
65536 1 1 2003-11-01 00:00:00.000
65536 2 1 2003-12-01 00:00:00.000
65536 3 1 2004-01-01 00:00:00.000
65536 4 1 2004-02-01 00:00:00.000
65536 5 1 2004-03-01 00:00:00.000
65536 6 1 2004-04-01 00:00:00.000
65536 7 1 2004-05-01 00:00:00.000
65536 8 1 2004-06-01 00:00:00.000
65536 9 1 2004-07-01 00:00:00.000
65536 10 1 2004-08-01 00:00:00.000
65536 11 1 2004-09-01 00:00:00.000
65537 1 1 2003-09-01 00:00:00.000
65537 2 1 2003-10-01 00:00:00.000
(13 row(s) affected)

º´ÇÕÀ» ÇßÀ¸¹Ç·Î ÃÑ 13°³ÀÇ ÇàÀÌ »ý°å´Ù. ÀÌÁ¦ TransactionHistoryArchiveµµ º´ÇÕÀ» ÇÏÀÚ.

ALTER PARTITION FUNCTION TransactionArchivePF2() MERGE RANGE ('9/01/2003');


<±×¸² 7> TransactionHistoryArchive¿¡¼­ 2003³â 9¿ù 1ÀÏ º´ÇÕ

ÀÌ·¸°Ô ÇÔÀ¸·Î½á ½½¶óÀ̵ù À©µµ¿ì ÀÛ¾÷À» ¿Ï·áÇÒ ¼ö ÀÖ´Ù. ÀÛ¾÷ÀÌ °£´ÜÇÏÁö´Â ¾ÊÁö¸¸ ÀÌ·± ÀÏ·ÃÀÇ ÀÛ¾÷µéÀÌ ½ÇÁ¦·Î´Â ¸ÞŸ µ¥ÀÌÅ͸¦ °¡Áö°í ÀÛ¾÷À» Çϱ⠶§¹®¿¡ »ó´çÈ÷ ºü¸£°Ô ¼öÇàµÈ´Ù.

<±×¸² 8> ½½¶óÀ̵ù À©µµ¿ì ±¸ÇöÀÌ ¿Ï·áµÈ »óÅÂ

°£ÆíÇÑ ÀÌ·Â °ü¸®¸¦ À§ÇÑ µ¥ÀÌÅͺ£À̽º ½º³À¼¦
SQL ¼­¹ö 2005¿¡¼­´Â °£´ÜÇÏ°Ô µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ ¹é¾÷º»À» ¸¸µé ¼ö ÀÖ´Ù. º¸Åë °³¹ßÀÚ°¡ ¾î¶² °£´ÜÇÑ ÀÛ¾÷À» ÇÒ ¶§ ½Ç¼ö¸¦ ÇÒ±îºÁ Æ®·£Àè¼ÇÀ» °É°í ÀÛ¾÷À» Á¾Á¾ ÇÑ´Ù. ±×·¯´Ù°¡ ½Ç¼ö¸¦ ÇÏ¸é ·Ñ¹éÇÏ¸é µÇ±â ¶§¹®ÀÌ´Ù. ±×·±µ¥ ÀÌ·¸°Ô ÀÛ¾÷À» Çϸé Àá±ÝÀÌ °É¸®±â ¶§¹®¿¡ ´Ù¸¥ »ç¿ëÀÚµéÀº ´ë±âÇÏ°í ±â´Ù·Á¾ß ÇÏ´Â ºÒÆíÀÌ ÀÖ´Ù. ÇÏÁö¸¸ ÀÌÁ¦´Â µ¥ÀÌÅͺ£À̽º ½º³À¼¦À» »ç¿ëÇϸé ÇöÀç µ¥ÀÌÅͺ£À̽ºÀÇ ³»¿ëÀ» °£´ÜÇÏ°Ô ¹é¾÷À» ÇÒ ¼ö Àֱ⠶§¹®¿¡ Æ®·£Àè¼ÇÀ» °ÉÁö ¾Ê¾Æµµ µÈ´Ù. ¸¸¾à ½Ç¼ö¸¦ ÇÏ°Ô µÇ¸é °£´ÜÇÏ°Ô º¹±¸¸¦ ÇÒ ¼ö ÀÖ´Ù.

½º³À¼¦Àº Àб⸸ ÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅͺ£À̽ºÀÌ´Ù. ¸¸µé ¶§¿¡´Â ½ÇÁ¦ µ¥ÀÌÅÍÀÇ º¹»çº»À» ¸¸µå´Â °ÍÀÌ ¾Æ´Ï°í ¸ÞŸ µ¥ÀÌÅ͸¸À¸·Î ¸¸µé±â ¶§¹®¿¡ »ó´çÈ÷ ºü¸£°í ÀûÀº ¿ë·®À¸·Î ¸¸µé ¼ö ÀÖ´Ù. ½ÇÁ¦ ±¸ÇöÀ» º¸¸é ¸ÕÀú ½º³À¼¦Àº ÇöÀç µ¥ÀÌÅͺ£À̽º¿Í µ¿ÀÏÇÑ ÀúÀå °ø°£À» ¿¹¾àÇÏ°í ¿øº» µ¥ÀÌÅͺ£À̽º¿¡¼­ º¯°æÀÌ ÀϾ¸é ¸ÕÀú ½º³À¼¦ µ¥ÀÌÅͺ£À̽º¿¡ º¹»ç¸¦ ÇÑ ÈÄ ¿øº» µ¥ÀÌÅͺ£À̽º¸¦ º¯°æÇÑ´Ù. À̸¦ º¹»ç-¾²±â(copy-on-write) ±â¼úÀ̶ó°í ºÎ¸¥´Ù.

<±×¸² 9> º¹»ç-¾²±â ±â¼ú

<±×¸² 9>¸¦ º¸¸é ¿øº» µ¥ÀÌÅͺ£À̽ºÀÇ 2¶ó´Â °ªÀÌ 10À¸·Î ¹Ù²ð ¶§ ¸ÕÀú 2¶ó´Â °ªÀ» ½º³À¼¦ µ¥ÀÌÅͺ£À̽º¿¡ º¹»ç¸¦ Çϰí ÀÚ±â ÀÚ½ÅÀÇ °ªÀ» 10À¸·Î ¹Ù²Ù°í ÀÖ´Ù. ½º³À¼¦ µ¥ÀÌÅͺ£À̽º´Â °á±¹ ¿øº» µ¥ÀÌÅͺ£À̽º¿¡¼­ ¹Ù²î±â ÀüÀÇ »óÅ °ª¸¸ °¡Áö°í ÀÖ°í, ³ª¸ÓÁö´Â ¿øº» µ¥ÀÌÅͺ£À̽º¸¦ ÂüÁ¶ÇÑ´Ù. ±×·¡¼­ »ý¼º ½Ã°£ÀÌ ºü¸£°í °ø°£µµ Àû°Ô Â÷ÁöÇÏ´Â °ÍÀÌ´Ù. ±×·³ Á÷Á¢ ½Ç½ÀÀ» ÇØº¸ÀÚ.

CREATE DATABASE Test;
USE Test;

CREATE TABLE Dummy
(
  Data int
);

INSERT INTO Dummy VALUES (1);
INSERT INTO Dummy VALUES (2);
INSERT INTO Dummy VALUES (3);
INSERT INTO Dummy VALUES (4);

½º³À¼¦ »ý¼º
CREATE DATABASE Test_01 ON
(
NAME = Test,
FILENAME = 'c:\program files\microsoft sql server\mssql.1\mssql\data\Test_01.ss'
)
AS SNAPSHOT OF Test;

Test¶ó´Â µ¥ÀÌÅͺ£À̽º¸¦ ¸¸µé°í Dummy¶ó´Â Å×À̺íÀ» ¸¸µé¾î¼­ 1,2,34¶ó´Â °ªÀ» ³Ö°í Test_01À̶ó´Â Test µ¥ÀÌÅͺ£À̽ºÀÇ ½º³À¼¦À» ¸¸µé¾ú´Ù. ¾Õ¿¡¼­ ¸¸µç Test_01.ss ¶ó´Â ÆÄÀÏÀÇ ½ÇÁ¦ Å©±â¸¦ º¸¸é ´ÙÀ½°ú °°´Ù.

<È­¸é 3> Test_01.ssÀÇ ÆÄÀÏ Å©±â

Å©±â´Â 1.56MB¸¦ ÇÒ´çÇßÁö¸¸ ½ÇÁ¦ »ç¿ëÇÏ´Â Å©±â´Â 128KB¹Û¿¡ ¾È µÈ´Ù´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌÁ¦ Test Å×ÀÌºí¿¡¼­ 2¶ó´Â °ªÀ» 10À¸·Î ¹Ù²Ù°í ½º³À¼¦¿¡¼­ Á¦´ë·Î °ªÀ» º¸Á¸Çϰí ÀÖ´ÂÁö È®ÀÎÇØº¸ÀÚ.

UPDATE Dummy
SET Data = 10
WHERE Data = 2;

SELECT * FROM dummy;

USE Test_01;

SELECT * FROM dummy;

-----------------------
Data
-----------------------
1
10
3
4
(4 row(s) affected)

Data
-----------------------
1
2
3
4
(4 row(s) affected)

½º³À¼¦ Å×À̺íÀÌ ÀÌÀü °ªÀ» Àß °£Á÷Çϰí ÀÖÀ½À» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´Ù½Ã Test_01.ssÀÇ ÆÄÀÏ Å©±â¸¦ º¸¸é 384KB·Î ±× Å©±â°¡ Ä¿Á® ÀÖ´Â °ÍÀ» È®ÀÎÇØ º¼ ¼ö ÀÖ´Ù. Áï 2¶ó´Â °ªÀ» ÀúÀåÇϹǷΠ±×¸¸Å­ÀÇ °ø°£ÀÌ ´Ã¾î³­ °ÍÀÌ´Ù. À̹ø¿¡´Â ¿øº» µ¥ÀÌÅͺ£À̽º¸¦ º¹±¸Çغ¸ÀÚ.

USE master;
RESTORE DATABASE Test
FROM DATABASE_SNAPSHOT = 'Test_01';

USE Test;
SELECT * FROM dummy;

----------------------
Data
----------------------
1
2
3
4
(4 row(s) affected)

Á¦´ë·Î º¹±¸µÈ °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

¸ØÃßÁö ¾Ê´Â ½Ã½ºÅÛÀ» À§ÇÑ DB ¹Ì·¯¸µ
SQL ¼­¹ö 2000¿¡´Â ¼­¹ö°¡ µµÁß¿¡ ´Ù¿îµÇ´õ¶óµµ ´Ù¸¥ ¼­¹ö°¡ ´ë½Å ÀÛµ¿ÇÏ°Ô ÇÏ´Â ±â´ÉÀ¸·Î Ŭ·¯½ºÅ͸µÀ» ÀÌ¿ëÇÏ¿´´Ù. ±×·¯³ª Ŭ·¯½ºÅ͸µÀ» ±¸ÃàÇϱâ À§Çؼ­´Â °øÀ¯ µð½ºÅ©¿Í °°Àº º°µµÀÇ Çϵå¿þ¾î°¡ ÇÊ¿äÇß´Ù. ¶ÇÇÑ µð½ºÅ© ÀÚü´Â °øÀ¯¸¦ ÇϹǷΠµð½ºÅ©°¡ ±úÁö´Â °æ¿ì¿¡´Â ÁÁÀº ÇØ°áÃ¥ÀÌ ¾Æ´Ï¾ú´Ù. ±×¸®°í ±¤ÄÉÀ̺í·Î ¼­·Î ¿¬°áÇØ¾ß ÇϹǷΠ100¸¶ÀÏÀ̶ó´Â °Å¸®ÀÇ Á¦Çѵµ ÀÖ¾ú´Ù. SQL ¼­¹ö 2005¿¡¼­´Â ¶Ç ´Ù¸¥ ÇØ°áÃ¥À¸·Î ¹Ì·¯¸µÀ̶ó´Â °ÍÀ» Áö¿øÇÑ´Ù. ¹Ì·¯¸µÀº µÎ ´ëÀÇ SQL ¼­¹ö¸¦ ¿î¿µÇϸ鼭 ¼­·Î ·Î±× Á¤º¸¸¦ ÁÖ°í¹ÞÀ¸¸é¼­ µ¿ÀÏÇÑ µ¥ÀÌÅ͸¦ À¯ÁöÇÑ´Ù.

µû¶ó¼­ º°µµÀÇ °øÀ¯ µð½ºÅ©°¡ ÇÊ¿ä ¾øÀ¸¸ç, µð½ºÅ© ÀÚü°¡ ±úÁö´õ¶óµµ ¼­·Î µð½ºÅ© º¹»çº»À» À¯ÁöÇϱ⠶§¹®¿¡ ¹®Á¦°¡ ¾È µÈ´Ù. ¶ÇÇÑ º°µµÀÇ ±¤ÄÉÀ̺íÀÌ ¾Æ´Ñ ÀÏ¹Ý ³×Æ®¿öÅ© ¼±À» »ç¿ëÇϹǷΠ°Å¸® Á¦Çѵµ ¾ø´Ù. ¿©±â¿¡ Ŭ·¯½ºÅ͸µÀº ¼­¹ö¿¡ ¹®Á¦°¡ »ý°Ü ±³Ã¼µÇ´Âµ¥ ÀÖ¾î 30ÃÊ ÀÌ»óÀÇ ½Ã°£ÀÌ °É¸®Áö¸¸ ¹Ì·¯¸µÀº 2¢¦3ÃÊ¸é ¼­¹ö°¡ ±³Ã¼µÇ¾î ÀÚµ¿À¸·Î ÀÛµ¿ÇÑ´Ù.

±×·¸´Ù°í ¹Ì·¯¸µÀÌ Å¬·¯½ºÅ͸µÀÇ ´ë¾ÈÀº µÉ ¼ö ¾ø´Ù. ¼­·Î Àå´ÜÁ¡ÀÌ Àֱ⠶§¹®ÀÌ´Ù. ¹Ì·¯¸µÀº ½Ã½ºÅÛ µ¥ÀÌÅͺ£À̽º¿¡´Â »ç¿ëÇÏÁö ¸øÇÑ´Ù. ´ÜÁö »ç¿ëÀÚ DB¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù. µû¶ó¼­ Ŭ·¯½ºÅ͸µÀº Àüü ½Ã½ºÅÛÀ» º¸È£ÇÏ´Â ¿ëµµ·Î »ç¿ëÇÏ°í ¹Ì·¯¸µÀº Áß¿äÇÑ »ç¿ëÀÚ µ¥ÀÌÅͺ£À̽º¸¦ º¸È£ÇÏ´Â ¿ëµµ·Î »ç¿ëÇÏ´Â °ÍÀÌ Àû´çÇÒ °ÍÀÌ´Ù. <±×¸² 10>Àº ¹Ì·¯¸µÀÇ µ¿ÀÛ ¹æ¹ýÀÌ´Ù.

<±×¸² 10> ¹Ì·¯¸µ µ¿ÀÛ ¹æ¹ý

¹Ì·¯¸µÀº µ¥ÀÌÅÍ ÀÚü¸¦ ¼­·Î Àü¼ÛÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ·Î±×¸¸À» ¼­·Î Àü´ÞÇÑ´Ù. ¾ÖÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅÍ µ¥ÀÌÅÍ ¼öÁ¤ ÀÛ¾÷ÀÌ µé¾î¿À¸é À̸¦ ¸ÕÀú ·Î±×¿¡ ±â·ÏÇÑ ´ÙÀ½ ¹Ì·¯ ¼­¹ö¿¡°Ôµµ ±× ·Î±× Á¤º¸¸¦ Àü´ÞÇÏ¿© ¹Ì·¯ µ¥ÀÌÅͺ£À̽º¿¡µµ µ¿ÀÏ Á¤º¸¸¦ À¯ÁöÇϵµ·Ï ÇØÁØ´Ù. ÀÌ·¯ÇÑ µ¿ÀÛÀº °¨½Ã ¼­¹ö(witness server)°¡ °è¼Ó °¨½ÃÇϰí ÀÖ´Ù°¡ ¸¸¾à ÁÖ ¼­¹ö°¡ ´Ù¿îÀÌ µÇ¸é ¹Ù·Î ¹Ì·¯ ¼­¹ö¸¦ ÁÖ ¼­¹ö·Î ¹Ù²Ù¾î µ¿ÀÛÇÏ°Ô ÇÑ´Ù. ±×µ¿¾È ¾ÖÇø®ÄÉÀ̼ÇÀº º°µµÀÇ ÇÁ·Î±×·¥ ¼öÁ¤ ¾øÀ̵µ ÀÚµ¿À¸·Î ¹Ì·¯ ¼­¹ö¸¦ ÁÖ ¼­¹ö·Î °£ÁÖÇÏ¿© Á¢¼ÓÀ» À¯ÁöÇÑ´Ù. ±×·³ Á÷Á¢ ½Ç½ÀÀ» ÇØº¸ÀÚ.

¿ø·¡´Â Á¦´ë·Î µÈ ½Ç½ÀÀ» À§Çؼ­´Â ÁÖ ¼­¹ö(Principal Server), ¹Ì·¯ ¼­¹ö(Mirror Server), °¨½Ã ¼­¹ö(Witness Server) ÀÌ·¸°Ô 3´ë°¡ ÀÖ¾î¾ß¸¸ ÇÏÁö¸¸, °£´ÜÇÑ ½Ç½ÀÀ» À§ÇÏ¿© ÇÑ ¼­¹ö¿¡ ÀÌ ¼¼ °³ÀÇ ¼­¹ö¸¦ ÀνºÅϽº À̸§¸¸ ´Þ¸®ÇÏ¿© ¼³Ä¡Çϸé Å×½ºÆ®°¡ °¡´ÉÇÏ´Ù. 3°³ÀÇ ¼­¹ö¸¦ ¸ðµÎ ¼³Ä¡ÇÑ ÈÄ ´ÙÀ½ °°ÀÌ Á¾´ÜÁ¡À» ¸¸µéÀÚ.

CREATE ENDPOINT EndPoint_Principal
  STATE=STARTED
  AS TCP (LISTENER_PORT=5055)
  FOR DATABASE_MIRRORING (ROLE=ALL);

Á¾´ÜÁ¡Àº ¿ÜºÎ¿¡¼­ ÀÌ ¼­¹ö¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â ¹®À» ¿­¾îÁÖ´Â ÀǹÌÀÌ´Ù. TCP ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ¿© 5055Æ÷Æ®¸¦ ¿­¾î ÁÖ¾ú´Ù. ¸¶Âù°¡Áö·Î ´Ù¸¥ ¹Ì·¯ ¼­¹ö¿Í °¨½Ã ¼­¹öµµ Á¾´ÜÁ¡À» ¸¸µç´Ù. ´Ü ÀÌ ¶§ ÇÑ ¼­¹ö¿¡¼­ Å×½ºÆ®¸¦ ÇÏ´Â °ÍÀ̹ǷΠ¼­·Î ´Ù¸¥ Æ÷Æ® ¹øÈ£¸¦ ºÎ¿©ÇØÁà¾ß ÇÑ´Ù. ¹Ì·¯ ¼­¹ö´Â 5056, °¨½Ã ¼­¹ö´Â 5057 ÀÌ·± ½ÄÀ¸·Î ´Ù¸¥ Æ÷Æ® ¹øÈ£¸¦ ºÎ¿©ÇÏÀÚ. ±×·± ´ÙÀ½ ¾Õ¼­ ½º³À¼¦¿¡¼­ ½Ç½ÀÇÑ Test DB¸¦ ÁÖ ¼­¹ö¿¡¼­ ¹é¾÷ÇÏ¿© ¹Ì·¯ ¼­¹ö¿¡ º¹±¸¸¦ ÇÑ´Ù. µû¶ó¼­ ÁÖ ¼­¹ö¿Í ¹Ì·¯ ¼­¹ö´Â µ¿ÀÏÇÑ Test DB¸¦ °¡Áö°Ô µÈ´Ù. ±×·± ´ÙÀ½ ¹Ì·¯¸µÀ» À§ÇÑ ÆÄÆ®³Ê¸¦ ¾Æ·¡¿Í °°ÀÌ ¹Ì·¯ ¼­¹ö¿¡¼­ºÎÅÍ ÀÛ¾÷À» ÇÑ´Ù.

ALTER DATABASE [Test] SET PARTNER = 'TCP://WIN2003-SQLServer2005:5055'

¸¶Âù°¡Áö·Î ÁÖ ¼­¹ö¿¡¼­´Â ¹Ì·¯ ¼­¹ö¿Í °¨½Ã ¼­¹ö¸¦ ¿¬°áÇÑ´Ù.

-- mirrored ¼­¹ö ÁöÁ¤
ALTER DATABASE [Test] SET PARTNER = 'TCP://WIN2003-SQLServer2005:5056'
-- witness ¼­¹ö ÁöÁ¤
ALTER DATABASE [Test] SET WITNESS = 'TCP://WIN2003-SQLServer2005:5057'

ÀÌÁ¦ ÁÖ ¼­¹ö¿¡¼­ ´ÙÀ½°ú °°Àº µ¥ÀÌÅÍ ÀÛ¾÷À» ÇØº¸ÀÚ.

INSERT INTO Dummy VALUES (11);
INSERT INTO Dummy VALUES (12);

ÀÌÁ¦ ¹Ì·¯ ¼­¹ö¿¡¼­ µ¿ÀÏÇÑ µ¥ÀÌÅͰ¡ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇØ º¸ÀÚ. ÀÌ ¶§ ¹Ì·¯ ¼­¹ö´Â Ç×»ó Àбâ Àü¿ëÀÇ º¹±¸ ¸ðµå·Î µ¿ÀÛÀ» Çϱ⠶§¹®¿¡ Á¢±ÙÀ» ÇÒ ¼ö°¡ ¾ø´Ù. Á¢±ÙÀ» ÇÏ¸é ´ÙÀ½°ú °°Àº ¿¡·¯ ¸Þ½ÃÁö°¡ ³ª¿Â´Ù.

Database Test cannot be opened - it is acting as a mirror database.

µû¶ó¼­ ¾Õ¼­ ½Ç½ÀÇÑ ½º³À¼¦À» ÀÌ¿ëÇÏ¿© Á¢±ÙÀ» ÇØ¾ß ÇÑ´Ù. ¹Ì·¯ ¼­¹öÀÇ ½º³À¼¦À» ¸¸µé°í Dummy Å×À̺íÀ» Á¶È¸ÇØ º¸ÀÚ.

SELECT * FROM dummy;

-----------
1
2
3
4
11
12

°ªÀÌ Á¦´ë·Î µé¾î°¡ ÀÖ´Â °ÍÀ» È®ÀÎÇØ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌÁ¦ ÁÖ ¼­¹ö¸¦ ÇÑ ¹ø ´Ù¿î½ÃÄÑ º¸ÀÚ. SQL Computer Manager¿¡¼­ ÁÖ ¼­¹öÀÇ µ¿ÀÛÀ» ¸ØÃá´Ù. ±×·¯¸é ÀÚµ¿À¸·Î ¹Ì·¯ ¼­¹ö°¡ ÁÖ ¼­¹ö°¡ µÇ°í ±âÁ¸ÀÇ ÁÖ ¼­¹ö´Â ¹Ì·¯ ¼­¹ö·Î ¼­·Î ½ºÀ§Ä¡°¡ µÈ´Ù. »õ·Î¿î ÁÖ ¼­¹ö¿¡¼­ Dummy Å×À̺íÀ» Á¶È¸ÇØ º¸ÀÚ. ÀÌÀü±îÁö´Â ½º³À¼¦ ¾øÀÌ´Â Á¶È¸°¡ ¾È µÇ´ø °ÍÀÌ ÀÌÁ¦´Â Àß µÉ °ÍÀÌ´Ù.

Á¤½Ä SQL ¼­¹ö 2005¸¦ ±â´Ù¸®¸ç
Áö³­ 4ȸ µ¿¾È SQL ¼­¹ö 2005ÀÇ »õ·Î¿î ¸ð½ÀÀ» »ìÆìº¸¾Ò´Ù. Áö±Ý±îÁö´Â º£Å¸2¸¦ ±âÁ¸À¸·Î »ìÆìº¸¾Ò°í ¾ÕÀ¸·Î´Â º£Å¸3µµ ³ª¿Í¾ß Çϰí Á¤½Ä¹öÀüµµ ³ª¿Í¾ß ÇÑ´Ù. ¾ÕÀ¸·Î »õ·Î¿î ¹öÀüÀÌ ³ª¿À¸é¼­ ¶Ç ¾î¶»°Ô ¹Ù²ðÁö´Â ¸ð¸£°Ú´Ù. ÇÏÁö¸¸ º£Å¸2 Á¤µµ¸é ¾î´À Á¤µµ SQL ¼­¹ö 2005¿¡¼­ ±¸ÇöÇÏ·Á´Â ÇÙ½É ±â´ÉÀº ´ëºÎºÐ µé¾î ÀÖ´Ù°í ºÁµµ µÉ °ÍÀÌ´Ù.

±× ÇÙ½É ±â´ÉÀ» ¿ä¾àÇØ º¸¸é °³¹ßÀÚÀÇ °üÁ¡¿¡¼­´Â ´å³Ý°úÀÇ ÅëÇÔÀÌ µÉ ¼ö ÀÖÀ» °ÍÀ̰í, °ü¸®ÀÚÀÇ °üÁ¡¿¡¼­´Â Çâ»óµÈ °¡¿ë¼º(availability)À̶ó°í ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀÌÁ¦ ¿Ã ÇϹݱ⿡ ³ª¿Ã Á¤½Ä SQL ¼­¹ö 2005¸¦ ±â´Ù¸®¸é¼­ ¶Ç ´Ù¸¥ Ç×ÇØ¸¦ ÁغñÇÏ·Á°í ÇÑ´Ù.@

* ÀÌ ±â»ç´Â ZDNet KoreaÀÇ Á¦ÈÞ¸ÅüÀÎ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î¿¡ °ÔÀçµÈ ³»¿ëÀÔ´Ï´Ù.
°ü·Ã±â»ç
[DB ¼º´É°ü¸® 2% ä¿ì±â] ¨ç ÀÚµ¿È­ ÅøÀÇ ÇѰè
µ¥ÀÌÅͺ£À̽º Áø´Ü, ¸¸º´ÅëÄ¡¾à ¹Ù¶óÁö ¸»¶ó
°ü°èÇü DB, ¸¸´ÉÀ̶ó´Â ȯ»ó ¹ö·Á¶ó
[SQL ¼­¹ö 2005 ½ÇÀü Ȱ¿ë] ¨ç ´õ °­·ÂÇØÁø T-SQL
À¯´ÉÇÑ µ¥ÀÌÅÍ ¾ÆÅ°ÅØÆ® µÇ±â À§ÇÑ¡¸5°¡Áö Á¦¾ð¡¹
µ¶ÀÚÀÇ°ß ³²±â±â (·Î±×ÀÎ ÈÄ µ¶ÀÚ ÀǰßÀ» ³²±â½Ç ¼ö ÀÖ½À´Ï´Ù.)
¾ÆÀ̵ð ºñ¹Ð¹øÈ£
 
 
?>
[DDD ¨ç] µµ¸ÞÀÎ ÁÖµµ °³¹ß
À©µµ¿ìCE µð¹ö±ë¿¡ °üÇÑ 12°¡Áö...
°¡»óÈ­¿¡ ½ÇÆÐÇÏ´Â 10°¡Áö ÀÌÀ¯
[±â°í]±×¸° ½ºÅ丮Áö·Î °¡´Â±æ
À©µµ¿ìCE °³¹ßÅø¿¡ °üÇÑ 12°¡Áö...
[Ã¥¼Ò°³] À¥ °³¹ßÀÚ¸¦ À§ÇÑ ½ºÇÁ...
'°¡»óÈ­ °ü¸®'¿¡ ´ëÇÑ 10°¡Áö ...
[Weekend TV]'½ºÅ¸Å©·¡ÇÁÆ®' ¼º´ë¹¦»çÀÇ ´ÞÀÎ [00:01:20]
ÁøÇà ·ùÁØ¿µ ±âÀÚ, Á¦ÀÛ À¯È¸Çö PD
[¼­¹ü±ÙÀÇ À¯ÄèÇÑ ¸®ºä]'º£Å×¶û' ·¹ÀÎÄÞ VS '½ÅÂü³»±â' TG»ïº¸ÀÇ 'PMP½ÃÀå ÀïÅ»Àü' [00:03:42]
ÁøÇà ·ùÁØ¿µ ±âÀÚ, Á¦ÀÛ À¯È¸Çö PD
º¸¾È°­È­ ±¸±Û ¡°À©µµ ¹ö¸®°í À¥À¸...
¡®À©µµXP¡¯½Ã´ë Æó¸·, »ç¿ëÀÚ¿¡°Ô...
ÀÎÅÍ³Ý ¹ðÅ· ºê¶ó¿ìÀú´Â µû·Î ÀÖ´Ù...
¡®³ªÈ¦·Î ¾×ƼºêX¡¯¡¦¼¼°è ÀÎÅͳݰú...
SKT µ¶Á¡ 800MHz Á֯ļö,...
´ÙÀ½ vs Á¶Áßµ¿, Á¤¸éÃæµ¹·Î Ä¡...
[Àλç]¹®È­Ã¼À°°ü±¤ºÎ
BT, 'GSM-CDMA Áö¿ø' ...
SKT '¾ÆÀ̽º¹Ú½º', ÅëÇÕ UC...
2011³â, LCD TV 10´ë ...
´Ù¿ì±â¼ú, À̸ÞÀÏ ¾ÆÄ«À̺ù ¼Ö·ç¼Ç...
 
 
The Korean edition of 'ZDNet' is published under license from CNET Networks, Inc., San Francisco, CA, USA. Editorial items appearing in 'ZDNet Korea' that were originally published in the US Edition of 'ZDNet', 'CNET', and 'CNET News.com' are the copyright properties of CNET Networks, Inc. or its suppliers.
Copyright ¨Ï 2008 CNET Networks, Inc. All Rights Reserved. 'ZDNet', 'CNET' and 'CNET News.com' are trademarks of CNET Networks, Inc.