এটি পরীক্ষা করার জন্য, পরীক্ষার আসলে টেবিলটি বিভাজন করা দরকার। Http://www.kodyaz.com/articles/how-to-partition-table-non-partitioned-table-sql-server-2008.aspx দেখুন
পার্টিশন ফাংশন জিজ্ঞাসা করলে পার্টিশন ফাংশনটি কী বলে তা কেবল আপনাকে জানায়। এটি ডেটা কোথায় সংরক্ষণ করা হয়েছে তা বলে না। আপনি এখানে একটি পার্টিশনিং ফাংশন সেট আপ করতে পারেন এবং এটি কোনও টেবিলকে পার্টিশন না করে চালাতে পারেন, যেমনটি এখানে ইতিমধ্যে প্রদর্শিত হয়েছে।
টেবিলটি বিভক্ত করার জন্য আপনাকে ফাইল গ্রুপ এবং একটি বিভাজন স্কিম তৈরি করতে হবে যা ফাইল গ্রুপগুলিতে ফাংশন ফলাফল নির্ধারণের জন্য পার্টিশন ফাংশন ব্যবহার করে। তারপরে আপনাকে টেবিলে একটি ক্লাস্টার্ড কী লাগাতে হবে যা সেই বিভাজন স্কিমটি ব্যবহার করে।
পার্টিশন সেট আপ করুন
আমি কমান্ড লাইন এসকিউএল বিশেষজ্ঞ নই। আমি পিএসজি ফাইল ফাইল (পিএফ 1 ফাইল সহ) এবং পিএফজি 2 (পিএফ 2 ফাইল সহ) ফাইল সেটআপ করতে এসএসএমএস ইন্টারফেস ব্যবহার করেছি। তারপরে আমি পার্টিশন কার্যক্রম এবং স্কিম ঘোষণা করেছি:
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')
পার্টিশন_আইড অবজেক্ট_আইড ইনডেক্স_আইডি পার্টিশন_সংখ্যার হোবিট_আইডি সারি
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 0
72057597780361216 770674389 1 2 72057597780361216 0
এখন আমাদের দুটি পার্টিশন রয়েছে (প্রত্যেকটির জন্য একটি সারি গণনা রয়েছে), আমরা একটি পরীক্ষা চালাতে পারি।
সারি Inোকান
INSERT INTO IDRanges ([ID]) VALUES (17)
INSERT INTO IDRanges ([ID]) VALUES (7)
কি হয়েছে তা দেখতে সিস্টেমে পার্টিশনগুলি দেখুন।
select * from sys.partitions where object_id = object_id('IDRanges')
পার্টিশন_আইড অবজেক্ট_আইড ইনডেক্স_আইডি পার্টিশন_সংখ্যার হোবিট_আইডি সারি
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
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')
পার্টিশন_আইড অবজেক্ট_আইড ইনডেক্স_আইডি পার্টিশন_সংখ্যার হোবিট_আইডি সারি
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 2
72057597780361216 770674389 1 2 72057597780361216 0
প্রথম পার্টিশনে এখন 1 এর পরিবর্তে দুটি সারি রয়েছে এবং দ্বিতীয় পার্টিশনে দুটিটির পরিবর্তে শূন্য সারি রয়েছে।
আমি মনে করি এটি নিশ্চিত করে যে পার্টিশনযুক্ত টেবিলের ক্লাস্টার কীটি সংশোধন করার ফলে সারিটি স্বয়ংক্রিয়ভাবে সরানো হয়েছিল।