从一则用户案例说起
某金融用户问,数据库用服务器本地盘性能好还是外置存储好?直觉上,本地盘路径短性能应该更好。然而测试结果却出乎意料:同等中等并发压力,混合随机读写模型,服务器本地SSD盘合计4万 IOPS水平,时延竟然高达6ms,回退到机械磁盘时代的水平,而外置存储同样并发压力下30万IOPS,稳定时延在0.2ms。
I/O模型 |
TDSQL+本地SSD盘时延 |
TDSQL+外置全闪存存储时延 |
8KB顺序读 |
0.95 |
0.19 |
8KB随机读 |
6.1 |
0.33 |
8KB顺序写 |
1.8 |
0.32 |
8KB混合随机读写-读 |
6.4 |
0.2 |
8KB混合随机读写-写 |
5.7 |
0.25 |
可以看到,单靠先天物理路径上的优势或者硬件资源堆叠,并不能代表一定高效,更先进架构和算法才是决定性的竞争力。实际上,存算一体和存算分离在数据库发展史上多次反复,每一次变化都由技术进步推动而来。
第一次存算分离
初期的IT系统体量小,以存算一体为主
通用电气公司1961年开发的第一款数据库管理系统,叫做IDS(Integrated Data Store,集成数据存储),只能运行在通用电气的主机上,且只有一个文件存储在本地盘上,由本机的CPU、内存依据手工编码的指令来读写。总而言之,早期的数据库系统以存算一体的方式部署在本地盘上,有以下两点主要原因:
当时的数据库属于高端应用,和各种大型机、中型机紧密绑定在一起。如当时经典的 IBM