深入了解按查询缓存的优势,展示它如何加快查询速度、应对流量高峰、最大限度地降低基础设施成本,并让您的用户满意。了解如何轻松实现 Prisma Accelerate,从而提高应用程序性能并节省成本。
想象一下:您和您的团队刚刚发布了最新的应用程序 SuperWidget。每个人都很兴奋,您也相当确定它会大获成功……果然如此!SuperWidget 突然间被世界上所有大公司使用。然而,您很快意识到流量远远超出了您的计划,您的应用程序开始出现性能下降。
为了解决这个问题,您的团队迅速行动起来。您深入研究了应用程序监控,并意识到应用程序中的几个查询产生了比预期大得多的影响。经过漫长的一夜,您的团队实施了多项基础设施改进,最显著的是一个强大的缓存层,减轻了其余基础设施的负载。SuperWidget 的性能不再受到负面影响,您的新客户对他们的体验感到满意。
那么,您和您的团队可以做得更好吗?
尽管您的团队能力很强,但紧急演习和通宵工作是您最不希望发生的事情。这个解决方案仍然需要协调一致的努力和大量浪费的工程时间。相反,您本可以通过使用 Prisma Accelerate 并轻松缓存查询来节省时间和避免挫败感。
为什么要缓存数据库查询
如上例所示,当您需要减少数据库或应用程序负载时,缓存非常有用。通过缓存,您可以从应用程序加载时间(也称为“关键路径”)中移除耗费资源的操作。后续请求可以使用这些缓存数据,以避免应用程序或数据库花费时间计算结果。如果说由于应用程序负载减少而带来的稳定性提升还不够,那么更少的计算时间也意味着您的基础设施可以支持更高的工作负载,或者您的应用程序可以在更精简的硬件上运行,从而为您节省资金!
缓存的另一个原因是降低出口成本。许多云服务提供商对数据离开其服务收取出口费用。这可能包括从数据库提供的数据行、静态图像,甚至是对其他服务的响应或来自其他服务的响应。
虽然更快的加载时间和更低的成本是缓存的直接好处,但它们带来了另一个好处:提升您应用程序的感知度!更快的加载时间带来更愉快的体验,并使 客户更满意。即使访问者不向您付费,加载缓慢的应用程序也可能导致用户反复刷新(往好里说),或彻底离开(往坏里说)。
在考虑是否缓存查询时,您绝对应该记住这三个原因以及其他原因。幸运的是,Prisma Accelerate 可以提供帮助:Accelerate 具有按查询缓存功能,并能最大限度地降低出口成本。使用 Prisma Accelerate 时,您可以轻松快速地缓存有问题的查询
在第一种情况下,昂贵或频繁访问的查询可能会使您的数据库不堪重负,而按查询缓存将会在数据被缓存期间阻止这种负载。如果成本是您的顾虑,您的数据将只从数据库访问一次,然后缓存在 Accelerate 的全球分布式节点集合中,从而防止后续数据库读取产生额外费用,同时还能加快您的应用程序速度!
何时缓存
现在您知道了为什么要缓存以及如何缓存,您可能会忍不住开始缓存每个查询。在您这样做之前,请注意我们示例中发生的事情:您和您的团队在实施缓存 之前 监控了您的应用程序。
缓存很棒,但任何添加都可能产生开销或导致意外的副作用。在 Prisma,我们是可观测性驱动开发的忠实拥趸:检测您的应用程序并做出明智的决策。缓存应该是众多选项中一个经过仔细考虑的选择。例如,如果您需要某个查询始终包含完全最新的数据,那么缓存可能就不适合。另一方面,数据不经常更改或不需要保持最新的情况则非常适合。
这并不是说您在实施任何类型的缓存之前都需要监控生产流量。缓存也可以成为开发过程中的一个有用工具!如果您的开发环境中有自动化测试,并且您发现一个慢查询,请使用 Accelerate 快速缓存该查询并测量结果。如果您看到显著的改进,那么缓存可能是一个不错的选择。无论环境如何,建议始终相同:测量和基准测试,做出更改,然后再次测量。
如果您对查询洞察和深入优化性能感兴趣,请查看 Prisma Optimize!
Prisma Accelerate 如何提供帮助
如您所见,使用 Prisma Accelerate 添加缓存就像向查询添加一个 cacheStrategy
选项一样简单。由于使用 Prisma Accelerate 缓存查询是按查询进行的,因此您只为那些您 *确实* 缓存的查询付费。您的应用程序的其余部分照常运行。一旦您确定某个特定查询需要缓存,只需几行代码即可添加!
除了能够快速轻松地实现缓存之外,使用 Prisma Accelerate 还意味着无需设置额外的缓存基础设施。虽然云提供商提供托管的键值存储,但在最好的情况下,您仍然需要手动插入数据、管理索引和复制,并确保在数据更改时使缓存失效。使用 Prisma Accelerate,所有这些都为您处理好了!为要缓存的查询添加缓存策略,然后继续构建更多出色的东西吧。
Prisma Accelerate 适合我吗?
在研究任何软件时,总有很多选择。我们发现 Accelerate 非常适合以下类型的应用程序:
- 静态内容,如博客文章
- 复杂查询,如计费相关任务的使用量计算
- 读密集型应用程序,如社交媒体平台、新闻聚合器和电子商务网站
Accelerate 也非常适合希望快速培养工程师的团队。由于 Accelerate 提供托管基础设施并集成到 Prisma Client 中,即使不熟悉您代码库的新团队成员也能轻松缓存查询。
Prisma Accelerate 不仅仅是一个缓存!Accelerate 是边缘分布式的,并且还处理连接池。请务必查看完整文档。
总结
缓存仍然是软件工程中的“难题”之一,这是理所当然的!简单地缓存更多东西并不能解决问题,团队需要花时间了解什么可以缓存以及它将如何影响他们的产品。
尽管有许多不同的缓存方法,但 Prisma Accelerate 可以轻松实现按查询缓存,让您有更多时间专注于构建出色的产品。如果您想进一步了解,请了解更多关于 Accelerate 的信息,并立即开始缓存您的 Prisma ORM 查询。
开始使用 Accelerate 缓存
不要错过下一篇文章!
订阅 Prisma 新闻邮件