PostgreSQL 高性能调优指南
像专业人士一样调整 PostgreSQL 的技巧 | 了解如何防止 Postgres 性能问题
讲师:Lucian Oprea
双语IT资源独家Udemy付费课程,独家中英文字幕,配套资料齐全!
用不到1/10的价格,即可享受同样的高品质课程,且可以完全拥有,随时随地都可以任意观看和分享。
您将学到什么
- PostgreSQL 架构理论及其底层工作原理
- 了解如何设置 shared_buffers 以获得更好的性能
- 了解如何配置 Vacuum 以保持数据库清洁和快速
- 如何有效使用索引
- 实践指数优化策略
- 如何理解统计数据
- 掌握如何发现查询问题
- 练习查询优化技术
- PostgreSQL 中的扩展和复制的基本概念
探索相关主题
要求
- 您需要有一台具有 10GB 可用磁盘空间的 Windows/Mac/Linux PC
- 需要对表和索引等数据库对象有基本的了解
- 熟悉 Linux 将会有所帮助
描述
PostgreSQL 是最强大且易于使用的数据库管理系统之一。它得到了社区的大力支持,并且正在积极开发,每年都会发布新版本。
PostgreSQL 支持 SQL 标准中包含的最先进的功能。它还提供 NoSQL 功能以及非常丰富的数据类型和扩展。所有这些都使 PostgreSQL 成为软件系统中非常有吸引力的解决方案。
然而,要获得最佳性能并非易事。您需要正确组合入门经验法则、适当的测试、可靠的监控和维护,以保持系统正常运行,以及使用附加工具添加核心数据库无法自行处理的功能。
本 Udemy 课程旨在为您提供实现高性能 Postgres 的理论和实践方面的内容。它将帮助您使用最新版本的 PostgreSQL 之一为企业应用程序构建动态数据库解决方案。
您将详细了解 PostgreSQL 的所有高级方面 ,包括逻辑复制、数据库集群、性能调优和监控。您还将使用 PostgreSQL 优化器,通过查看事务、锁定、索引和优化查询来配置 Postgres 以实现高速运行。
您需要对数据库有一定的了解。您需要对数据库对象(例如表和索引)有基本的了解。如果您对 PostgreSQL 一无所知或了解甚少,您会发现这门 Udemy 课程非常有用。如果您已经使用 PostgreSQL 几年了,您仍然应该会发现一些您不知道的有用命令或一些您没有尝试过的优化方法。您还将更深入地了解数据库的工作原理。
PostgreSQL性能调优在线课程课程大纲:
了解 PostgreSQL 服务器架构
-
在本节中,我们将探讨 PostgreSQL 架构。
-
共享缓冲区与操作系统缓存协同工作,而不是替代它。这些缓存通过减少必要的物理 I/O 来提高性能。
-
为什么我们需要仔细设置检查点来限制崩溃恢复时间,同时又不影响系统其余部分的性能?
-
本节将向大家介绍为什么我们需要WAL Writer以及Background Writer。
-
查看查询处理器为了获得结果必须经过的阶段。
-
实用程序子系统提供维护数据库的方法,例如声明存储、更新统计数据和日志记录。
配置 Vacuum 以提高性能
-
我们将理解为什么每次我们进行更新或删除时,都会留下一个死行(并且可能是一个死索引条目),需要稍后通过某种形式的真空来清理。
-
我们将了解到,当表由于过多的死元组而变得非常大时,性能就会下降。因此,永远不应该避免 VACUUM 过程。
-
本节解释了为什么最好使用数据库的自动清理功能进行稳定的低强度清理工作,而不是禁用该功能并必须在更大的块中进行清理。
如何有效使用索引
-
了解每次添加或更改表中的行时添加索引都会增加开销。每个索引都需要满足足够的查询才能证明维护成本的合理性。
-
在本节中,我们将解释为什么查询的执行计划取决于表中的数据。如果数据的karnality较低,PostgreSQL 很可能会忽略索引
-
在本节中,我们将了解为什么索引只有在具有选择性时才有用;它可以用来仅返回表中的一小部分行。
-
在本节中,我们将探讨如何有效地使用位图扫描
索引优化技巧
-
除了使用索引之外,还可以针对特定应用程序实施自定义策略以加快速度
-
如何能够仅使用覆盖索引中的数据来回答查询。
-
本节介绍为什么在外键上定义索引是一种很好的做法。
-
在本节中,我们将探讨部分索引以及如何享受小而高效的索引。
-
索引可能需要定期重建以恢复最佳性能,并且根据索引顺序对基础数据进行聚类也有助于提高查询速度。
-
我们将解释何时修改表的填充因子参数很有用。
-
在本节中,我们将看到在哪些情况下使用组合索引比使用多个独立索引更好。
利用统计数据
-
在本节中,您将探索可以帮助您查找和排序负责系统大部分负载的查询的统计数据。
-
PostgreSQL 提供了大量的统计数据。在本节中,我们将帮助您更轻松地利用这些统计数据。
-
我们将了解检测缺失索引的最快方法,但我们还将探讨何时需要删除索引。
发现查询问题
-
我们将解释如何阅读查询计划并了解每种底层节点类型的工作原理。
-
我们将看到查询如何作为一系列节点执行,每个节点执行一项小任务,例如获取数据聚合或排序。
-
我们将探讨查询中实际上执行时间最长的部分,看看它们是否具有适当的匹配成本。
-
预估行数与实际 行数之间的差异可能会导致严重的规划问题。我们将探讨在这种情况下可以采取哪些措施。
查询优化技巧
-
我们将看到,为什么在解决性能问题之前首先质疑语句的语义正确性很重要
-
我们将理解为什么我们应该避免使用 SELECT *、ORDER BY 和 DISTINCT,除非我们真的需要它们,而且没有其他办法
-
我们将探索 PostgreSQL 的特性,如 CASE 语法和并行查询,以减少查询的执行时间
如何设置 shared_buffers 以获得更好的性能
-
我们将看到,PostgreSQL 默认的shared_buffers分配非常低,我们需要增加它以允许数据库具有适当的共享内存大小。
-
我们将介绍shared_buffers如何与操作系统缓存协同工作,而不是取代它,并且我们应该将其大小设置为仅占总 RAM 的适当百分比。
-
我们将了解到,如果我们想做得比为 shared_buffers 分配相对于 OS 缓存的百分比更好,我们需要分析缓冲区缓存内容
扩展和复制
-
我们将看到如何利用复制来分散多个数据库服务器上的负载,从而提高软件系统的性能。
-
在某些情况下,PostgreSQL 提供的复制功能还不够。有第三方解决方案可以绕过 PostgreSQL,提供额外的功能,例如可以用作负载平衡器的 Pgpool-II 和实现多服务器分布式数据库解决方案的 Postgres-XL,可以操作大量数据并处理巨大负载。
本课程适合哪些人:
- 数据库管理员
- 对影响应用程序设计和性能的高级数据库内部机制感兴趣的软件开发人员
- 所有对构建更好的 PostgreSQL 应用程序感兴趣的人
如果你有能力,请务必支持课程的原创作者,这是他们应得的报酬!
本站收取的费用,仅用来维持网站正常运行的必要支出,从本站下载任何内容,说明你已经知晓并同意此条款。