26 ก.ย. 2023 เวลา 04:12 • การศึกษา

How to create partition table, schema and function on SQLSERVER

สวัสดีครับ วันนี้จะนำเสนอบทความวิธีการสร้าง Partition table, schema และ function สำหรับการแยก workload การทำงานของ Physical datafile ครับเพื่อประสิทธิภาพการอ่านเขียนของ Disk ที่ดียิ่งขึ้น โดยวิธีการจะมีรายละเอียดดังนี้
  • 1.
    Create file group ที่ database
  • 2.
    Add physical file ไปที่ file group
  • 3.
    Create a partition function โดยกำหนด range ของข้อมูลที่ต้องการให้มีการแยกในระบบ physical file
  • 4.
    Create a partition schema รวมกับ file group
  • 1.
    Create file group ที่ database สร้าง file group ที่ระดับ database โดยในตัวอย่างจะใช้ database : AdventureWorksDW2019 สำหรับการทดสอบ สามารถใช้ Query ได้ดังนี้
USE [master]
GO
ALTER DATABASE [AdventureWorksDW2019] ADD FILEGROUP [dbo.FactProductInventory_2010]
GO
ALTER DATABASE [AdventureWorksDW2019] ADD FILEGROUP [dbo.FactProductInventory_2011]
GO
ALTER DATABASE [AdventureWorksDW2019] ADD FILEGROUP [dbo.FactProductInventory_2012]
GO
ALTER DATABASE [AdventureWorksDW2019] ADD FILEGROUP [dbo.FactProductInventory_2013]
GO
ALTER DATABASE [AdventureWorksDW2019] ADD FILEGROUP [dbo.FactProductInventory_2014]
GO
2. Add physical file ไปที่ file group
ดำเนินการเพิ่ม Physical file ไปที่ file group เพื่อเก็บข้อมูลเข้า
ที่ส่วนนั้น
ALTER DATABASE [AdventureWorksDW2019]
ADD FILE
(
NAME = [dbo.FactProductInventory_2010],
FILENAME = 'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Data\dbo.FactProductInventory\dbo.FactProductInventory_2010.ndf',
SIZE = 5 MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10 MB
) TO FILEGROUP dbo.FactProductInventory_2010
GO
ALTER DATABASE [AdventureWorksDW2019]
ADD FILE
(
NAME = [dbo.FactProductInventory_2012],
FILENAME = 'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Data\dbo.FactProductInventory\dbo.FactProductInventory_2012.ndf',
SIZE = 5 MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10 MB
) TO FILEGROUP dbo.FactProductInventory_2012
GO
ALTER DATABASE [AdventureWorksDW2019]
ADD FILE
(
NAME = [dbo.FactProductInventory_2013],
FILENAME = 'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Data\dbo.FactProductInventory\dbo.FactProductInventory_2013.ndf',
SIZE = 5 MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10 MB
) TO FILEGROUP dbo.FactProductInventory_2013
GO
ALTER DATABASE [AdventureWorksDW2019]
ADD FILE
(
NAME = [dbo.FactProductInventory_2014],
FILENAME = 'D:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Data\dbo.FactProductInventory\dbo.FactProductInventory_2014.ndf',
SIZE = 5 MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 10 MB
) TO FILEGROUP dbo.FactProductInventory_2014
GO
3. Adding a Partition Function เป็นสร้าง Partition Function
สำหรับกำหนด rage ของข้อมูลที่เราต้องการให้มีการ
แยกเก็บในแต่ละ physical file
USE [AdventureWorksDW2019]
GO
CREATE PARTITION FUNCTION [PF_dbo.FactProductInventory_DateKey] (int)
AS RANGE RIGHT FOR VALUES
(
'20101230',
'20111231',
'20121231',
'20131231',
'20141231'
);
4. Create a partition schema รวมกับ file group
USE [AdventureWorksDW2019]
GO
CREATE PARTITION SCHEME [PS_dbo.FactProductInventory_DateKey]
AS PARTITION [PF_dbo.FactProductInventory_DateKey]
TO
(
'dbo.FactProductInventory_2010',
'dbo.FactProductInventory_2011',
'dbo.FactProductInventory_2012',
'dbo.FactProductInventory_2013',
'dbo.FactProductInventory_2014',
'Primary'
)
5. Create table และเพิ่ม partition schema เข้าไป
USE [AdventureWorksDW2019]
GO
CREATE TABLE [dbo].[FactProductInventory_ps]
(
[ProductKey] [int] NOT NULL,
[DateKey] [int] NOT NULL,
[MovementDate] [date] NOT NULL,
[UnitCost] [money] NOT NULL,
[UnitsIn] [int] NOT NULL,
[UnitsOut] [int] NOT NULL,
[UnitsBalance] [int] NOT NULL )
ON [PS_dbo.FactProductInventory_DateKey] ([DateKey]);
โฆษณา