Partition1:新建分区表
Posted 悦光阴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Partition1:新建分区表相关的知识,希望对你有一定的参考价值。
未分区的表,只能存储在一个FileGroup中;对Table进行分区后,每一个分区都存储在一个FileGroup,或分布式存储在不同的FileGroup中。对表进行分区的过程,是将逻辑上完整的一个表,按照特定的字段拆分成多个分区,分散到(相同或不同的)FileGroup中,每一个部分叫做表的一个分区(Partition)。
分区(Partition)的特性是:
- 每一个Partition在FileGroup中都独立存储,分区之间是相互独立的
- 每一个parititon都属于唯一的表对象,
- 每一个Partition 都有唯一的ID,
- 每一个Partition都有一个编号(Partition Number),同一个表的分区编号是唯一的,从1开始递增;
对表进行分区,能够将数据的操作局限在某一个分区中,从而减少数据查找的IO次数,降低产生Deadlock和阻塞的概率,提供数据更新的并发度,提高查询性能。
在创建表时,使用On 子句指定table存储的逻辑位置:
- ON filegroup | "default" :表示逻辑存储位置是单一的FileGroup;
- ON partition_scheme_name ( partition_column_name ) :表示逻辑存储位置是分区架构,按照partition_column将table拆分成多个partition,每一个partition都存储在一个指定的Filegroup中;
CREATE TABLE [schema_name . ] table_name
( <column_definition> )
[ ON { partition_scheme_name ( partition_column_name ) | filegroup | "default" } ]
[ WITH ( <table_option> [ ,...n ] ) ]
[ ; ]
从存储空间来理解分区,Partition实际上是表的一部分逻辑存储空间。未分区表的逻辑存储位置是FileGroup,分区表的逻辑存储位置是Partition Scheme,但是,FileGroup指定一个特定的逻辑存储位置,而Partition Scheme是分布式的,能够将数据分布式存储到不同的FileGroup中去。
跟逻辑存储空间相对应的是物理存储空间,物理存储空间是由File指定的,FileGroup是File的集合,每一个File都属于唯一的FileGroup。将table的存储空间拆分到不同的FileGroup中,将table的物理存储空间分布到不同的File中,只不过,不再是某一个FileGroup。实际存储数据的文件仍然是File。
在SQL Server中,File Group和Partition Scheme统称为Data Sapce(数据空间),默认的Data Space是Primary,即主文件组。
新建分区表分为三步,分别是:
Step1, 创建分区函数
分区函数的作用是提供分区字段的类型和分区的边界值,进而决定分区的数量
CREATE PARTITION FUNCTION [pf_int](int)
AS RANGE LEFT
FOR VALUES (10, 20)
分区函数pf_int 的含义是按照int类型分区,分区的边界值是10,20,left表示边界值属于左边界。两个边界值能够分成三个分区,别是(-infinite,10],(10,20],(20,+infinite)。
Step2,创建分区架构(Scheme)
分区架构的作用是为Parition分配FileGroup,在逻辑上,Partition Scheme和FileGroup是等价的,都是数据存储的逻辑空间,只不过Partition Scheme指定的是多个FileGroup。
CREATE PARTITION SCHEME [ps_int]
AS PARTITION [pf_int]
TO ([PRIMARY], [db_fg1], [db_fg1])
不管是在不同的FileGroup中,还是在相同的FileGroup中,分区都是独立存储的。
Step3,新建分区表
新建分区表,实际上是在创建Table时,使用on子句指定数据存储的逻辑位置是分区架构(Partition Scheme)
create table dbo.dt_test
(
ID int,
code int
)
on [ps_int] (id)
参考文档:
Create Partitioned Tables and Indexes
以上是关于Partition1:新建分区表的主要内容,如果未能解决你的问题,请参考以下文章