将数据库分区可提高其性能并易于维护。通过将一个大表拆分成更小的单个表,只访问一小部分数据的查询可以执行得更快,因为需要扫描的数据较少。而且可以更快地执行维护任务(如重建索引或备份表)。实现分区操作时可以不拆分表,而将表物理地放置在个别的磁盘驱动器上。例如,将表放在某个物理驱动器上并将相关的表放在与之分离的驱动器上可提高查询性能,因为当执行涉及表之间联接的查询时,多个磁头同时读取数据。可以使用 Microsoft® SQL Server™ 2000 文件组指定将表放置在哪些磁盘上。硬件分区
硬件分区将数据库设计为利用可用的硬件构架。硬件分区的示例包括: 允许多线程执行的多处理器,使得可以同时执行许多查询。换句话说,在多处理器上可以同时执行查询的各个组件,因此使单个查询的速度更快。例如,查询内引用的每个表可同时由不同的线程扫描。
RAID(独立磁盘冗余阵列)设备允许数据在多个磁盘驱动器中条带化,使更多的读/写磁头同时读取数据,因此可以更快地访问数据。在多个驱动器中条带化的表一般比存储在一个驱动器上的相同的表扫描速度要快。换句话说,将表与相关的表分开存储在不同的驱动器上可以显著提高联接那些表的查询的性能。 
水平分区
水平分区将一个表分段为多个表,每个表包含相同数目的列和较少的行。例如,可以将一个包含十亿行的表水平分区成 12 个表,每个小表代表特定年份内一个月的数据。任何需要特定月份数据的查询只引用相应月份的表。具体如何将表进行水平分区取决于如何分析数据。将表进行分区是为了使查询引用尽可能少的表。否则,查询时须使用过多的 UNION 查询来逻辑合并表,而这会削弱查询性能。有关查询水平分区的表的更多信息,请参见视图使用方案。 常用的方法是根据时期/使用对数据进行水平分区。例如,一个表可能包含最近五年的数据,但是只定期访问本年度的数据。在这种情况下,可考虑将数据分区成五个表,每个表只包含一年的数据。垂直分区
垂直分区将一个表分段为多个表,每个表包含较少的列。垂直分区的两种类型是规范化和行拆分。规范化是个标准数据库进程,该进程从表中删除冗余列并将其放到次表中,次表按主键与外键的关系链接到主表。行拆分将原始表垂直分成多个只包含较少列的表。拆分的表内的每个逻辑行与其它表内的相同逻辑行匹配。例如,联接每个拆分的表内的第十行将重新创建原始行。与水平分区一样,垂直分区使查询得以扫描较少的数据,因此提高查询性能。例如有一个包含七列的表,通常只引用该表的前四列,那么将该表的后三列拆分到一个单独的表中可获得性能收益。应谨慎考虑垂直分区操作,因为分析多个分区内的数据需要有联接表的查询,而如果分区非常大将可能影响性能。

