Translation(model translation, not the source's own text)
每个数据库请求背后隐藏的工作
通常,应用程序的存储系统仅在用户向该应用程序发出请求时才需要工作。
然而,请求的工作与存储系统必须执行的工作之间存在差异。存储系统也会做额外的工作,这同样重要。它可以帮助你快速找到数据、在崩溃后恢复数据,或支持并发事务。但这种额外工作也有成本。例如,请求可能只涉及读取一条小记录,但可能需要获取许多数据块。或者当用户请求更新某个值时,可能会在存储系统中触发多次写入。此外,如果你想让数据集保持高可用,它可能需要比数据集实际大小多得多的空间。
读放大、写放大和空间放大展示了逻辑工作与物理成本之间的差异。在本文中,我们将详细探讨这些差异。以下是我们将涵盖的内容:
- 数据库中的逻辑工作和物理工作是什么
- 读放大
- 写放大
- 空间放大
- B-trees 的放大
- LSM trees 的放大
- 索引和过滤器如何利用空间来避免读取
- 压缩如何帮助改善放大
- 缓存的作用
- 放大的影响
