centos

centos中sqlserver分区策略

小樊
45
2025-12-05 23:18:34
栏目: 云计算

CentOS 上 SQL Server 分区策略

一 适用场景与总体原则

二 分区策略设计要点

三 落地步骤与示例脚本

-- 1) 文件组(示例:当前年/历史/未来)
ALTER DATABASE [YourDB] ADD FILEGROUP [FG_2024];
ALTER DATABASE [YourDB] ADD FILEGROUP [FG_2025];
ALTER DATABASE [YourDB] ADD FILEGROUP [FG_History];
ALTER DATABASE [YourDB] ADD FILEGROUP [FG_Future];

-- 2) 数据文件(Linux 路径示例)
ALTER DATABASE [YourDB] ADD FILE (NAME='YourDB_FG2024', FILENAME='/var/opt/mssql/data/YourDB_FG2024.ndf', SIZE=10GB, FILEGROWTH=1GB) TO FILEGROUP [FG_2024];
ALTER DATABASE [YourDB] ADD FILE (NAME='YourDB_FG2025', FILENAME='/var/opt/mssql/data/YourDB_FG2025.ndf', SIZE=10GB, FILEGROWTH=1GB) TO FILEGROUP [FG_2025];
ALTER DATABASE [YourDB] ADD FILE (NAME='YourDB_FGHist', FILENAME='/var/opt/mssql/data/YourDB_FGHist.ndf', SIZE=10GB, FILEGROWTH=1GB) TO FILEGROUP [FG_History];
ALTER DATABASE [YourDB] ADD FILE (NAME='YourDB_FGFut',  FILENAME='/var/opt/mssql/data/YourDB_FGFut.ndf',  SIZE=10GB, FILEGROWTH=1GB) TO FILEGROUP [FG_Future];

-- 3) 分区函数(RANGE RIGHT:边界属于右侧分区)
CREATE PARTITION FUNCTION pf_SalesDate (date)
AS RANGE RIGHT FOR VALUES
('2024-01-01','2025-01-01','2026-01-01');  -- 预留 2026 为未来分区

-- 4) 分区方案(映射到文件组,最后一个放未来分区)
CREATE PARTITION SCHEME ps_SalesDate
AS PARTITION pf_SalesDate
TO ([FG_2024], [FG_2025], [FG_History], [FG_Future]);

-- 5) 对齐索引的示例表(主键含分区键)
CREATE TABLE dbo.Sales (
    SaleID   bigint IDENTITY(1,1) NOT NULL,
    SaleDate date                NOT NULL,
    Amount   decimal(18,2)       NOT NULL,
    CustomerID int                NOT NULL,
    CONSTRAINT PK_Sales PRIMARY KEY CLUSTERED (SaleDate, SaleID)
) ON ps_SalesDate(SaleDate);

-- 6) 验证分区边界与分布
SELECT 
  $partition.pf_SalesDate(SaleDate) AS p,
  COUNT(*) AS rows
FROM dbo.Sales
GROUP BY $partition.pf_SalesDate(SaleDate)
ORDER BY p;

四 维护与运维要点

五 常见陷阱与优化建议

0
看了该问题的人还看了