知识卡片

技术上支持不代表值得用:atomic write的性价比判断

普通读书笔记卡

内容

MySQL 5.7开始支持atomic write(原子写),可以在保证数据写入原子性的前提下禁用double write buffer(双写缓冲区,原本是InnoDB用来防止”部分页写入”这类问题的机制)——这是一个技术上确实向前推进了一步的新特性。但对这个特性给出的实际评价却相当保留:”成本高,性价比不算高,需要底层存储硬件支持,感觉比较鸡肋”——具体来说,atomic write要真正发挥作用,依赖底层存储硬件本身具备原子写入的能力(不是所有硬盘或存储设备都天然支持这一点),这意味着要用上这个特性,往往需要为特定的硬件买单;而它能带来的收益(省去double write buffer这部分开销)相对于这份硬件门槛和迁移成本而言,显得不够划算。这个案例给出了一条评估新特性是否值得投入使用的重要判断标准:一个数据库版本发布的新特性列表里,”支持了某个能力”和”这个能力值得你去用”完全是两个层面的问题——技术上的可行性只是第一道门槛,真正决定要不要采用的,是这项新能力对应的额外成本(这里是特定硬件依赖)和它实际带来的收益之间的性价比对比;面对版本发布公告里罗列的一长串新特性,不应该默认”新的就是好的、支持了就该用”,而应该像这里一样,逐条审视每个新特性背后真实的落地门槛和收益幅度,只有当收益明显超过门槛和成本时,才值得投入精力去尝试和迁移,否则宁可继续沿用原有的、更成熟稳妥的机制(这里是继续保留double write buffer)。

参考来源

- 位置:《高可用架构(第1卷)》第6章《大数据与数据库》"6.8 MySQL5.7新特性大全和未来展望"节,"6.8.3 InnoDB层优化"(源文件:_epub-src/OEBPS/Text/Chapter6_8_4.xhtml) - 结论依据:原文说明"atomic write,disable double write,MySQL 5.7开始支持atomic write,成本高,性价比不算高,需要底层存储硬件支持,感觉比较鸡肋",直接支撑本卡片结论。 - 原始内容:atomic write,disable double write,MySQL 5.7开始支持atomic write,成本高,性价比不算高,需要底层存储硬件支持,感觉比较鸡肋。