جدولی که در شروع کار کوچک است، ممکن است بهمرور میلیونها یا میلیاردها ردیف جمع کند؛ از سفارشهای فروشگاه گرفته تا transactionهای بانکی و رویدادهای ثبتشده در یک سامانه. راهنمای SQLServerCentral توضیح میدهد که در این مقیاس، نگهداری جدول دشوارتر میشود: زمان backup افزایش مییابد، بازسازی یا سازماندهی مجدد indexها منابع و زمان بیشتری میخواهد و حذف دادههای قدیمی با DELETE میتواند transaction log بزرگی ایجاد کند و باعث lock contention شود.
راهکار مطرحشده، Table Partitioning در SQL Server است. دادهها براساس یک ستون معنادار، مثل تاریخ سفارش، سال، منطقه یا دستهٔ مشتری، به partitionهای کوچکتر تقسیم میشوند. برنامه همچنان همان جدول را میبیند و لازم نیست شیوهٔ خواندن و نوشتن داده را تغییر دهد؛ اما SQL Server میتواند هر partition را جداگانه مدیریت کند. این جداسازی، نگهداری database، رسیدگی به indexها، سازماندهی فضای ذخیرهسازی و آرشیو دادههای تاریخی را آسانتر میکند.
در مثال مقاله، جدول Sales.Orders با ستون OrderDate تقسیم میشود. این ستون نقش partition key را دارد و مشخص میکند هر سفارش به کدام بخش تعلق دارد. چهار بخش برای سفارشهای پیش از ۲۰۲۴، سفارشهای ۲۰۲۴، سفارشهای ۲۰۲۵ و سفارشهای ۲۰۲۶ به بعد در نظر گرفته شده است؛ بدون اینکه برای هر سال نام جدول جداگانهای لازم باشد.
دو جزء دیگر، قواعد تقسیم و محل ذخیرهسازی را تعیین میکنند. partition function مرزهای تاریخ را مشخص میکند تا هر ردیف در partition مناسب قرار بگیرد. partition scheme نیز هر partition منطقی را به یک filegroup متصل میکند. هر filegroup میتواند یک یا چند فایل داده داشته باشد؛ فایلهایی که دادههای جدول و index در آنها ذخیره میشوند و اغلب پسوند .ndf دارند.
بخش اجرایی متن با ساخت database به نام SalesDB و schema به نام Sales شروع میشود. سپس filegroupهای مربوط به بازههای زمانی ساخته میشوند. دستورهای نمایشدادهشده پیش از ایجاد این موارد، وجودشان را بررسی میکنند تا موارد موجود دوباره ساخته یا جایگزین نشوند. متن بعد به ساخت فایلهای داده و دریافت مسیر پیشفرض ذخیرهسازی SQL Server میرسد.
نکتهٔ مهم راهنما این است که قرار دادن partitionها در filegroupهای جدا، بهخودیخود queryها را سریعتر نمیکند. استفاده از دیسکهای جدا هم باید با راهبرد ذخیرهسازی و نگهداری هماهنگ باشد؛ محور بحث، مدیریت داده در بخشهای کوچکتر است.
