SSD 没有盘片也没有磁头,把磁盘最慢的一环【找】直接去掉了;它本质就是用闪存芯片做成的大号内存。
5.3 是拿磁盘当内存用,这一节反过来:用一个像内存的东西做磁盘。
一、它凭什么快
机械硬盘慢,不是因为读得慢,而是因为要找:盘片得转到位置,磁头得摆到磁道。 这两件事都是机械动作,快不了,只能以毫秒计。 SSD 里没有电机、没有盘片、没有磁头——读写就是给一片片闪存芯片发地址。 于是【找】这一步几乎归零,速度一下子从毫秒级跳到微秒级,差了几十倍到上百倍。
二、固态的代价
闪存有个怪脾气:读和写可以按小单位来,但擦除必须按大块来。 想改一个字节,往往得把整块读出来、改掉、再整块写回去——所以固件要做复杂的搬运和整理。 还有寿命问题:每个块能擦写的次数有限,于是需要磨损均衡,让写入均匀摊到所有块上。 再加上垃圾回收,你就能理解:为什么 SSD 用久了会掉速、为什么固件升级能显著影响性能。
三、SSD 不是内存
名字里虽然有【固态】,但它不是内存,几个关键区别必须分清: 断电后数据还在——内存断电就丢,这是最根本的一条。 速度还是差着一个数量级——SSD 是微秒级,内存是纳秒级。 访问的粒度不同——内存可以按字节随便读,闪存要按页按块管理。 所以【把内存当成磁盘用】这句话说的是它的角色:定位上它替磁盘干活,构造上它更像内存。
四、实际意味着什么
既然瓶颈一直在磁盘,那么换成 SSD 的收益就能直接感觉到: 开机、启动软件快——省掉的全是等待时间。 随机读写型的任务快得离谱——编译、数据库、虚拟机最明显。 顺序读写反而提升有限——因为这方面机械硬盘本来就不算太慢。 这条规律也反过来印证了 5.6 要说的那句话:磁盘慢的不是读,是找。
五、动手 Demo:将内存当成磁盘使用的固态硬盘
SSD 里没有会转的盘片,也没有要来回摆的磁头。 少了机械动作,最慢的那一环就没有了。
hdd_ms, ssd_ms = 8.0, 0.1 # 一次随机读大约要多久(毫秒)
n = 1000
for name, ms in (("机械硬盘", hdd_ms), ("固态硬盘", ssd_ms)):
print("%s 随机读 %d 次:%.1f 秒" % (name, n, n * ms / 1000.0))
print("差距 %.0f 倍" % (hdd_ms / ssd_ms))
实跑输出:
--------------------------------------------------------------------
将内存当成磁盘使用的固态硬盘
--------------------------------------------------------------------
SSD 里**没有会转的盘片,也没有要来回摆的磁头**——它本质是一堆闪存芯片。
少了机械动作,最慢的那一环就没有了。
指标 机械硬盘 HDD 固态硬盘 SSD
------------------------------------------------------------------------------
定位要多久 等盘片转到位置,约 5~10 毫秒 没有机械动作,约 0.1 毫秒
随机读每秒几次 约 100 次 几万次
顺序读速度 约 100~200 MB/s 约 500~7000 MB/s
怕震动吗 怕,磁头和盘片挨得极近 不怕
每 GB 价格 便宜 贵
拿 1000 次随机读算笔账:
机械硬盘 1000 × 8 毫秒 = 8.0 秒
固态硬盘 1000 × 0.1 毫秒 = 0.1 秒
差了 80 倍
**这也解释了为什么换一块 SSD,开机和老软件启动会快得那么明显:**
瓶颈从来不是 CPU 算得慢,**而是它在等磁盘。**
1000 次随机读:机械硬盘 8.0 秒,固态硬盘 0.1 秒,差 80 倍。 换 SSD 的提升几乎全在【随机访问】上,这正是机械结构最吃亏的地方。
30 秒实验
- 查一下你电脑上那块盘是机械的还是固态的,看看开机时间大概多久。
- 想想为什么在 SSD 上做磁盘碎片整理没什么意义。
常见误区
- 以为 SSD 就是内存。它断电还不丢数据,速度也还差一个数量级。
- 以为 SSD 不会变慢。写入分布不均、垃圾回收都会让它掉速。
自测三问(点开对答案)
1. SSD 为什么比机械硬盘快? —— 没有盘片旋转和磁头寻道的机械动作,读写变成直接给闪存芯片发地址。 2. 闪存的主要限制有哪些? —— 擦除必须按大块进行;每块擦写次数有限,需要磨损均衡;还要做垃圾回收。 3. SSD 和内存的关键区别是什么? —— SSD 断电不丢数据(这是根本),速度仍是微秒级、比内存慢一个数量级,访问粒度也不同。- ☐ 下一节(5.5 节约内存的编程技巧)
相关笔记
- 将磁盘当成内存使用的虚拟内存 — 对照着看两条路
- 了解一下磁盘的物理结构 — 机械硬盘到底慢在哪
- 内存的物理结构十分简单 — 内存那边为什么不用找
- 🖥️ 服务器工作原理 · 索引 — 服务器怎么攒出来的
- ⚙️ 程序是怎样跑起来的 · 索引