Newshot

数据库请求背后:存储系统的隐藏开销

AI summary

应用存储系统除了响应用户请求,还要做额外工作,比如快速查找数据、崩溃后恢复、支持并发事务。这些额外工作有代价:读一条小记录可能需取多个数据块,一次更新可能触发多次写入,高可用还会占用远超数据集本身的空间。读放大、写放大和空间放大正体现了逻辑工作与物理成本之间的差异。

Translation(model translation, not the source's own text)

每个数据库请求背后隐藏的工作

通常,应用程序的存储系统仅在用户向该应用程序发出请求时才需要工作。

然而,请求的工作与存储系统必须执行的工作之间存在差异。存储系统也会做额外的工作,这同样重要。它可以帮助你快速找到数据、在崩溃后恢复数据,或支持并发事务。但这种额外工作也有成本。例如,请求可能只涉及读取一条小记录,但可能需要获取许多数据块。或者当用户请求更新某个值时,可能会在存储系统中触发多次写入。此外,如果你想让数据集保持高可用,它可能需要比数据集实际大小多得多的空间。

读放大、写放大和空间放大展示了逻辑工作与物理成本之间的差异。在本文中,我们将详细探讨这些差异。以下是我们将涵盖的内容:

  • 数据库中的逻辑工作和物理工作是什么
  • 读放大
  • 写放大
  • 空间放大
  • B-trees 的放大
  • LSM trees 的放大
  • 索引和过滤器如何利用空间来避免读取
  • 压缩如何帮助改善放大
  • 缓存的作用
  • 放大的影响

逻辑工作与物理工作

Only about 619 characters could be extracted — the rest did not come through (common on sites that need scrolling or a login). Read the original for the full piece.

Published by ByteByteGo
This site only summarises and aggregates; copyright stays with the original author. Headlines and summaries follow the source — where they differ, the original wins.
Read the original ↗