Cognos学习之四:Cube性能优化、参数配置和更新
1. 与数据相关的考虑事项
对源数据进行分析是确定数据质量、存储方式、源数据类型和所需准备工作的重要一步。
1.1 清洁合并数据
对数据进行预处理可以带来性能上的提高:
• 如果源数据只含有模型所需的信息,将会加快Transformer 的读取时间。例如,如果在数据源中包含了一些没有用的列,那么即使在模型中没有用到这些列,Transformer 也会花费额外的时间对它们进行处理。
• 数据合并可以减少被读取的记录的数量。Transformer读取的记录数量越少,PowerCube生成的时间也就越短。
1.1.1 提示
• 当设计将在Transformer中所使用的数据源时,要尽量只包含那些生成模型所需的列,使处理时间最小化。如果包含了不需要的列,可能就会对数据源的处理时间产生影响。
• 在可能的情况下,请保持Transformer模型中的类别结构,这样就可以减少对它们进行重建所需的多余的处理过程。
• 如果模型中包含了较长的描述,我们推荐您使用已经含有和描述相关联的类别的模型来生成PowerCubes。
1.2 定时(Timing)
定时控制 (在数据源属性页上)可以控制Transformer在什么时候对数据源进行处理。
首先应该执行结构型数据源来创建模型中的类别结构。完成这一步后,如果在PowerCube生成过程中不需要执行它们 (数据源中没有添加新的类别,并且含有这些类别的模型已经得到保存) ,那么可以将数据源的定时功能(timing)设置如下:
有些结构型数据源代表一种易变动的结构,这种结构需要在每次生成PowerCube时对这些类别进行更新。可以将这种类型的数据源的定时功能设置为在创建PowerCube的类别生成阶段来运行。
事务型数据源随着每次生成PowreCube时度量值所需的新数据的变化而不断发生变化 。事务型数据源在PowerCube创建过程中执行来提供度量值:
1.3 验证类别唯一性,最大化数据访问的速度
在数据源属性页上有两个用于唯一性验证的设置。默认的属性设置为Verify Category Uniqueness。对于所提供的列与含有唯一层的维度中的层相关联的数据源,推荐使用该项设置。通常这些数据源为结构型数据源。
如果设置为Verify Category Uniqueness并且Transformer 检测到在一个标识为“Unique”(层属性)的层上有两个类别具有相同的源值,就会返回以下错误信息:
(TR2317) The level 'City' is designated as unique. Source value 'Green Bay' was used in an attempt to create a category in the path (By state,Illinois,Green Bay). 'Green Bay' already exists in level 'City' in the path (By state,Wisconsin,Green Bay).
(TR0136) A uniqueness violation was detected. The process has been aborted.
例如,State维度在City层上被设置为Unique:
该错误表示在City层下存在第二个Green Bay实例 (本例中为Illinois)。例如,如果您的源数据如下:
Measure, State, City
1, Wisconsin, Green Bay
2, Wisconsin, Appleton
3, Illinois, Green Bay
当在City层上没有选定“Unique”时,维度视图显示为:
当在City层上选定“Unique”,过程会被中断,维度视图显示为:
如果您确定模型数据源中的值被映射到层的唯一类别中,则可以设置Maximize Data Access Speed属性。 当启用该属性时,唯一性验证将会将到最低,数据源处理的性能将会提高。Transformer不会不停的对现有值和类别值进行验证。这就意味着性能可以得到极大的提高。
警告! 如果启用了Maximize Data Access Speed,而在数据中存在违反唯一性的问题,Transformer将不会通知您。会造成在PowerCube中产生类别丢失和值不准确的问题。
使用和上面相同的例子,如果启用了Maximize Data Access Speed并且City层被设置为“ Unique” ,Transformer将不会通知您Green Bay存在于两个不同的State(Wisconsin和Illinois)下,PowerPlay中的最终结果如下:
注意:上面的交叉表中不存在Illinois
如果删除City层的唯一性并对立方体进行重建,PowerPlay中的最终结果为:
注意:当设定Maximize Data Access Speed 时,将不会执行唯一性的转移(unique move)。
1.4 多服务器处理功能
如果生成PowerCube的计算机是双CPU,您就可以利用多服务器处理的功能。启用该功能可以大大提高数据读取阶段生成PowerCube的整体性能。
多服务器仅适用于以下数据源类型:
• Impromptu Query Definition (IQD)
• Delimited Field Text
• Delimited Field Text with Column Titles
该选项可以在Data Source属性对话框中进行设置:
1.5 增量更新
如果创建整个立方体的条件不满足,那么增量更新将是一种很好的解决方法。增量更新仅将最新的数据添加到现有的PowerCube而不会对以前的数据进行重新处理。与重建整个PowerCube相比,使用增量更新只会对很少的数据进行更新,而且更新的速度也会得到加快。
如果PowerCube的结构(维度、层等)为静态,您只需考虑使用增量更新功能。如果发生了结构变化,必须使用所有数据重新生成立方体。
推荐您定期重建PowerCube。第一次建立立方体时,自动分区( Auto-Partitioning)功能可以将维度和层分割为多个分区层(partitioning level)。 在此之后所有新的类别将被加到 “0”分区层上。 如果随时间的变化增加了很多类别,PowerCube用户最终会遇到性能问题。使用所有当前类别重新生成PowerCube将允许Transformer设计出一种新的分区模式。下面的例子是每四次增量更新后进行一次完整重建的调度情况:
Build 处理行为
1 初始化加载
2 对build1进行增量更新1
3 在build 2上进行增量更新2
4 在build 3上进行增量更新3
5 在build 4上进行增量更新4
6 由初始加载和从增量更新1到增量更新4组成的完全加载
7 在build 5上进行增量更新5
8 在build 7上进行增量更新6…
1.6 设置Transformer环境
本节列举出了在Windows NT上使Transformer获得最佳性能所需考虑的设置 :
• WriteCacheSize: 根据可用内存的多少,写缓存的值会对PowerCube的生成时间产生正面或负面的影响。当有足够物理内存以至于磁盘缓存可以增加到和PowerCube一样大小时,就可以获得最佳得性能。
可以在Services - PowerPlay Data Services - Cache 下的Configuration Manager 中对该设置进行修改。默认值为 8192 (或 8MB)。要对其进行修改,可以使用1024为增量来增加该值的大小。在大型系统上将写缓存增加到32768 (32MB) 或 65536 (64MB) 可以提高性能。然而,如果将其增加到非常大的值(例如102400 或数百兆字节) 会损害性能。
• SortMemory: 该变量可以设置对数据进行排序时所使用的可用物理内存。Transformer 对数据进行排序用于数据合并和自动分区。
所设定的数值代表在进行数据排序时所使用的2K区块的数量。例如, 将值设为5120可以提供5120 x 2K = 10MB 的内存。默认值为512。 可以在 Services - UDA - General 下的Configuration Manager 中对默认值进行修改。将默认值设置为5120是一个不错的选择。
• TEMPFILEDIRS: Transformer 使用该设置用于临时排序文件。在Transformer执行排序操作时都会创建该临时排序文件。
可以修改Services - UDA - General 下Configuration Manager 中的地址。可以设置以分号分隔的多个目录。
• MaxTransactionNum: Transformer可以在生成PowerCube的各个阶段插入checkpoint。Maximum Transactions Per Commit设置可以限制插入一个checkpoint之前临时保存的记录的数量。默认设置为MaxTransactionNum=500000。所设定的值是向PowerCube提交修改之前Transformer将要处理的最大记录数。可以在General 标签下的Transformer Preferences对话框中对默认值进行修改。
如果在生成立方体时发生了错误(例如 TR0112 There isn't enough memory available) ,需要降低 MaxTransactionNum的值,这样就可以加快提交的频率并释放磁盘空间。
可以将该设置增加到一个更高的数值 (例如800000) 来提高立方体的生成时间,其结果取决于环境。
主意:ReadCacheSize设置和Transformer无关,该项设置只针对PowerPlay Enterprise Server 和PowerPlay Client 。
1.7 参数设置文件
可以使用几种参数设置,以下是最常用的参数设置:
• ModelWorkDirectory=
当进行模型设计时设定创建临时文件的位置。临时文件用来在立方体创建过程中发生严重错误时恢复在战略检查点被挂起的模型。该文件的扩展名为QYI, 默认的路径是ModelSaveDirectory设置的值。
• DataWorkDirectory=
设定在生成立方体时Transformer创建临时工作文件的位置。可以使用多个驱动器的能力可以消除操作系统所造成的大小限制。 当Transformer 创建立方体时,它可以将临时文件写入指定的驱动器或目录。这些文件被连接到一个逻辑文件,而无需考虑它们所在的驱动器。这些文件的位置由您所设定的路径列表来决定。默认的路径为CubeSaveDirectory设置的值。
• DataSourceDirectory=
对于除IQD文件和Architect模型以外的数据源文件,该设置可以指定Transformer搜索这些文件的位置。默认路径是当前工作路径。
• CubeSaveDirectory=
指定Transformer保存立方体的位置。默认路径为ModelSaveDirectory。
• ModelSaveDirectory=
设定Transformer保存模型的位置。默认路径为当前工作路径。
下面是Transformer日志文件中有关这些设置的实例:
PowerPlay Transformer Wed Sep 19 09:39:17 2001
LogFileDirectory=c:\transformer\logs
ModelSaveDirectory=c:\transformer\models\
DataSourceDirectory=c:\transformer\data\
CubeSaveDirectory=e:\transformer\cubes\
DataWorkDirectory=d:\temp\
ModelWorkDirectory=e:\temp\
下面的例子显示了如何在命令行中使用参数设置文件:
trnsfrmr -n -fc:\preferences.prf model.mdl
1.7.1 提示
• 在命令行设定参数设置文件的使用会覆盖并优先于其它设置。 例如,如果在rsserver.sh文件中定义了环境设置,在命令行中使用参数设置文件将覆盖这些设置。
• TMPDIR、 TEMP、TMP等环境变量可以定义Transformer在什么位置创建临时文件。Transformer可以使用所定义的第一个环境变量。这些环境变量是操作系统定义的系统环境变量。