分区表理论解析(下):SQL Server 2k5&2k8系列(二)

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:


接分区表理论解析(上)

 
分区方案
对表和索引进行分区的第二步是创建分区方案。分区方案定义了一个特定的分区函数将使用的物理存储结构(其实就是文件组),或者说是分区方案将分区函数生成的分区映射到我们定义的一组文件组。所以分区方案解决的是Where的问题,即表的各个分区在哪里存储的问题。分区方案的创建语法如下:
CREATE  PARTITION SCHEME partition_scheme_name
AS  PARTITION partition_function_name
[ ALL ] TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] )
[ ; ]
 
分区方案语法的相关解释:
1,   创建分区方案时,根据分区函数的参数,定义映射表分区的文件组。必须指定足够的文件组来容纳分区数。可以指定所有分区映射到不同文件组、某些分区映射到单个文件组或所有分区映射到单个文件组。如果您希望在以后添加更多分区,还可以指定其他未分配的文件组。在这种情况下,SQL Server  NEXT USED 属性标记其中一个文件组。这意味着该文件组将包含下一个添加的分区。一个分区方案仅可以使用一个分区函数。但是,一个分区函数可以参与多个分区方案。
2,   partition_scheme_name 是分区方案的名称。分区方案名称在数据库中必须是唯一的,并且符合标识符规则。
3,   partition_function_name 是使用当前分区方案的分区函数的名称。分区函数所创建的分区将映射到在分区方案中指定的文件组。partition_function_name 必须已经存在于数据库中。
4,   ALL 指定所有分区都映射到在 file_group_name 中提供的同一个文件组,或映射到主文件组(如果指定了 [PRIMARY])。如果指定了 ALL,则只能指定一个 file_group_name
5,   file_group_name | [ PRIMARY ] [ ,...n] 代表n个文件组。和分区函数中的各个分区对应。文件组必须已经存在于数据库中。 如果指定了 [PRIMARY],则分区将存储于主文件组中。如果指定了 ALL,则只能指定一个 file_group_name。分区分配到文件组的顺序是从分区 1 开始,按文件组在 [,...n] 中列出的顺序进行分配。在 [,...n] 中,可以多次指定同一个文件组。如果 n 不足以拥有在分区函数中指定的分区数,则 CREATE PARTITION SCHEME 将失败,并返回错误。
6,   如果分区函数生成的分区数少于创建分区方案时提供的文件组数,则分区方案中第一个未分配的文件组将被标记为NEXT USED,并且出现显示命名 NEXT USED 文件组的信息。如果指定了 ALL,则单独的文件组将为该分区函数保持它的NEXT USED 属性。如果在 ALTER PARTITION FUNCTION 语句中创建了一个分区,则 NEXT USED 文件组将再接收一个分区。若要再创建一个未分配的文件组来拥有新的分区,请使用 ALTER PARTITION SCHEME
分区方案例子1:下面的代码先创建一个分区函数,然后再创建这个分区函数使用的分区方案,这个分区方案将每个分区映射到不同文件组。代码如下:
create  partition function MyPF1(int)
as  range left
for  values(500000,1000000,1500000)
go
create  partition scheme MyPS1
as  partition MyPF1
to  (fg1, fg2, fg3, fg4)
文件组、分区和分区边界值范围之间的关系如下表:
文件组
分区
取值范围
fg1
1
( 负无穷 ,500000]
fg2
2
[500001,1000000]
fg3
3
[1000001,1500000]
fg4
4
[1500001, 正无穷 )
 
分区方案例子2:下面的代码先创建一个分区函数,然后再创建这个分区函数使用的分区方案,这个分区方案将多个分区映射到同一个文件组。代码如下:
create  partition function MyPF2(int)
as  range left
for  values(500000,1000000,1500000)
go
create  partition scheme MyPS2
as  partition MyPF2
to  (fg1, fg1, fg1, fg2)
文件组、分区和分区边界值范围之间的关系如下表:
文件组
分区
取值范围
fg1
1
( 负无穷 ,500000]
Fg1
2
[500001,1000000]
Fg1
3
[1000001,1500000]
Fg2
4
[1500001, 正无穷 )
 
