📅  最后修改于: 2021-01-07 06:02:38             🧑  作者: Mango
数据仓库在不断发展,无法预测用户将来要发布什么查询。因此,调优数据仓库系统变得更加困难。在本章中,我们将讨论如何调整数据仓库的不同方面,例如性能,数据负载,查询等。
由于以下原因,调整数据仓库是一个困难的过程-
数据仓库是动态的;它永远不会保持不变。
很难预测用户将来要发布什么查询。
业务需求随时间而变化。
用户及其个人资料不断变化。
用户可以从一个组切换到另一组。
仓库中的数据负载也会随着时间而变化。
注意-全面了解数据仓库非常重要。
这是绩效的客观衡量指标清单-
以下是要记住的要点。
有必要在服务水平协议(SLA)中指定措施。
如果它们已经比要求的响应时间更好,则尝试调整响应时间是没有用的。
在进行绩效评估时,有切合实际的期望至关重要。
用户具有可行的期望也很重要。
为了向用户隐藏系统的复杂性,应使用聚合和视图。
用户也可能编写您未调优的查询。
数据加载是过夜处理的关键部分。直到数据加载完成,其他所有内容都无法运行。这是系统的入口点。
注-如果传输数据或到达数据有延迟,则整个系统将受到严重影响。因此,首先调整数据负载非常重要。
下面讨论了各种调整数据负载的方法-
最常见的方法是使用SQL层插入数据。在这种方法中,需要执行常规检查和约束。将数据插入表中后,代码将运行以检查是否有足够的空间来插入数据。如果没有足够的空间,则可能必须为这些表分配更多的空间。这些检查需要花费时间才能执行,并且对CPU而言代价很高。
第二种方法是绕过所有这些检查和约束,然后将数据直接放入预先格式化的块中。这些块随后将写入数据库。它比第一种方法快,但是它只能处理整个数据块。这会导致空间浪费。
第三种方法是,在将数据加载到已经包含表的表中时,我们可以维护索引。
第四种方法是,要在已经包含数据的表中加载数据,请删除索引并在数据加载完成后重新创建索引。在第三种方法和第四种方法之间的选择取决于已经加载了多少数据以及需要重建多少索引。
完整性检查会严重影响负载的性能。以下是要记住的要点-
需要限制完整性检查,因为它们需要强大的处理能力。
应该在源系统上应用完整性检查,以避免数据负载的性能下降。
我们在数据仓库中有两种查询-
固定查询定义良好。以下是固定查询的示例-
在数据仓库中调整固定查询与在关系数据库系统中调整相同。唯一的区别是要查询的数据量可能不同。在测试固定查询时,最好存储最成功的执行计划。存储这些执行计划将使我们能够发现变化的数据大小和数据偏斜,因为这将导致执行计划发生变化。
注–我们不能对事实表做更多的事情,但是在处理维表或聚合时,可以使用通常的SQL调整,存储机制和访问方法来调整这些查询。
要了解临时查询,了解数据仓库的临时用户很重要。对于每个用户或用户组,您需要了解以下内容-
注意事项
跟踪用户的配置文件并识别定期运行的查询非常重要。
同样重要的是执行的调校不影响性能。
确定经常运行的类似查询和即席查询。
如果标识了这些查询,则数据库将更改,并且可以为这些查询添加新的索引。
如果标识了这些查询,则可以专门为那些查询创建新的聚合,这将导致它们高效执行。