数据仓库 - 调优


数据仓库不断发展,并且无法预测用户将来将发布什么查询。因此,调整数据仓库系统变得更加困难。在本章中,我们将讨论如何调整数据仓库的不同方面,例如性能、数据加载、查询等。

数据仓库调优的难点

由于以下原因,调整数据仓库是一个困难的过程 -

  • 数据仓库是动态的;它永远不会保持不变。

  • 预测用户将来将发布什么查询是非常困难的。

  • 业务需求随着时间而变化。

  • 用户及其个人资料不断变化。

  • 用户可以从一个组切换到另一组。

  • 仓库上的数据负载也会随着时间而变化。

注意- 全面了解数据仓库非常重要。

绩效评估

以下是客观绩效衡量标准的列表 -

  • 平均查询响应时间
  • 扫描率
  • 每日使用时间查询
  • 每个进程的内存使用情况
  • I/O 吞吐率

以下是要记住的要点。

  • 有必要在服务水平协议(SLA)中规定措施。

  • 如果响应时间已经比要求的要好,那么尝试调整响应时间是没有用的。

  • 在进行绩效评估时,必须有切合实际的期望。

  • 用户有可行的期望也很重要。

  • 为了向用户隐藏系统的复杂性,应该使用聚合和视图。

  • 用户也有可能编写您未调整过的查询。

数据加载调整

数据加载是夜间处理的关键部分。在数据加载完成之前,其他任何操作都无法运行。这是系统的入口点。

注意- 如果数据传输或数据到达出现延迟,则整个系统会受到严重影响。因此,首先调整数据负载非常重要。

下面讨论了多种调整数据负载的方法 -

  • 最常见的方法是使用SQL 层插入数据。在这种方法中,需要执行正常的检查和约束。当数据插入表中时,代码将运行以检查是否有足够的空间来插入数据。如果没有足够的可用空间,则可能需要为这些表分配更多空间。这些检查需要时间来执行,并且对 CPU 来说成本很高。

  • 第二种方法是绕过所有这些检查和约束,并将数据直接放入预格式化的块中。这些块稍后会写入数据库。它比第一种方法更快,但它只能处理整个数据块。这可能会导致一些空间浪费。

  • 第三种方法是,在将数据加载到已经包含该表的表中的同时,我们可以维护索引。

  • 第四种方法表示,要在已包含数据的表中加载数据,请删除索引并在数据加载完成后重新创建索引。第三种和第四种方法之间的选择取决于已加载的数据量以及需要重建的索引数。

完整性检查

完整性检查极大地影响负载的性能。以下是要记住的要点 -

  • 完整性检查需要受到限制,因为它们需要大量的处理能力。

  • 应在源系统上应用完整性检查,以避免数据加载的性能下降。

调优查询

我们在数据仓库中有两种查询 -

  • 固定查询
  • 即席查询

固定查询

固定查询有明确的定义。以下是固定查询的示例 -

  • 定期报告
  • 预设查询
  • 常见聚合

在数据仓库中调整固定查询与在关系数据库系统中相同。唯一的区别是查询的数据量可能不同。在测试固定查询时最好存储最成功的执行计划。存储这些执行计划将使我们能够发现数据大小和数据倾斜的变化,因为这将导致执行计划发生变化。

注意- 我们不能在事实表上做更多的事情,但是在处理维度表或聚合时,可以使用 SQL 调整、存储机制和访问方法的常见集合来调整这些查询。

即席查询

要理解即席查询,了解数据仓库的即席用户非常重要。对于每个用户或用户组,您需要了解以下内容 -

  • 组内用户数
  • 他们是否定期使用临时查询
  • 他们是否经常使用即席查询
  • 他们是否偶尔以未知的时间间隔使用临时查询。
  • 他们倾向于运行的查询的最大大小
  • 他们倾向于运行的查询的平均大小
  • 他们是否需要深入访问基础数据
  • 每天登录已用时间
  • 日常使用高峰时间
  • 他们每个高峰时段运行的查询数量

注意事项

  • 跟踪用户的个人资料并识别定期运行的查询非常重要。

  • 同样重要的是,执行的调整不会影响性能。

  • 识别经常运行的类似查询和临时查询。

  • 如果识别出这些查询,则数据库将发生更改,并且可以为这些查询添加新索引。

  • 如果识别出这些查询,则可以专门为这些查询创建新的聚合,从而使其高效执行。