分区方案例子3:下面的代码先创建一个分区函数,然后再创建这个分区函数使用的分区方案,这个分区方案将所有分区映射到同一个文件组。代码如下:
create  partition function MyPF3 (int)
as  range left
for  values(500000,1000000,1500000)
go
create  partition scheme MyPS3
as  partition MyPF3
all to  (fg1)
文件组、分区和分区边界值范围之间的关系如下表:
文件组
分区
取值范围
fg1
1
( 负无穷 ,500000]
Fg1
2
[500001,1000000]
Fg1
3
[1000001,1500000]
Fg1
4
[1500001, 正无穷 )
 
分区方案例子4:下面的代码先创建一个分区函数,然后再创建这个分区函数使用的分区方案,这个分区方案指定了“NEXT USED”文件组。代码如下:
create  partition function MyPF4(int)
as  range left
for  values(500000,1000000,1500000) --4 个分区
go
create  partition scheme MyPS4
as  partition MyPF4
to  (fg1, fg2, fg3, fg4, fg5)   --5 个文件组
那么文件组fg5将自动被标记为“NEXT USED”文件组
分区方案例子5:下面的代码先创建一个分区函数,然后再创建这个分区函数使用的分区方案,这个分区方案指定了 [primary] 文件组。代码如下:
create  partition function MyPF5(datetime)
range  right
for  values('2008/01/01', '2009/01/01')
go
create  partition scheme MyPS5
as  partition MyPF5
to ( [primary], fg1, fg2)
 
最后必须明白一点,一张表最多只能有 1000 个分区。
 
分区表
 
在分区函数和分区方案创建完成后,创建分区表的准备工作已经完成。我们看一个完整的例子,代码如下:
-- 创建分区函数
create  partition function MyPF(datetime)
range  right
for  values('2007-1-1', '2008-1-1')
go
-- 创建分区方案
create  partition scheme MyPS
as  partition MyPF
to ( fg1, fg2, fg3)
go
-- 创建分区表
create  table orders
(
    OrderID int identity(1,1) primary key,
    OrderDate datetime,
    CustID varchar(10)
)
on  MyPS(OrderDate)
 
更完整的例子请关注实战分区表,我会用一个完整的 Demo 来演示分区表这一技术。
下一节内容包裹:
1,   实战分区表
2,   查询某个分区
3,   增加分区
4,   删除分区
5,   归档数据
敬请期待 ...















本文转自terryli51CTO博客,原文链接: http://blog.51cto.com/terryli/163317,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1月前
|
SQL 存储 JSON
SQL,解析 json
SQL,解析 json
67 8
|
2月前
|
SQL 数据库
SQL解析相关报错
SQL解析相关报错
45 5
|
1月前
|
SQL 关系型数据库 MySQL
数据库导入SQL文件:全面解析与操作指南
在数据库管理中,将SQL文件导入数据库是一个常见且重要的操作。无论是迁移数据、恢复备份,还是测试和开发环境搭建,掌握如何正确导入SQL文件都至关重要。本文将详细介绍数据库导入SQL文件的全过程,包括准备工作、操作步骤以及常见问题解决方案,旨在为数据库管理员和开发者提供全面的操作指南。一、准备工作在导
234 0
|
8天前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
20 0
|
30天前
|
SQL 监控 数据库
SQL语句是否都需要解析及其相关技巧和方法
在数据库管理中,SQL(结构化查询语言)语句的使用无处不在,它们负责数据的查询、插入、更新和删除等操作
|
1月前
|
SQL 存储 数据库
SQL语句是否都需要解析及其相关技巧与方法
在数据库管理系统中,SQL(Structured Query Language)语句作为与数据库交互的桥梁,其执行过程往往涉及到一个或多个解析阶段
|
1月前
|
网络协议 定位技术 Windows
Windows Server 2019 DNS服务器搭建
Windows Server 2019 DNS服务器搭建
|
1月前
|
SQL Oracle 关系型数据库
SQL整库导出语录:全面解析与高效执行策略
在数据库管理和维护过程中,整库导出是一项常见的需求,无论是为了备份、迁移还是数据分析,掌握如何高效、准确地导出整个数据库至关重要
|
1月前
|
SQL 安全 Windows
SQL安装程序规则错误解析与解决方案
在安装SQL Server时,用户可能会遇到安装程序规则错误的问题,这些错误通常与系统配置、权限设置、依赖项缺失或版本不兼容等因素有关
|
30天前
|
SQL 数据可视化 BI
SQL语句及查询结果解析:技巧与方法
在数据库管理和数据分析中,SQL语句扮演着至关重要的角色

推荐镜像

更多