首页 > 数据库 >SqlServer表分区

SqlServer表分区

时间:2022-12-05 11:01:06浏览次数:36  
标签:架构 函数 创建 分区 SqlServer 000 SQL


你是否在千方百计优化SQL Server 数据库的性能?如果你的数据库中含有大量的表格,把这些表格分区放入独立的文件组可能会让你受益匪浅。SQL Server 2005引入的表分区技术,让用户能够把数据分散存放到不同的物理磁盘中,提高这些磁盘的并行处理性能以优化查询性能。

  SQL Server数据库表分区操作过程由三个步骤组成:

  1. 创建分区函数

  2. 创建分区架构

  3. 对表进行分区

  下面将对每个步骤进行详细介绍。

  步骤一:创建一个分区函数

  此分区函数用于定义你希望SQL Server如何对数据进行分区的参数值([u]how[/u])。这个操作并不涉及任何表格,只是单纯的定义了一项技术来分割数据。

  我们可以通过指定每个分区的边界条件来定义分区。例如,假定我们有一份Customers表,其中包含了关于所有客户的信息,以一一对应的客户编号(从1到1,000,000)来区分。我们将通过以下的分区函数把这个表分为四个大小相同的分区:

分区建可以为:

text、ntext、image、xml、timestamp、varchar(max)、nvarchar(max)、varbinary(max)、别名数据类型或 CLR 用户定义数据类型外,所有数据类型均有效。

CREATE PARTITION FUNCTION customer_partfunc (int) 

  AS RANGE RIGHT 

  FOR VALUES (250000, 500000, 750000)

  这些边界值定义了四个分区。第一个分区包括所有值小于250,000的数据,第二个分区包括值在250,000到49,999之间的数据。第三个分区包括值在500,000到7499,999之间的数据。所有值大于或等于750,000的数据被归入第四个分区。

  请注意,这里调用的"RANGE RIGHT"语句表明每个分区边界值是右界。类似的,如果使用"RANGE LEFT"语句,则上述第一个分区应该包括所有值小于或等于250,000的数据,第二个分区的数据值在250,001到500,000之间,以此类推。

  步骤二:创建一个分区架构

  一旦给出描述如何分割数据的分区函数,接着就要创建一个分区架构,用来定义分区位置([u]where[/u])。创建过程非常直截了当,只要将分区连接到指定的文件组就行了。例如,如果有四个文件组,组名从"fg1"到"fg4",那么以下的分区架构就能达到想要的效果:  

CREATE PARTITION SCHEME customer_partscheme 

  AS PARTITION customer_partfunc 

  TO (fg1, fg2, fg3, fg4)

  注意,这里将一个分区函数连接到了该分区架构,但并没有将分区架构连接到任何数据表。这就是可复用性起作用的地方了。无论有多少数据库表,我们都可以使用该分区架构(或仅仅是分区函数)。

  步骤三:对一个表进行分区

  定义好一个分区架构后,就可以着手创建一个分区表了。这是整个分区操作过程中最简单的一个步骤。只需要在表创建指令中添加一个"ON"语句,用来指定分区架构以及应用该架构的表列。因为分区架构已经识别了分区函数,所以不需要再指定分区函数了。

  例如,使用以上的分区架构创建一个客户表,可以调用以下的Transact-SQL指令:  

CREATE TABLE customers (FirstName nvarchar(40), LastName nvarchar(40), CustomerNumber int) 

  ON customer_partscheme (CustomerNumber)

  关于SQL Server的表分区功能,你知道上述的相关知识就足够了。记住!编写能够用于多个表的一般的分区函数和分区架构就能够大大提高可复用性。

标签:架构,函数,创建,分区,SqlServer,000,SQL
From: https://blog.51cto.com/u_11295556/5911593

相关文章

  • SQLSERVER 2005 表分区说明
    2005 分区表实际应用例子  定义,原理网上讲得多了.在这就不费口舌,记录下创建过程.  一. 最基本,最重要的一步就是创建分区函数.创建分区函数首先要确定分区键--既......
  • SQLServer 2005 海量数据解决方案(分区表)与对已存在的表进行分区
    这两天一直在研究2005中如何对表进行分区,但是参考了多数资料都是说新建表后再将原表中数据插入到新表中,这样有些不方便.  最后找到了在已有表上做分区表的方法.见......
  • 在sqlserver2008中收缩日志文件
    —先备份数据库(含日志文件)usemyhisgobackupdatabasemyhistodisk=’d:\myhis_rzbak’go—设为简单恢复模式use[master]goalterdatabasemyhissetr......
  • CentOS9新建swap分区
    ddif=/dev/zeroof=/home/swapbs=4096count=4096000/sbin/mkswap/home/swap/sbin/swapon/home/swapvi/etc/fstab末尾添加“/home/swapswapswapdefault00......
  • sqlserver 中len和DataLength的区别
    https://zhuanlan.zhihu.com/p/342051927LEN()函数返回文本字段中值的长度。DataLength()函数返回文本字段中值的字符长度。区别在于:len()只返回字符数,一个汉字代表一个......
  • MySQL和SQLserver中group by的区别
    https://blog.csdn.net/weixin_48720080/article/details/126289174力扣中做了一道题,groupby可以在mysql中用,不能在mysqlserver中用,因为groupby后面没有select中的字段......
  • sqlserver存储过程
    ref:https://blog.csdn.net/weixin_55909413/article/details/114767079https://blog.csdn.net/h610443955/article/details/83185528......
  • MySQL进阶实战8,分区表详解
    一、分区表分区表是一个独立的逻辑表,底层是由多个物理子表组成。实现分区的代码实际上是对一组底层表的句柄对象的封装。对分区表的请求,都会通过句柄对象转化成对存储引擎的......
  • ubuntu新增分区方式扩展空间
    运行环境:虚拟机VMware®Workstation15.5.1内部系统:Ubuntu18.04.2虚拟磁盘方式1、创建新分区选择相应系统->虚拟机设置(硬件)->添加->硬盘->SCSI->创建新虚拟硬盘-......
  • Hive 的分区表的作用,是否越多越好?
    Hive的分区表的作用是啥?越多越好吗?为啥嘞?分区表的作用:  分区表极小的缩小了,数据的查找范围,提高查询速度和性能。越多越好吗:  不是的,原因:  hive如果有过多的......