可以把库、表、分区绑定到文件组上。
文件组系统表
-- sys.data_spaces 表空间定义表
-- sys.database_files 表空间与表空间文件一对多关系表
-- sys.destination_data_spaces 分区表对应文件组的多对多关系(同一个文件组的不同位置)
-- sys.filetables
-- sys.filegroups 文件组定义表
分区表使用文件组
- 分区结构可以使用一个文件组也可以使用多个文件组,如果带 ALL 属性则只能绑定一个文件组
- 分区结构如果指定一个文件组同时使用 ALL 属性,分区函数会一一对应文件组中的文件
- 如果要指定每一个小分区对应一个文件组中的文件,则文件组中文件数量要大于等于分区函数的分区数量,否则添加新分区时会出现“does not have any next used filegroup”提示
- 表分区迁移到另一张表,必须是同一个文件组,不同库是不同的文件组,所以不能跨库迁移分区
- 已经绑定文件组的分区结构理论支持上把主键删掉重新绑定文件组,未验证
- 删除文件组必须先删除文件组中的文件
- AUTOGROW_ALL_FILES 只能在 modify filegroup 时使用,但库在使用中时不能设置 AUTOGROW_ALL_FILES,所以单独设置 file MAXSIZE = UNLIMITED
- 如果删除文件组文件后出现 file XXX cannot be reused until after the next backup log operation 备份事务日志再进行操作
分区创建并自动创建文件组和文件
- 先创建分区函数
- 创建文件组 DBNAME_FG_TABLENAME
- 在文件组中创建文件,文件数大于或等于分区函数 VALUE + 4,DBNAME_FG_TABLENAME_PARTID
- 创建分区结构,结构绑定文件组
自动添加文件组文件
- 扫描分区函数,判断文件数是否大于分区函数
- 创建文件组文件
自动添加分区并刷新分区结构
- 设置分区维护表,包含分区函数名、分区间隔粒度、分区间隔值
- 扫描分区函数的 VALUE,与分区维护表的 (分区粒度 * 分区间隔值) * 16 进行判断
- 添加分区函数并刷新分区结构