18

SSD 现在很常见。Amazon EBS 由 SSD 支持,因此大多数云数据库现在也在 SSD 上运行(Heroku PostgreSQL 等)。传统上,数据库和相关架构的设计理念是随机访问是不好的——SSD 不再是这种情况。

SSD 如何影响以下内容?

  1. 数据库设计 - DB 旨在最大限度地减少磁盘寻道(WAL、B 树)。SSD 如何改变数据库设计的内部结构和调整?
  2. 应用程序开发 - 工作假设一直是(a)您希望服务器用户从内存而不是 DB 请求,以及(2)对 DB 的访问是 IO 绑定的。使用 SSD,从数据库中检索数据可以足够快,并且数据库访问通常受网络限制。这会减少对内存数据库的需求吗?显然您仍然希望预先计算昂贵的操作,但您可以将它们存储在数据库中
  3. 专业数据库 - 有相当多的数据库可以做一些关系数据库被认为不擅长的事情(部分原因是随机数据访问)。一个这样的例子是图形数据库(Neo4j),它以一种紧凑的方式在磁盘上存储节点和邻接列表。如果我们可以在 SSD 上部署 RDBMS 而不必担心随机访问,这些数据库是否有用?
4

1 回答 1

17

首先,SSD 不会免费提供随机访问。只是更便宜。特别是,随机写入仍然非常昂贵,尽管在小型随机写入中通过持久的回写缓存来缓解这种情况。

如果 SSD 真正将 WAL 刷新到底层媒体,WAL 在 SSD 上的成本会非常高——但事实并非如此。它将它累积在回写缓存中,并定期将其刷新为整个擦除块大小的块。所以 WAL 实际上在 SDD 上工作得非常好,因为部分擦除块写入永远不需要读/修改/写周期。

我确信在 SSD 上的索引的树结构存储中有机会。这还不是我们在 PostgreSQL 中真正探索过的东西。

我使用的大多数基于 SSD 的数据库服务器都完全保持正常运行的磁盘 I/O 限制。SSD 速度很快,但并不神奇。即使是 PCI-E 集成 SSD 也无法与 RAM 竞争,而且大工作负载往往会很快使 SSD 的回写缓存和队列饱和。

同样,在 RDBMS 中遍历邻接表在计算方面仍然远非免费,磁盘上的表示不如在图形 DB 中紧凑,等等。从需要它的专业化中可以获得很多。

要真正了解超快速存储对 DB 的作用,您需要更进一步,看看基于 PCIe RAM 的存储设备,它们的速度快得离谱。

顺便说一句,在很多方面,SSD 与具有大电池支持写入缓存的 SCSI HBA 并没有什么不同。这些已经存在了很长时间。SSD 往往会有更好的随机读取,但在其他方面非常相似。

于 2014-10-30T00:03:20.117 回答