深入浅出分区表与分区索引之四:案例讲解(上)
来源:互联网 发布:c语言floor函数 编辑:程序博客网 时间:2024/06/05 00:14
如果朋友们已经阅读了与分区有关的概念、优点和代码示例,则可能已对此过程有了一个很好的理解;但是,对于每个步骤,都可以使用特定的设置和选项,而且在某些情况下,还必须满足各种条件。本节将帮助大家将这些内容融会贯通起来进行理解。
范围分区:销售数据
销售数据的使用方式经常发生变化。当前月份的数据是事务数据,而上一个月份的数据主要用于进行分析。分析通常针对月份、季度和/或年度范围的数据进行。因为不同的分析人员可能希望同时查看大量不断变化的数据,所以通过分区可以更好地隔离此活动。在此方案中,活动数据来自 283 个分支位置,而且是通过两个标准格式的 ASCII 文件传输的。在每个月第一天的上午 3 点之前,所有文件均被放置到一台中央文件服务器上。所有文件按大小进行排列,但每月平均约有 86,000 份销售(订单)。
每个订单平均包含 2.63 个明细项,因此,OrderDetails 文件平均包含 226,180 行。每月增加约 2,500 万个新的 Orders 和 6,400 万个 OrderDetails 行,而历史分析服务器要使两年的数据都处于活动状态以便进行分析。两年的数据刚好低于 6 亿个 Orders 和超过 15 亿个 OrderDetails 行。因为分析通常是在同一季度的不同月份之间进行比较,或与上一年度的相同月份进行比较,所以可以使用范围分区。每个范围的边界都是按月份确定的。
按照之前文章描述的步骤,使用基于 OrderDate 的范围分区对表进行分区。了解这台新服务器的要求后,分析人员打算收集和分析连续六个月的数据,或当前年度与上一年度三个月份(例如 2003 年 1 月到 3 月与 2004 年 1 月到 3 月)的数据。要使磁盘分区最大化并隔离大多数数据组,多个文件组将使用相同的物理磁盘,但是这些文件组将相差六个月以减少磁盘争用。
当前数据是 2004 年 10 月,而所有 283 个存储位置都在本地管理其当前销售。服务器上存储了从 2002 年 10 月到 2004 年 9 月的数据。为了利用新的 16 向多处理器计算机和存储区域网络,每个月的文件存储在一个文件组中,同时位于一个分区镜像 (RAID 1+0) 磁盘集上。对于数据通过文件组在逻辑驱动器上的物理布局,下图描述了每月数据的位置。
虽然看起来很复杂,但创建过程非常简单。设计分区表最难的部分在于从大量数据源传输数据,即 283 个存储位置都必须使用一种标准的传输机制。但是,中央服务器上只定义了一个 Orders 表和一个 OrderDetails 表。要将两个表都创建为分区表,请先创建分区函数和分区架构。分区架构定义分区在磁盘上的物理位置,因此必须存在文件组。在此表中,文件组是必需的,因此下一步是创建文件组。
每个文件组的语法都与下面的语法相同,但必须创建所有 24 个文件组。有关创建所有 24 个文件组的完整脚本,请参见 RangeCaseStudyFilegroups.sql 脚本。
注意:如果没有指定相应的驱动器号,将无法运行此脚本;但是此脚本包含一个“setup”表,可以修改此表以简化测试。您可以将驱动器号/位置更改为一个驱动器,以测试和学习语法。同时,确保将文件大小调整为 MB 而不是 GB,并根据可用的磁盘空间考虑指定一个较小的初始大小。
范围分区:销售数据
销售数据的使用方式经常发生变化。当前月份的数据是事务数据,而上一个月份的数据主要用于进行分析。分析通常针对月份、季度和/或年度范围的数据进行。因为不同的分析人员可能希望同时查看大量不断变化的数据,所以通过分区可以更好地隔离此活动。在此方案中,活动数据来自 283 个分支位置,而且是通过两个标准格式的 ASCII 文件传输的。在每个月第一天的上午 3 点之前,所有文件均被放置到一台中央文件服务器上。所有文件按大小进行排列,但每月平均约有 86,000 份销售(订单)。
每个订单平均包含 2.63 个明细项,因此,OrderDetails 文件平均包含 226,180 行。每月增加约 2,500 万个新的 Orders 和 6,400 万个 OrderDetails 行,而历史分析服务器要使两年的数据都处于活动状态以便进行分析。两年的数据刚好低于 6 亿个 Orders 和超过 15 亿个 OrderDetails 行。因为分析通常是在同一季度的不同月份之间进行比较,或与上一年度的相同月份进行比较,所以可以使用范围分区。每个范围的边界都是按月份确定的。
按照之前文章描述的步骤,使用基于 OrderDate 的范围分区对表进行分区。了解这台新服务器的要求后,分析人员打算收集和分析连续六个月的数据,或当前年度与上一年度三个月份(例如 2003 年 1 月到 3 月与 2004 年 1 月到 3 月)的数据。要使磁盘分区最大化并隔离大多数数据组,多个文件组将使用相同的物理磁盘,但是这些文件组将相差六个月以减少磁盘争用。
当前数据是 2004 年 10 月,而所有 283 个存储位置都在本地管理其当前销售。服务器上存储了从 2002 年 10 月到 2004 年 9 月的数据。为了利用新的 16 向多处理器计算机和存储区域网络,每个月的文件存储在一个文件组中,同时位于一个分区镜像 (RAID 1+0) 磁盘集上。对于数据通过文件组在逻辑驱动器上的物理布局,下图描述了每月数据的位置。
12 个逻辑驱动器都位于 RAID 1+0 配置中,因此 Orders 和 OrderDetails 数据所需的总磁盘数为 48 个。存储区域网络支持 78 个磁盘,而另外 30 个用于事务日志、TempDB、系统数据库和其他更小的表,例如 Customers(900 万)和 Products(386,750 行)。Orders 和 OrderDetails 表都使用相同的边界条件、磁盘位置和分区架构。
结果是,如图中的两个逻辑驱动器 [驱动器 E:\ 和 F:\],相同月份的 Orders 和 OrderDetails 的数据都存储在相同的磁盘上:
磁盘阵列上盘区位置的范围分区
虽然看起来很复杂,但创建过程非常简单。设计分区表最难的部分在于从大量数据源传输数据,即 283 个存储位置都必须使用一种标准的传输机制。但是,中央服务器上只定义了一个 Orders 表和一个 OrderDetails 表。要将两个表都创建为分区表,请先创建分区函数和分区架构。分区架构定义分区在磁盘上的物理位置,因此必须存在文件组。在此表中,文件组是必需的,因此下一步是创建文件组。
每个文件组的语法都与下面的语法相同,但必须创建所有 24 个文件组。有关创建所有 24 个文件组的完整脚本,请参见 RangeCaseStudyFilegroups.sql 脚本。
注意:如果没有指定相应的驱动器号,将无法运行此脚本;但是此脚本包含一个“setup”表,可以修改此表以简化测试。您可以将驱动器号/位置更改为一个驱动器,以测试和学习语法。同时,确保将文件大小调整为 MB 而不是 GB,并根据可用的磁盘空间考虑指定一个较小的初始大小。
- 深入浅出分区表与分区索引之四:案例讲解(上)
- 深入浅出分区表与分区索引之五:案例讲解(中)
- 深入浅出分区表与分区索引之六:案例讲解(下)-完结篇
- 深入浅出分区表与分区索引之四:创建分区表的步骤
- 深入浅出分区表与分区索引之二:分区的发展历史
- 深入浅出分区表与分区索引之三:分区重要概念和术语
- 深入浅出分区表与分区索引之一:表分区介绍
- 分区表与分区索引(一):范围分区表的操作
- 分区表与分区索引(二):范围分区表的数据管理
- 老道关于分区表的管理(四) 分区索引篇
- 通过案例学调优之--分区表索引
- ORACLE分区表、分区索引(转)
- ORACLE分区表、分区索引详解(转)
- ORACLE分区表、分区索引详解(转)
- 分区表和分区索引
- 分区表和分区索引
- ORACLE分区表、分区索引
- ORACLE分区表、分区索引
- XCode RUN时出现The identity used to sign the executable is no longer valid
- 深入浅出分区表与分区索引之四:创建分区表的步骤
- 导入excel2007时网页报null
- 08单链表的正向排序
- I2C串行总线的组成及工作原理
- 深入浅出分区表与分区索引之四:案例讲解(上)
- 程序员要勇于说不
- 终于认识到【精力有限,少加分散】
- 多线程,日期calendar
- Eclipse中自动生成author等注释
- 09双向链表的操作
- Linux如何理解用数字表示文件的操作权限
- Class file collision: A resource exists with a different case: /test/TestFrame$MyActionListener.clas
- 【生活随笔】星期天的下午