इसका परीक्षण करने के लिए, प्रयोग को वास्तव में तालिका को विभाजित करने की आवश्यकता है। Http://www.kodyaz.com/articles/how-to-partition-table-non-partitioned-table-sql-server-2008.aspx देखें
पार्टीशनिंग फंक्शन को छोड़ना आपको बताता है कि पार्टिशनिंग फंक्शन क्या कहता है। यह नहीं कहता कि डेटा कहाँ संग्रहीत है। आप एक विभाजन फ़ंक्शन सेट कर सकते हैं और इसे वास्तव में एक टेबल को विभाजित किए बिना चला सकते हैं, जैसा कि पहले ही यहां प्रदर्शित किया गया है।
तालिका को विभाजित करने के लिए, आपको फ़ाइल समूह और एक विभाजन योजना भी बनानी होगी जो विभाजन के कार्य का उपयोग करते हुए फ़ाइल समूहों के लिए फ़ंक्शन परिणाम असाइन करें। फिर आपको उस पार्टीशन स्कीम का उपयोग करने वाली तालिका पर एक क्लस्टर्ड की डालनी होगी।
विभाजन को सेट करें
मैं कमांड लाइन एसक्यूएल में कोई विशेषज्ञ नहीं हूं। मैंने फ़ाइल समूहों pfg1 (pf1 फ़ाइल के साथ) और pfg2 (pf2 फ़ाइल के साथ) सेट करने के लिए SSMS इंटरफ़ेस का उपयोग किया। तब मैंने विभाजन कार्य और योजना की घोषणा की:
CREATE PARTITION FUNCTION IDRange1 (int)
AS RANGE LEFT FOR VALUES (10) ;
GO
CREATE PARTITION SCHEME ps_IDRange1
AS PARTITION IDRange1
TO (pfg1, pfg2)
GO
तालिका और क्लस्टर इंडेक्स बनाएं
CREATE TABLE [IDRanges](
[ID] [int] NOT NULL
)
GO
CREATE CLUSTERED INDEX PK_IDRanges
ON dbo.IDRanges(id) ON ps_IDRange1 (ID)
GO
ऐसा करने के बाद, जब आप sys.partitions (मेरे पास 2005 है) को क्वेरी करते हैं, तो आप देखते हैं कि तालिका में अब तालिका के लिए केवल एक के बजाय दो विभाजन हैं। यह इंगित करता है कि हमने इस तालिका के लिए विभाजन को पूरी तरह से लागू कर दिया है।
select * from sys.partitions where object_id = object_id('IDRanges')
partition_id object_id index_id विभाजन_नंबर hows_id पंक्तियाँ
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 0
72057597780361216 770674389 1 2 72057597780361216 0
अब जबकि हमारे पास दो विभाजन हैं (प्रत्येक के लिए एक पंक्ति गणना के साथ), हम एक प्रयोग कर सकते हैं।
पंक्तियाँ डालें
INSERT INTO IDRanges ([ID]) VALUES (17)
INSERT INTO IDRanges ([ID]) VALUES (7)
क्या हुआ है यह देखने के लिए sys.partitions की जाँच करें।
select * from sys.partitions where object_id = object_id('IDRanges')
partition_id object_id index_id विभाजन_नंबर hows_id पंक्तियाँ
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 1
72057597780361216 770674389 1 2 72057597780361216 1
हां। प्रत्येक विभाजन में एक पंक्ति।
एक पंक्ति ले जाएँ।
UPDATE IDRanges
SET [ID] = 8 WHERE [ID] = 17
विभाजन की जाँच करें
select * from sys.partitions where object_id = object_id('IDRanges')
partition_id object_id index_id विभाजन_नंबर hows_id पंक्तियाँ
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 2
72057597780361216 770674389 1 2 72057597780361216 0
पहले विभाजन में अब 1 के बजाय दो पंक्तियाँ हैं, और दूसरे विभाजन में दो के बजाय शून्य पंक्तियाँ हैं।
मुझे लगता है कि यह पुष्टि करता है कि विभाजन तालिका में संकुल कुंजी को संशोधित करने के परिणामस्वरूप पंक्ति स्वचालित रूप से स्थानांतरित हो गई थी।