SQL Server表分区详解

2018-8-31

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

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

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

分区请三思:

1、虽然分区可以带来众多的好处,但是同时也增加了实现对象的管理费用和复杂性。因此在进行分区之前要首先仔细的考虑以确定是否应为对象进行分区。

2、在确定了为对象进行分区后,下一步就要确定分区键和分区数。要确定分区数据,应先评估您的数据中是否存在逻辑分组和模式。

3、确定是否应使用多个文件分组。为了有助于优化性能和维护,应使用文件组分离数据。文件组是数据库数据文件的逻辑组合,它可以对数据文件进行管理和分配,以便提高数据库文件的并发访问效率。

为了简化操作,SQLServer2008中为表分区提供了相关的操作。

操作的顺序:

1、先定义文件组

2、指定哪些辅助数据库文件属于这个文件组

3、将表放入到文件组中

数据库分文件组(指定磁盘):

数据实际上是依附于表来存在的,我们将表放入到文件组中,而文件组是一个逻辑的概念,其实体是辅助数据库文件(ndr),所以就等于将我们指定的数据放入到了指定的辅助数据库文件中,然后如果将这些辅助数据库文件放入在不同的磁盘分区中,就可以最终实现有针对性的对相应的数据实现性能的优化。

创建文件组时,定义不同的文件组名称,可以有序地进行下一步表分区的分区映射文件组,如上图(选择数据库,右键查看属性图)。

一个水平分区表中有多个分区,每个分区对应一个文件组,这样就产生了很多文件组,因此性能也会有所提升,包括I/O性能提升,因为所有分区可以驻扎在一个不同的磁盘上。另一个好处是可以通过备份文件组单独备份一个分区。此外,SQLServer数据库引擎可以智能判断哪个分区上存放了什么数据,如果不止一个分区被访问,那么还可以借助多处理器实现并行数据检索。这种设计也充分利用了分区表的优势。

1、提高可伸缩性和可管理性:在SQLServer2005中建立分区,改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。

2、提高性能

3、只有将数据分区分到不同的磁盘上,才会有较大的提升。

4、因为在运行涉及表间联接的查询时,多个磁头可以同时读取数据。

对SQLServer数据表进行分区的过程分为三个步骤:

1)建立分区函数

2)建立分区方案

3)对表格进行分区

步骤如下:

小编结语:

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






暗色背景
手机扫码阅读本页