测验:存储设备
HDD 的随机读取为什么比顺序读取慢得多?
- 随机访问需要计算更多错误校验码
- 操作系统以较低优先级处理随机请求
- 每次请求都会重新产生寻道时间和旋转延迟
- 随机访问无法使用缓存
SSD 产生写放大(write amplification)的根本原因是什么?
- SSD 会把每次写入保存两份以实现冗余
- 擦除单位块远大于写入单位页,因此必须搬移仍有效的数据
- 文件系统会写日志
- TRIM 命令会复制数据
测量 NVMe SSD 性能时只用队列深度 1,会有什么问题?
- 队列为空,因此测得的延迟比实际更长
- 写放大被高估,导致寿命预测不准
- 测量值下降到接近 HDD,无法区分
- 无法利用设备并行性,测得的带宽偏低
换成 SSD 后,为什么仍应偏好顺序写入?
- 可以降低垃圾回收负担和写放大
- SSD 也需要移动磁头
- 只有顺序写入才能进入缓存
- SSD 不支持随机写入
在 NVMe 环境中仍保留 PostgreSQL 的 random_page_cost 默认值 4.0,会发生什么?
- 把顺序扫描估得过于昂贵,滥用索引
- 把索引估得过于昂贵,可能过度选择顺序扫描
- 不影响执行计划,只会拖慢统计信息收集
- 只影响写入性能
关于存储设备层级,哪项说法不正确?
- DRAM 断电后内容会消失
- SSD 单元的擦除次数有限,因此需要磨损均衡
- NVMe 的命令队列数量和深度远大于 SATA
- SSD 可以覆盖写入,能够直接按页修改