深入探讨按查询缓存的好处,展示如何使查询更快、应对流量激增、最大程度降低基础设施成本并保持用户满意。了解如何轻松实现 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 新闻通讯