SQL Server 分区表

为什么要对表进行分区
使用表分区最主要是用于:
  •      存档,比如将销售记录中1年前的数据分到一个专门存档的服务器中
  •      便于管理,比如把一个大表分成若干个小表,则备份和恢复的时候不再需要备份整个表,可以单独备份分区
  •      提高可用性,当一个分区跪了以后,只有一个分区不可用,其它分区不受影响
  •      提高性能,这个往往是大多数人分区的目的,把一个表分布到不同的硬盘或其他存储介质中,会大大提升查询的速度

 

分区表的步骤
 分区表的定义大体上分为三个步骤:
  1.     定义分区函数
  2.     定义分区构架
  3.     定义分区表

 

定义分区函数
分区函数是用于判定数据行该属于哪个分区,通过分区函数中设置边界值来使得根据行中特定列的值来确定其分区

定义分区函数的原型如下:

CREATE PARTITION FOUNTION partition_function_name ( input_parameter_type )

AS RANGE [ LEFT| RIGHT](这个参数是决定临界值本身应该归于“left”还是“right”)

FOR VALUES( [  ,...n  ] )

 

 

定义分区构架

分区构架中负责分配每个区属于哪个文件组

 

定义分区构架的原型如下:

CREATE PARTITION SCHEME partition_scheme_name

AS PARTITION partition_function_name

[ ALL ] TO ( { file_group_name | [ PRIMARY] } [ ,...n ] )

 

定义分区表
很多情况下都是你在发现已经表已经足够大的时候才想到要把表分区,但是分区表只能够在创建的时候指定为分区表

 

分区表的分割

相当于新建一个分区,将原有的分区需要分割的内容插入新的分区,然后删除老的分区的内容

 

这种操作非常非常消耗IO,并且在分割的过程中锁定分区三内的内容,造成分区三的内容不可用。不仅仅如此,这个操作生成的日志内容会是被转移数据的4倍

分割现有的分区需要两个步骤:

     1.首先告诉SQL SERVER新建立的分区放到哪个文件组

     2.建立新的分割点

     可以通过如下语句来完成:

 

 

分区的合并
分区的合并可以看作分区分割的逆操作。分区的合并需要提供分割点,这个分割点必须在现有的分割表中已经存在,否则进行合并就会报错

 

 

只需要使用merge参数:

 

假设分区3和分区4不再一个文件组,则合并后应该存在哪个文件组呢?
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server 分区表是一种数据库设计技术,它将大型数据集划分为多个逻辑或物理部分,每个部分称为分区。分区表可以提高查询性能、简化管理以及支持更有效的数据分发。以下是SQL Server分区表的一些关键特性: 1. **性能提升**:分区有助于减少I/O操作,特别是当查询只针对部分数据时。数据库系统可以直接访问所需的分区,而不是扫描整个表。 2. **空间效率**:通过将数据按时间、地理区域或其他关键字段分区,可以减少存储空间的使用,因为每个分区可以独立管理和扩展。 3. **易于管理**:分区表使得维护和管理大型数据变得简单,比如数据备份、恢复、索引更新等,只需要处理相关的分区。 4. **灵活的数据分发**:对于分布式应用,分区表可以方便地在多个服务器上复制和分布,提高并发处理能力。 SQL Server 支持多种分区类型: - **范围分区**(Range Partitioning):根据数值范围对数据进行划分。 - **列表分区**(List Partitioning):根据预定义的列表值对数据进行划分。 - **哈希分区**(Hash Partitioning):根据哈希函数的结果将数据均匀分配到各个分区。 - **文件组分区**:基于文件组进行分区,用于存储大量小文件。 创建分区表时,你需要明确指定分区键和分区函数。分区表与非分区表类似,但在设计时需要考虑分区策略和查询优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值