解决方案 »

  1.   

    我所说分区表就是当一个表中有几年的数据,而且数据量比较大,每个季度数据量比较大,这个时候查询速度要变慢,在Oracle中有分区表来管理。  请问在SQL Server如何解决这样的问题?
      

  2.   

    SQL Server提供了分区视图你可以把数据存储在不同的地方 用试图连接查询
    帮助里面有具体示例
      

  3.   

    to zjcxc(邹建) ( ) 
    请你把水平分区表清楚一些,主要是怎么使用.
      

  4.   

    文件组(以下位联机帮助内容)物理数据库文件和文件组
    Microsoft® SQL Server™ 2000 将数据库映射到一组操作系统文件上。数据和日志信息绝不混合在同一个文件中,而且个别文件只由一个数据库使用。SQL Server 2000 数据库有三种类型的文件: 主要数据文件 
    主要数据文件是数据库的起点,指向数据库中文件的其它部分。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是 .mdf。次要数据文件 
    次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文件的推荐文件扩展名是 .ndf。日志文件 
    日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是 .ldf。SQL Server 2000 不强制使用 .mdf、.ndf 和 .ldf 文件扩展名,但建议使用这些扩展名以帮助标识文件的用途。在 SQL Server 2000 中,某个数据库中的所有文件的位置都记录在 master 数据库和该数据库的主文件中。大多数情况下,数据库引擎使用 master 数据库中的文件位置信息。不过对于某些操作,数据库引擎使用主文件中的文件位置信息初始化 master 数据库中的文件位置项: 当使用 sp_attach_db 系统存储过程附加数据库时。
    当从 SQL Server 7.0 版升级到 SQL Server 2000 时。
    当还原 master 数据库时。 
    SQL Server 2000 文件有两个名称: logical_file_name 是在所有 Transact-SQL 语句中引用文件时所使用的名称。 
    逻辑文件名必须遵守 SQL Server 标识符规则,且对数据库必须是唯一的。os_file_name 是物理文件名。 
    物理文件名必须遵从 Microsoft Windows NT® 或 Microsoft Windows® 98 和 Microsoft Windows 95 的文件名规则。下面是在 SQL Server 2000 默认实例上创建的数据库的逻辑文件名和物理文件名示例:SQL Server 数据和日志文件可以放置在 FAT 或 NTFS 文件系统中,但不能放在压缩文件系统中。在 SQL Server 2000 中,数据文件的页按顺序编号,文件首页的页码是 0。每个文件都有一个文件 ID 号。在数据库中唯一标识一页需要同时使用文件 ID 和页码。下例显示包含 4-MB 主要数据文件和 1-MB 次要数据文件的数据库中的页码。在每个文件中,第一页是包含文件特性信息的文件的页首页。在文件开始处的其它几页也包含系统信息(如分配映射表)。系统页存储在主要数据文件和第一个日志文件中,其中有一个是包含数据库属性信息的数据库引导页。SQL Server 2000 文件可以从它们最初指定的大小自动增长。定义文件时可以指定增量。每次填充文件时,均按这个增量值增加它的大小。如果在文件组中有多个文件,这些文件在全部填满之前不自动增长。填满后,这些文件使用循环算法进行增长。还可以指定每个文件的最大大小。如果没有指定最大大小,文件可以一直增长到用完磁盘上的所有可用空间。如果 SQL Server 作为数据库嵌入应用程序,而该应用程序的用户无法迅速与系统管理员联系,此功能在这种情况下特别有用。用户可以让文件按需要自动增长,以减轻监视数据库中的可用空间量和手工分配额外空间的管理负担。如果有多个 SQL Server 实例在单个计算机上运行,则每个实例获得不同的默认目录来存储该实例中创建的数据库文件。有关更多信息,请参见定位目录和文件。数据库文件组
    出于分配和管理目的,可以将数据库文件分成不同的文件组。一些系统可以通过控制在特定磁盘驱动器上放置的数据和索引来提高自身的性能。文件组可以对此进程提供帮助。系统管理员可以为每个磁盘驱动器创建文件组,然后将特定的表、索引、或表中的 text、ntext 或 image 数据指派给特定的文件组。没有一个文件可以是一个以上文件组的成员。表、索引、以及 text、ntext 和 image 数据可以与文件组相关联,在这种情况下,它们的所有页都将分配在那个文件组中。日志文件不能作为文件组的一部分。日志空间与数据空间分开管理。文件组中的文件不自动增长,除非文件组中的文件全都没有可用空间。有两种类型的文件组: 主要文件组 
    主文件组包含主要数据文件和任何没有明确指派给其它文件组的其它文件。系统表的所有页均分配在主文件组中。用户定义文件组 
    用户定义文件组是在 CREATE DATABASE 或 ALTER DATABASE 语句中,使用 FILEGROUP 关键字指定的文件组。每个数据库中都有一个文件组作为默认文件组运行。当 SQL Server 给创建时没有为其指定文件组的表或索引分配页时,将从默认文件组中进行分配。一次只能有一个文件组作为默认文件组。db_owner 固定数据库角色成员可以将默认文件组从一个文件组切换到另一个。如果没有指定默认文件组,则主文件组是默认文件组。SQL Server 2000 在没有文件组时也能有效地工作,因此许多系统不需要指定用户定义文件组。在这种情况下,所有文件都包含在主文件组中,而且 SQL Server 2000 可以在数据库内的任何位置分配数据。文件组不是在多个驱动器之间分配 I/O 的唯一方法。db_owner 固定数据库角色成员可以备份和还原个别的文件或文件组,而不用备份或还原整个数据库。下例在 SQL Server 2000 的默认实例上创建数据库。该数据库包括一个主要数据文件、一个用户定义的文件组和一个日志文件。主要数据文件在主文件组中,而用户定义文件组有两个次要数据文件。ALTER DATABASE 语句将用户定义文件组指定为默认文件组。之后,通过指定用户定义的文件组来创建表。USE master
    GO
    -- Create the database with the default data
    -- filegroup and the log file. Specify the
    -- growth increment and the max size for the
    -- primary data file.
    CREATE DATABASE MyDB
    ON PRIMARY
      ( NAME='MyDB_Primary',
       FILE NAME=
          'c:\Program Files\Microsoft SQL Server\MSSQL\data\MyDB_Prm.mdf',
       SIZE=4,
       MAXSIZE=10,
       FILEGROWTH=1),
    FILEGROUP MyDB_FG1
      ( NAME = 'MyDB_FG1_Dat1',
       FILE NAME =
          'c:\Program Files\Microsoft SQL Server\MSSQL\data\MyDB_FG1_1.ndf',
       SIZE = 1MB,
       MAXSIZE=10,
       FILEGROWTH=1),
      ( NAME = 'MyDB_FG1_Dat2',
       FILE NAME =
          'c:\Program Files\Microsoft SQL Server\MSSQL\data\MyDB_FG1_2.ndf',
       SIZE = 1MB,
       MAXSIZE=10,
       FILEGROWTH=1)
    LOG ON
      ( NAME='MyDB_log',
       FILE NAME =
          'c:\Program Files\Microsoft SQL Server\MSSQL\data\MyDB.ldf',
       SIZE=1,
       MAXSIZE=10,
       FILEGROWTH=1)
    GO
    ALTER DATABASE MyDB 
    MODIFY FILEGROUP MyDB_FG1 DEFAULT
    GO-- Create a table in the user-defined filegroup.
    USE MyDB
    CREATE TABLE MyTable
      ( cola      int   PRIMARY KEY,
       colb      char(8) )
    ON MyDB_FG1
    GO可以将用户文件组设成只读,数据不能更改,但可以修改目录以执行权限管理等工作。SQL Server 2000 数据库可以从服务器中分离出来,然后重新连接到另一台服务器或原来的服务器上。这对制作要分发的、以便用于在客户的本地 SQL Server 安装上使用的数据库特别有用。例如,公司可以创建包含其当前产品目录的数据库。公司可以在可写的光盘驱动器上创建这个数据库,并将它设成只读。然后,他们可以复制这张光盘,给那些在 Windows 95 便携式电脑上安装了目录应用程序和 SQL Server 的地区销售代表发送复本。这样一来,销售代表就有了最新的产品目录信息。©1988-2000 Microsoft Corporation。保留所有权利。
      

  5.   

    to zjcxc(邹建) ( ) 
    请你把水平分区表清楚一些,主要是怎么使用.