要对sqlserver的表分区 已知已经进行了以下操作
ALTER DATABASE [SL_LMS]
ADD FILEGROUP SL_LMS_FG_2019;
ALTER DATABASE [SL_LMS]
ADD FILEGROUP SL_LMS_FG_2020;
ALTER DATABASE [SL_LMS]
ADD FILEGROUP SL_LMS_FG_2021;
ALTER DATABASE [SL_LMS]
ADD FILEGROUP SL_LMS_FG_2022;
ALTER DATABASE [SL_LMS]
ADD FILEGROUP SL_LMS_FG_2023;
ALTER DATABASE [SL_LMS]
ADD FILEGROUP SL_LMS_FG_2024;
ALTER DATABASE [SL_LMS]
ADD FILEGROUP SL_LMS_FG_2025;
ALTER DATABASE [SL_LMS]
ADD FILEGROUP SL_LMS_FG_2026;
SELECT *
FROM sys.filegroups;
--创建分区文件并挂载到对应年份的文件组
ALTER DATABASE [SL_LMS]
ADD FILE (
NAME = 'SL_LMS_FG_2019_Data',
FILENAME = '/var/opt/mssql/data/SL_LMS_2019.ndf',
SIZE = 100MB,
MAXSIZE = 500MB,
FILEGROWTH = 100MB
) TO FILEGROUP SL_LMS_FG_2019;
ALTER DATABASE [SL_LMS]
ADD FILE (
NAME = 'SL_LMS_FG_2020_Data',
FILENAME = '/var/opt/mssql/data/SL_LMS_2020.ndf',
SIZE = 100MB,
MAXSIZE = 500MB,
FILEGROWTH = 100MB
) TO FILEGROUP SL_LMS_FG_2020;
ALTER DATABASE [SL_LMS]
ADD FILE (
NAME = 'SL_LMS_FG_2021_Data',
FILENAME = '/var/opt/mssql/data/SL_LMS_2021.ndf',
SIZE = 100MB,
MAXSIZE = 500MB,
FILEGROWTH = 100MB
) TO FILEGROUP SL_LMS_FG_2021;
ALTER DATABASE [SL_LMS]
ADD FILE (
NAME = 'SL_LMS_FG_2022_Data',
FILENAME = '/var/opt/mssql/data/SL_LMS_2022.ndf',
SIZE = 100MB,
MAXSIZE = 500MB,
FILEGROWTH = 100MB
) TO FILEGROUP SL_LMS_FG_2022;
ALTER DATABASE [SL_LMS]
ADD FILE (
NAME = 'SL_LMS_FG_2023_Data',
FILENAME = '/var/opt/mssql/data/SL_LMS_2023.ndf',
SIZE = 100MB,
MAXSIZE = 500MB,
FILEGROWTH = 100MB
) TO FILEGROUP SL_LMS_FG_2023;
ALTER DATABASE [SL_LMS]
ADD FILE (
NAME = 'SL_LMS_FG_2024_Data',
FILENAME = '/var/opt/mssql/data/SL_LMS_2024.ndf',
SIZE = 100MB,
MAXSIZE = 500MB,
FILEGROWTH = 100MB
) TO FILEGROUP SL_LMS_FG_2024;
ALTER DATABASE [SL_LMS]
ADD FILE (
NAME = 'SL_LMS_FG_2025_Data',
FILENAME = '/var/opt/mssql/data/SL_LMS_2025.ndf',
SIZE = 100MB,
MAXSIZE = 500MB,
FILEGROWTH = 100MB
) TO FILEGROUP SL_LMS_FG_2025;
SELECT
name AS file_name,
physical_name AS file_path,
size/128.0 AS size_mb,
type_desc AS file_type
FROM sys.database_files;
-- 1. 创建分区函数
CREATE PARTITION FUNCTION pf_created_time_bigint_by_year (BIGINT)
AS RANGE LEFT FOR VALUES (
1577807999000, -- 2019 结束
1609430399000, -- 2020 结束
1640966399000, -- 2021 结束
1672502399000, -- 2022 结束
1704038399000, -- 2023 结束
1735660799000, -- 2024 结束
1767196799000 -- 2025 结束
);
-- 2. 创建分区方案(映射到文件组)
CREATE PARTITION SCHEME ps_created_time_bigint_by_year
AS PARTITION pf_created_time_bigint_by_year
TO (
[SL_LMS_FG_2019], [SL_LMS_FG_2020], [SL_LMS_FG_2021], [SL_LMS_FG_2022],
[SL_LMS_FG_2023], [SL_LMS_FG_2024], [SL_LMS_FG_2025],[SL_LMS_FG_2026]
);
--对user表分区
CREATE TABLE dbo.t_user_p (
[id] [nvarchar](128) NOT NULL,
[user_code] [nvarchar](128) NOT NULL,
[gender] [nvarchar](8) NULL,
[email] [nvarchar](128) NULL,
[country_code] [nvarchar](8) NULL,
[mobile] [nvarchar](16) NULL,
[password] [nvarchar](128) NOT NULL,
[salt] [nvarchar](32) NOT NULL,
[secret] [nvarchar](256) NULL,
[status] [nvarchar](255) NOT NULL,
[avatar] [nvarchar](1000) NULL,
[create_user_id] [nvarchar](36) NULL,
[created_time] [bigint] not NULL,
[update_user_id] [nvarchar](36) NULL,
[updated_time] [bigint] NULL,
[deleted] [int] NOT NULL,
[is_external] [tinyint] NOT NULL,
[is_candidate] [tinyint] NOT NULL,
[avatar_url] [nvarchar](1024) NOT NULL,
[citizen_id] [nvarchar](13) NULL,
[birth_of_date] [nvarchar](13) NULL,
[agent_code] [nvarchar](128) NULL,
[fk_branch_id] [bigint] NULL,
[type] [nvarchar](16) NULL,
[login_result] [nvarchar](20) NULL,
[error_description] [nvarchar](1024) NULL,
[user_department] [nvarchar](30) NULL,
[leader] [nvarchar](20) NULL,
[is_logout] [int] NULL,
[login_role] [int] NULL,
[first_name] [nvarchar](128) NULL,
[last_name] [nvarchar](128) NULL,
[username] AS (concat_ws(' ',[first_name],[last_name])) PERSISTED NOT NULL,
[avatar_file_id] [nvarchar](255) NULL,
CONSTRAINT [PK_t_user_p] PRIMARY KEY CLUSTERED ([created_time] ASC,[id] ASC)
ON ps_created_time_bigint_by_year ([created_time]), -- 关键:使用分区方案
CONSTRAINT [UQ_t_user_code_p] UNIQUE NONCLUSTERED ([user_code] ASC)
ON [PRIMARY]
) ON ps_created_time_bigint_by_year ([created_time]);
要求验证对表t_user_p的分区是否生效
sqlserver的版本为
Microsoft SQL Server 2022 (RTM-CU10) (KB5031778) - 16.0.4095.4 (X64)
Oct 30 2023 16:12:44
Copyright (C) 2022 Microsoft Corporation
Developer Edition (64-bit) on Linux (Ubuntu 22.04.3 LTS) <X64>
最新发布