SQL Server 表分区

什么是表分区

一般情况下,我们建立数据库表时,表数据都存放在一个文件里。

但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的磁盘下由多个cpu进行处理。这样文件的大小随着拆分而减小,还得到硬件系统的加强,自然对我们操作数据是大大有利的。

所以大数据量的数据表,对分区的需要还是必要的,因为它可以提高select效率,还可以对历史数据经行区分存档等。但是数据量少的数据就不要凑这个热闹啦,因为表分区会对数据库产生不必要的开销,除啦性能还会增加实现对象的管理费用和复杂性。

怎么实现

分区和文件组个数相同

分区是要把一个表数据拆分为若干子集合,也就是把把一个数据文件拆分到多个数据文件中,然而这些文件的存放可以依托一个文件组或这多个文件组,由于多个文件组可以提高数据库的访问并发量,还可以把不同的分区配置到不同的磁盘中提高效率,所以创建时建议分区跟文件组个数相同。

1.创建文件组

可以点击数据库属性在文件组里面添加
T-SQL 语法

alter database <数据库名> add filegroup <文件组名>

alter database test add filegroup group1

2.创建数据文件到文件组里面

可以点击数据库属性在文件里面添加

T-sql语法:

alter database <数据库名称> add file <数据标识> to filegroup <文件组名称>

–<数据标识> (name:文件名,fliename:物理路径文件名,size:文件初始大小kb/mb/gb/tb,filegrowth:文件自动增量kb/mb/gb/tb/%,maxsize:文件可以增加到的最大大小kb/mb/gb/tb/unlimited)

alter database testSplit add file
(name=N'ById1',filename=N'J:\Work\数据库\data\ById1.ndf',size=5Mb,filegrowth=5mb)

3.使用向导创建分区表

右键到要分区的表— >> 存储 — >> 创建分区 — >>显示向导视图 — >> 下一步 — >> 下一步。。

这里举例说下选择列的意思:

假如你选择的是int类型的列:那么你的分区可以指定为1–100W是一个分区,100W–200W是一个分区….

假如你选择的是datatime类型:那么你的分区可以指定为:2014-01-01–2014-01-31一个分区,2014-02-01–2014-02-28一个分区…

根据这样的列数据规则划分,那么在那个区间的数据,在插入数据库时就被指向那个分区存储下来。

然后下一步下一步最后你会得到分区函数和分区方案

时间: 2024-10-14 12:59:22

SQL Server 表分区的相关文章

SQL Server表分区的NULL值问题

原文:SQL Server表分区的NULL值问题 SQL Server表分区的NULL值问题 SQL Server表分区只支持range分区这一种类型,往往会被大家吐槽 人家MySQL支持四种类型:RANGE分区.LIST分区.HASH分区.KEY分区     共同点是MySQL跟SQL Server也有分区对齐的问题,都是水平切分,大家都允许分区列存在NULL值   这次我们测试SQL Server表分区的分区列的NULL值,究竟NULL值是被存放在哪个区间,以前一直没有注意 测试脚本 --1

SQL Server 表分区(partitioned table/Data Partitioning)

server Partitioned Table 可伸缩性性是数据库管理系统的一个很重要的方面,在SQL Server 2005中可伸缩性方面提供了表分区功能. 其实对于有关系弄数据库产品来说,对表.数据库和服务器进行数据分区的从而提供大数据量的支持并不是什么新鲜事,但 SQL Server 2005 提供了一个新的体系结构功能,用于对数据库中的文件组进行表分区.水平分区可根据分区架构,将一个表划分为几个较小的分组.表分区功能是针对超大型数据库(从数百吉字节到数千吉字节或更大)而设计的.超大型数

SQL Server已分区索引的特殊指导原则(3)

一.前言 在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思.这里我就里面的一些概念进行讲解,方便大家的交流. SQL Server 解读[已分区索引的特殊指导原则](1)- 索引对齐 SQL Server 解读[已分区索引的特殊指导原则](2)- 唯一索引分区 二.解读 [对非聚集索引进行分区] "对唯一的非聚集索引进行分区时,索引键必须包含分区依据列.对非唯一的非聚集索引进行分区时,默认情况下 S

SQL Server已分区索引的特殊指导原则(2)- 唯一索引分区

一.前言 在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思.这里我就里面的一些概念进行讲解,方便大家的交流. 二.解读 [对唯一索引进行分区] "对唯一索引(聚集或非聚集)进行分区时,必须从唯一索引键使用的分区依据列中选择分区依据列.此限制将使 SQL Server 只调查单个分区,以确保表中不存在重复的新键值.如果分区依据列不可能包含在唯一键中,则必须使用 DML 触发器,而不是强制实现唯一性.&

SQL Server锁分区特性引发死锁解析

原文:SQL Server锁分区特性引发死锁解析 锁分区技术使得SQL Server可以更好地应对并发情形,但也有可能带来负面影响,这里通过实例为大家介绍,分析由于锁分区造成的死锁情形. 前段时间园友@JentleWang在我的博客锁分区提升并发,以及锁等待实例中问及锁分区的一些特性造成死锁的问题,这类死锁并不常见,我们在这里仔细分析下.不了解锁分区技术的朋友请先看下我的锁分区那篇实例. Code(执行测试脚本时请注意执行顺序,说明) 步骤1 创建测试数据 use tempdb go creat

深入浅出SQL Server 2008 分区函数和分区表

原文:深入浅出SQL Server 2008 分区函数和分区表     当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的更小.维护任务(例如,重新生成索引或备份表)也可以更快的运行.    我们可以再不通过将表物理放置在多个磁盘驱动器上来拆分表的情况下获取分区.如果将某个表放置在一个物理驱动器上,将相关表放置在另一个驱动器上,则可以提高查询性能,因为当运行涉及表间连接的查询时,多个磁盘头同时读取数据.可以使用

收集并存储性能监控器数据到SQL Server表

server|监控|数据|性能 收集并存储性能监控器数据到SQL Server表 ? ? 当我们需要监控数据库SQL Server服务器性能的时候,有些数据库管理人员可能会选择Windows为我们提供的'性能'监控器来操作(开始菜单à管理工具à性能). 如果可以将性能监控器采集到的数据记录到SQL Server 的数据库表中去,很多工作对我们来说也许方便得多.开启性能监控器点击开始菜单à运行à执行(perfmon) 或者 开始菜单à管理工具à性能 ? 就可以看到下面的画面了 ?定义性能监控器LO

SQL Server 表变量和临时表系列之概念篇

问题引入 "菜鸟啊,最近我看到阿里云开发者论坛的数据库RDS中有人在提SQL Server表变量和临时表如何选择的问题,你去深入探讨下这个问题吧,解答解答他们的疑惑吧",老鸟又开始为菜鸟找活干了. "鸟哥啊,关于表变量和临时表使用选择的问题啊,向来行业里争论不休,我比较担心我们的观点被人家拍砖啊". "鸟啊,有争论才说明这个问题有价值啊,所以我们才更应该去弄清楚,道明白啊".反正老鸟总会找到合适的理由. "那好吧,要把这个问题要刨根问底

表的最大行限制-Sql Server表的最大行怎样修改

问题描述 Sql Server表的最大行怎样修改 数据库中的表有最大行数限制吗,如果有,我怎样修改, 我向表中添加大概快30,0000条数据的时候,添加不了. 解决方案 你的主键用的是什么类型?http://www.cnblogs.com/andy_tigger/archive/2011/08/21/2147745.html 如果添加不了, 你把错误的提示发出来吧