--添加文件组 --ALTER DATABASE <数据库名称> ADD FILEGROUP <文件组名称> ALTER DATABASE CoreShop ADD FILEGROUP MyFileGroup --添加文件 --ALTER DATABASE <数据库名称> ADD FILE <数据表示> TO FILEGROUP <文件组名称> ALTER DATABASE CoreShop ADD FILE ( NAME = 'MyFileName',--文件名 FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\MyFileName.mdf', --文件完整名 SIZE = 5MB, --文件初始大小(单位:kb/mb/gb/tb) FILEGROWTH = 5MB, --文件自动增量(单位:kb/mb/gb/tb) MAXSIZE = 2GB --文件增大的最大大小(单位:kb/mb/gb/tb/unlimited) ) TO FILEGROUP MyFileGroup --定义分区函数 --分区函数用于判定数据行数据哪个分区,通过分区函数中设置边界值来使得根据行中特定列的值来确定其分区。 --其中[LEFT | RIGHT]决定了VALUES中的边界值被划分到哪一个分区中(即,边界值数据左分区还是右分区)。 --CREATE PARTITION FUNCTION <分区函数名>(datetime2(0)) --AS RANGE [LEFT | RIGHT] FOR VALUES('','') CREATE PARTITION FUNCTION MyPartitionFun(DATETIME2(0)) AS RANGE LEFT FOR VALUES('2022-01-01 00:00:00','2023-01-01 00:00:00') --查看分区函数 SELECT * FROM sys.partition_functions --定义分区架构 --分区架构用于定义每个区的存储方式,分区架构仅仅是依赖分区函数 --分区架构中负责分配每个区属于哪个文件组,而分区函数是决定如何在逻辑上分区。 --CREATE PARTITION SCHEME <分区架构名> --AS PARTITION <分区函数名> ALL TO(<文件组名>,[DEFAULT]) CREATE PARTITION SCHEME MyPartitionSch AS PARTITION MyPartitionFun ALL TO(MyFileGroup) --查看分区架构 SELECT * FROM sys.partition_schemes --定义分区表 --CREATE TABLE <表名> --( -- <列属性>。。。 --) ON <分区架构名>(<列名>) CREATE TABLE Student( Id BIGINT NOT NULL, Name NVARCHAR(50) NULL, Age INT NULL, CreateDate DATETIME2(0) NULL, ) ON MyPartitionSch(CreateDate) --插入一些测试数据,看一下每个分区中的数据量 SELECT * FROM sys.partitions WHERE OBJECT_NAME(OBJECT_ID)='Student';
表分区的优点:
1、改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。
2、增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;
3、维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;
4、均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。
表分区的缺点:
已经存在的表没有方法可以直接转化为分区表
什么时候使用分区表:
1、表的大小超过2GB。
2、表中包含历史数据,新的数据被增加都新的分区中。