ในการทดสอบสิ่งนี้การทดสอบจำเป็นต้องแบ่งพาร์ติชันตาราง ดูhttp://www.kodyaz.com/articles/how-to-partition-table-non-partitioned-table-sql-server-2008.aspx
การสอบถามฟังก์ชันการแบ่งพาร์ติชั่นจะบอกให้คุณทราบว่าฟังก์ชันการแบ่งพาร์ติชันนั้นเป็นอย่างไร ไม่ได้บอกว่าเก็บข้อมูลไว้ที่ไหน คุณสามารถตั้งค่าฟังก์ชั่นการแบ่งพาร์ติชันและรันโดยไม่ต้องแบ่งพาร์ติชั่นตารางตามที่แสดงไว้แล้วที่นี่
ในการแบ่งพาร์ติชันตารางคุณต้องสร้างกลุ่มไฟล์และรูปแบบการแบ่งพาร์ติชันที่ใช้ฟังก์ชันการแบ่งพาร์ติชันเพื่อกำหนดผลลัพธ์ของฟังก์ชั่นให้กับกลุ่มไฟล์ จากนั้นคุณต้องใส่คีย์คลัสเตอร์ในตารางที่ใช้โครงร่างการแบ่งพาร์ติชันนั้น
ตั้งค่าการแบ่งพาร์ติชัน
ฉันไม่มีความเชี่ยวชาญใน SQL บรรทัดคำสั่ง ฉันใช้อินเตอร์เฟส SSMS เพื่อตั้งค่ากลุ่มไฟล์ pfg1 (พร้อมไฟล์ pf1) และ pfg2 (พร้อมไฟล์ pf2) จากนั้นฉันก็ประกาศฟังก์ชั่นการแบ่งและรูปแบบ:
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 partition_number แถว hobt_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 partition_number แถว hobt_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 partition_number แถว hobt_id
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 2
72057597780361216 770674389 1 2 72057597780361216 0
ตอนนี้พาร์ติชันแรกมีสองแถวแทน 1 และพาร์ติชันที่สองมีศูนย์แถวแทนสอง
ฉันคิดว่านี่เป็นการยืนยันว่าแถวถูกย้ายโดยอัตโนมัติเนื่องจากการแก้ไขคีย์คลัสเตอร์ในตารางที่แบ่งพาร์ติชัน