Teradata性能调控

240 阅读6分钟

Teradata Performance Tuning

Teradata性能调优简介

Teradata性能调优包括:a. 通过规范关键表、使用正确的数据类型、合理调整列数、避免空值、使用正确的连接操作、部署正确的索引和服务器缓存来优化数据库;b. 根据基准标准调整SQL,并在编写SQL语句时遵守某些注意事项,从而微调数据库需求;c. 改变计算、存储和网络环境及参数,以提高数据库性能。

性能调整对于任何组织来说都是至关重要的,它可以通过提高前端响应时间,更快地从数据库中检索数据和减少不必要的数据库活动来改善客户体验。数据库中的任何迟缓都会反映在应用程序的性能上。在数字业务运营中,任何这样的迟缓都会促使客户远离竞争对手,从而给公司带来经济损失。

在这篇文章中,让我们来看看Teradata应用程序的性能调整的方式和方法。

Teradata的特点

  • 著名的关系型数据库管理之一,主要用于建立非常大的数据仓库应用。
  • 由一家名为Teradata的公司拥有,始于1979年,直到2014年不断升级
  • 工作负载由多个处理器共享,提供丰富的并行处理能力。
  • 有专门的处理器节点,并附有磁盘存储,可以均匀地存储记录,并独立检索。
  • 它可以随着节点的增加而线性扩展,并且可以很容易地连接到大型机或网络系统。
  • 它支持SQL,有大量实用程序,便于将数据上传到Teradata数据库。

Teradata性能调优的步骤

如前所述,Teradata性能调优可以在三个层面进行,即:a. 数据库层面;b. 优化SQL查询;c. 调整硬件环境。下面将解释所有层面的各种步骤。

1.数据库的调整

数据库结构应足够完善,以存储大量数据并快速检索,确保Teradata系统具有更好的性能。

规范化的表

  • 每一列都应该有一个唯一的名称,而且应该有一个单一的值
  • 每个表都应该有一个主键字段,表中的所有非主键字段在功能上应该完全依赖于主键。
  • 表中的非键字段之间不应存在任何依赖关系。
  • 应该避免多值依赖。

规范化的好处是

  • 它避免了记录的重复和连接操作中记录的错误乘法。
  • 提高数据的一致性和查询结果的准确性
  • 由于没有多余的记录和使用索引的快速搜索操作,执行速度更快。

索引化

索引有助于通过缩短全表访问的时间来快速检索记录。有两种类型的索引,即主索引和次索引。主索引列应该是唯一的,而其他列应该依赖于主索引列。二级索引的创建取决于数据人口学和该列在where子句中的使用方式。

分区

这个过程将一个大表分割成多个小表。表的逻辑分组有利于记录的维护和记录的快速检索,因为搜索被限制在一个较小的数据量上,导致响应时间的整体减少。 行应该被分组,并在一个列上进行分区,这样用户的访问就被限制在组内,不会跨越分区。

右侧数据类型的使用

  • 对于数字字段,应根据要存储的最大值选择合适的数据类型,对于非数字字段,应根据最大长度选择。长度较短的数据类型总是能获得更好的性能。
  • 日期和时间类型应在必要时使用,以避免浪费转换。
  • 在连接操作中使用的列应该在所有的表中具有相同的类型,以避免在连接过程中进行不必要的转换。

避免空值

Null在数据库术语中是一个无值,一般来说,在涉及到算术、聚合、字符串操作和条件操作的列中应避免使用Null,因为结果是不可预测的。避免这种错误的方法之一是在编码中明确地检查空值,但它会减慢性能水平。

太多的列

避免在一个表中有太多的列,因为它有沉重的开销,并拉低了数据库的性能,只要有可能,就用较少的列数来设计表,以便更顺利和更快地运行。

服务器查询缓存

这种缓存也被称为服务器内存中的表的钉子。经常访问的表的副本被保存在内存中,任何访问此表的查询都会参考内存中的热副本,而不是访问数据库,以快速获得结果并加快性能。表的内容的任何变化都会触发内存中内容的刷新。

2.查询优化

  • 在where子句中,应尽可能只使用带索引的列,并应避免全表扫描。
  • 应避免使用前导通配符,因为在这种搜索操作中不会使用索引。
  • 应该谨慎地使用逻辑OR条件,如果其中一个OR条件不是在有索引的列上,那么优化器可能会选择全表扫描。另外,也可以使用联合子句。
  • 像表达式where子句应该尽量避免使用,优化器可以选择全表扫描。
  • 应该使用EXISTS来代替IN表达式,以提高数据库的性能。
  • 使用DISTICT代替GROUP BY来节省查询时间
  • 避免使用UNION,而使用UNION ALL,因为UNION在过滤重复数据时需要更多的时间。
  • 用可管理的小SQL语句对抗大SQL语句。
  • 使用数量较少的表的Joints,并对其进行微调。

3.监测数据库性能和微调

  • 应该根据数据统计学收集关键列的统计数据,同时也应该收集where子句中使用的非索引列的统计数据。统计数据应该经常更新。
  • 监控执行计划是否使用了索引或采用了全表扫描,并研究瓶颈问题。
  • 使用优化器和解释选项以及统计数据来跟踪所创建的索引是否被有效使用以及它们对数据库性能的影响。
  • 添加新的索引和删除现有的索引。
  • 建议在SQL where子句中修改代码以克服瓶颈。

总结

数据库的性能应该使用数据库工具进行持续监控,任何瓶颈都应该被分析和解决。在监测数据库的同时,还应该重新审视应用程序的设计和编码,以达到稳定的性能水平。