作者 | David
编译 | 星璇
出品 | 51CTO技术栈(微信号:blog51cto)
当我看到死数据库在行走时,我就有了“第六感”时刻。随着 GenAI 准备吃掉你的数据,是时候解决性能问题了。
“云应用程序速度太慢!”这类的抱怨越来越多了。然而,十有八九,原因并不是应用程序本身或数据库性能不够导致的问题。
已经快到 2024 年了。为什么基于云的数据库性能仍然存在这些问题?最常见的原因是什么?我们该如何修复它们?我有几个想法。
云提供商提供许多数据库服务,例如 Amazon RDS、Azure SQL 数据库和 google Cloud SQL。有时,您根据应用程序的要求、可扩展性和性能期望选择的数据库必须进行调整,以确保更合适。
在许多情况下,选择数据库的原因是错误的。例如,未来需要二进制文件的存储和管理,这就导致了对象数据库的选择。然而,对于这个特定的用例来说,关系数据库是正确的选择。考虑所有因素,包括托管服务、地理位置和兼容性。
此外,在选择数据库类型和品牌时还要考虑性能。假设它在云上,并且云是“无限可扩展的”,因此任何数据库都会表现良好。您选择的数据库类型应取决于您要存储的数据类型以及您将如何使用数据,例如列式分层数据库、关系数据库、对象数据库等。最流行的数据库以及适合您的特定数据库的数据库用例很少相同。
这是巨大的。高效的数据库设计和正确的索引会显着影响性能。大多数性能不佳的数据库问题都可以追溯到数据库设计问题,特别是过于复杂的数据库结构和误用的索引。
确保建立适当的索引以加快数据检索速度。定期检查和优化查询以消除瓶颈。确保您的数据库架构已优化。另外,在必要时对数据库进行规范化,但要知道过度规范化也可能同样糟糕。对于那些在 20 世纪 90 年代没有学习过 Database 101 的人来说,这意味着将数据组织到单独的、相互关联的表或数据库中的其他本机数据库容器中。
规范化旨在通过消除重复数据并将较大的表分解为更小、更易于管理的表来最大限度地减少冗余和依赖性。我发现为了最大限度地提高性能而进行的数据库规范化过程经常被忽视,并导致许多性能问题。
尽管公共云提供商提供高度可扩展的资源来适应不同的工作负载,但它们通常需要更加高效。您需要研究自动缩放功能的实现,以根据需求动态调整资源。可以策略性地使用水平扩展(添加更多实例)和垂直扩展(增加实例大小)来满足高性能要求。
但是,请小心允许云提供商代表您自动分配资源。在许多情况下,他们分配了太多,你会在月底收到一大笔账单。您应该确定一个平衡,而不是仅仅选择自动缩放按钮。
最好根据工作负载特征来优化存储配置,而不是根据您在云认证课程中看到的最佳实践。例如,将 SSD 用于 I/O 密集型工作负载,但要知道它们通常更昂贵。此外,选择正确的存储层并实施缓存机制,以减少频繁的磁盘 I/O 操作的需要。事实上,缓存也进入了自动化状态,您可能需要更精细的控制才能以最小的成本找到最佳性能。
云架构师和数据库工程师需要在数据库性能方面做得更好。在某些情况下,这意味着回到良好的数据库设计、配置和部署的基础知识。这正在成为一门失传的艺术,因为那些负责云系统的人似乎更喜欢在这个问题上砸钱。这不是解决问题的方式。
参考链接:https://www.infoworld.com/article/3711276/why-your-cloud-database-performance-sucks.html