Coursera 笔记

Module 03 · Data Engineering Lifecycle数据工程生命周期

Performance Tuning and Troubleshooting数据工程性能优化与监控:数据管道和数据库

Coursera ↗

数据工程师的一项关键职责是监控和优化系统和数据流的性能和可用性。在数据工程生命周期中,性能涉及多个领域。本视频将探讨其中一些领域。


Ⅰ. 数据管道性能调优 (Data Pipeline Performance Tuning)

数据管道涵盖了数据从源头到目的地经过多个系统、应用和流程的旅程。由于通常涉及复杂的工具组合,数据管道可能面临多种性能威胁。

性能威胁

  • 可扩展性:面对不断增加的数据集和工作负载时的挑战。
  • 应用故障:应用程序运行时发生错误。
  • 作业调度问题:计划作业未按时启动、等待依赖项,或部分任务未按正确顺序运行,甚至完全未运行。
  • 工具不兼容性:数据管道由处理不同任务的各种工具组成,可能存在不兼容问题。

性能指标 (Metrics)

当需要基准测试或评估性能时,需要具备性能指标,数据管道的性能指标通常包括:

指标 描述
延迟 (Latency) 服务完成一个请求所需的时间。
故障率 (Failures) 服务发生故障的比率。
资源利用率 (Resource Utilization) 资源利用和使用模式。
流量 (Traffic) 在给定时间段内接收到的用户请求数量。

性能问题排查步骤 (Troubleshooting)

处理数据管道性能问题时,通常会遵循以下步骤:

  1. 收集信息:尽可能多地收集事件信息,最重要的是确定观察到的行为是否确实是问题(可能通过警报系统、用户报告或维护检查中发现)。
  2. 检查版本和部署:
  • 检查是否使用了所有正确的软件版本和源代码。
  • 如果有最近的部署,检查发生了哪些变化并调查是否存在关联。
  1. 日志和指标分析:在排查过程的早期检查日志和指标,以隔离问题是与基础设施、数据、软件相关,还是组合问题。
  • 辅助信息:日志中的错误消息以及故障发生时的网络负载、内存和 CPU 利用率可以提供帮助。
  1. 复现问题:如果日志无法帮助隔离问题,可能需要在测试环境中重现问题(这可能是一个耗时且迭代的工作)。
  2. 根因解决:一旦有了根本原因假设,并通过一系列测试验证了该假设,即可按照团队流程计划将其投入生产解决。

Ⅱ. 数据库性能优化 (Database Optimization)

优化数据库性能是性能调优的另一个重要维度。

需监控的性能指标

  • 系统中断。
  • 容量利用率。
  • 应用程序速度变慢。
  • 查询的性能。
  • 冲突活动和查询(例如,多用户同时发出请求导致的冲突,以及批量活动造成的资源限制)。

优化最佳实践

一些数据库优化的最佳实践包括容量规划和数据库设计活动:

实践活动 描述 性能/管理优势
容量规划 (Capacity Planning) 确定所需的最佳硬件和软件资源,即使系统负载日常波动,也能确保性能,并考虑到未来的增长需求。 确保系统在负载波动和未来增长下保持高性能。
数据库索引 (Indexing) 帮助快速定位数据,而无需搜索数据库中的每一行。 减少查询处理时访问磁盘的次数。
数据库分区 (Partitioning) 将超大表格划分为更小的独立表格。 查询运行更快(因为访问的数据量更小),同时提高数据可管理性。
数据库规范化 (Normalization) 一种设计技术,用于减少由数据冗余以及数据库上的更新、删除和插入操作引起的不一致性和异常。 影响查询、清洗和分析操作的效率和速度。

Ⅲ. 监控、警报与维护 (Monitoring, Alerting, and Maintenance)

监控和警报系统帮助我们实时收集关于系统和应用程序的量化数据。

监控系统在数据工程中的作用

这些系统使我们能够了解数据管道、平台、数据库、应用程序、工具、查询、计划作业等的性能。

监控工具 作用机制 性能提升与优势
数据库监控工具 频繁获取数据库性能指标的快照。 帮助追踪问题何时以及如何开始发生,从而更有效地隔离和找到问题根源。
应用性能管理 (APM) 工具 跟踪请求响应时间和错误消息,衡量和监控应用性能。 跟踪每个进程利用的资源量,有助于主动分配资源以提高应用性能。
查询性能监控工具 收集关于查询吞吐量、执行性能和资源利用模式的统计数据。 更好地规划和分配资源。
作业级运行时监控 将耗时长的作业分解为一系列逻辑步骤,并监控其完成情况和完成所需时间。 成本效益更高(如果在过程结束时才发现错误,失败成本较高)。
数据处理量监控 监控通过数据管道处理的数据量。 有助于评估工作负载大小是否可能导致系统变慢。

运行维护程序 (Maintenance Routines)

运行维护程序有助于系统以最佳水平运行。预防性维护程序生成的数据可用于识别导致故障和低可用性的系统和程序。

维护类型 描述
基于时间 (Time-based) 计划为预定时间间隔的定期活动。
基于条件 (Condition-based) 当出现特定问题或观察到/报告了性能下降时执行。

在本视频中,您了解了数据管道和数据库性能调优和故障排除的各个方面。我们还学习了监控和警报系统以及维护计划的相关知识。