SSD使用对基本数据库假设的影响是什么?

时间:2014-10-29 21:12:22

标签: database postgresql neo4j redis ssd

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

SSD如何影响以下?

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

1 个答案:

答案 0 :(得分:17)

首先,SSD不能免费随机访问。只是更便宜。特别是,随机写入仍然非常昂贵,尽管通过持久的回写缓存进行小的随机写入可以减轻这种情况。

如果SSD真的将它刷新到底层媒体上,那么在SSD上使用WAL会非常昂贵 - 但它并不是这样。它将它累积在回写高速缓存中,并在整个擦除块大小的块中周期性地将其刷新。因此,WAL实际上在SDD上工作得非常好,因为对于部分擦除块写入,从不需要读/修改/写周期。

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

我使用的大多数基于SSD的数据库服务器仍然完全受限于正常操作的磁盘I / O.固态硬盘很快,但不是魔术。即使是PCI-E集成的SSD也无法与RAM竞争,大型工作负载往往会迅速使SSD的回写缓存和队列饱和。

同样地,在RDBMS中走一条邻接列表在计算方面还远没有那么自由,磁盘表示不像图形DB那样紧凑等等。在你需要的专业化中可以获得很多东西。它

要真正了解超快存储对数据库的影响,您需要更进一步,看看基于PCIe RAM的存储设备,这些存储设备疯狂,快速,可笑。

BTW,在很多方面,SSD与具有大电池支持的写缓存的SCSI HBA不同。这些已经存在了很长时间。 SSD往往具有更好的随机读取,但它非常相似。