为什么你的固态硬盘(可能)很糟糕以及你的数据库能对此做些什么

主要观点:SSD 已取代旋转磁盘成为数据库系统持久存储的首选解决方案,但存在厂商不愿提及的问题,CedarDB 可克服这些问题。
关键信息

  • SSD 读吞吐量惊人,处理分析查询时若多线程并行访问且保持多个请求处于活跃状态可充分利用其高读吞吐量,CedarDB 采用基于 morsel 的并行主义方法利用此优势。
  • SSD 写操作在低队列深度时受延迟影响,操作系统的write()操作不能保证数据已到达物理存储介质,sync命令可确保数据持久存储,但会增加延迟。
  • 缓解存储高延迟的方法有组提交(可根据负载动态调整窗口)、异步处理(包括应用程序重写代码使用管道模式或启用异步提交)、企业级 SSD(有电容备份写缓存,sync调用几乎无延迟)。
  • CedarDB 结合上述方法,使用组提交、支持管道模式、自动检测 SSD 是否有写缓存并相应调整提交方式。
  • 其他数据库系统如 MongoDB 通过写前日志和可选的早期日志刷新处理 SSD 延迟,PostgreSQL 通过在提交时将事务刷新到磁盘、配置参数等方式处理。
    重要细节
  • bench-fio工具测量消费级 Crucial T700 SSD 的性能,展示读吞吐量和写延迟情况。
  • 说明操作系统的write()sync命令对数据存储的影响及延迟变化。
  • 介绍 MongoDB 的写前日志和可选的早期日志刷新机制,PostgreSQL 的提交延迟配置参数和异步提交选项及相关注意事项。
  • 提及不同使用场景下对 SSD 延迟的考虑,如消费级设备可能因异步提交或事务流水线而损失少量数据,生产环境应使用企业级 SSD 等。
阅读 10
0 条评论