博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlserver表分区小结
阅读量:5270 次
发布时间:2019-06-14

本文共 1367 字,大约阅读时间需要 4 分钟。

为什么要表分区?

    当一个表的数据量太大的时候,我们最想做的一件事是什么?将这个表一分为二或者更多分,但是表还是这个表,只是将其内容存储分开,这样读取就快了N倍了

  原理:表数据是无法放在文件中的,但是文件组可以放在文件中,表可以放在文件组中,这样就间接实现了表数据存放在不同的文件中。能分区存储的还有:表、索引和大型对象数据 。

  SQL SERVER 2005中,引入了表分区的概念, 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区,当一个表里的数据很多时,可以将其分拆到多个的表里,因为要扫描的数据变得更少 ,查询可以更快地运行,这样操作大大提高了性能,表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表 

 2.1什么时候使用分区表:

   1、表的大小超过2GB。 

  2、表中包含历史数据,新的数据被增加到新的分区中。 

 2.2表分区的优缺点 

表分区有以下优点: 

  1、改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。 
  2、增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用; 
  3、维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可; 
  4、均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。 
缺点: 
  分区表相关:已经存在的表没有方法可以直接转化为分区表。不过 Oracle 提供了在线重定义表的功能.

2.3表分区的操作三步走

   2.31 创建分区函数

CREATE PARTITION FUNCTION xx1(int)

AS RANGE LEFT FOR VALUES (10000, 20000);

注释:创建分区函数:myRangePF2,以INT类型分区,分三个区间,10000以内在A 区,1W-2W在B区,2W以上在C区.

 2.3.2创建分区架构

CREATE PARTITION SCHEME myRangePS2

AS PARTITION xx1

TO (a, b, c);

注释:在分区函数XX1上创建分区架构:myRangePS2,分别为A,B,C三个区间

A,B,C分别为三个文件组的名称,而且必须三个NDF隶属于这三个组,文件所属文件组一旦创建就不能修改

2.3.3 对表进行分区

常用数据规范--数据空间类型修改为:分区方案,然后选择分区方案名称和分区列列表,结果如图所示:

也可以用sql语句生成

CREATE TABLE [dbo].[AvCache]( 

[AVNote] [varchar](300) NULL,

[bb] [int] IDENTITY(1,1)

) ON [myRangePS2](bb); --注意这里使用[myRangePS2]架构(即分区策略),根据bb分区

2.3.4查询表分区

SELECT *, $PARTITION.[myRangePF2](bb)  FROM dbo.AVCache 

这样就可以清楚的看到表数据是如何分区的了

2.3.5创建索引分区

 

 

  

转载于:https://www.cnblogs.com/lx823706/p/5531497.html

你可能感兴趣的文章
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>
AX 2009 Grid控件下多选行
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>
Round B APAC Test 2017
查看>>
MySQL 字符编码问题详细解释
查看>>
Ubuntu下面安装eclipse for c++
查看>>
Windows 2003全面优化
查看>>
electron入门心得
查看>>
格而知之2:UIView的autoresizingMask属性探究
查看>>
我的Hook学习笔记
查看>>
js中的try/catch
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
整理推荐的CSS属性书写顺序
查看>>
ServerSocket和Socket通信
查看>>
css & input type & search icon
查看>>