本文将mark下NVMe 原子写的相关notes。

What

NVMe原子写是NVMe协议中的一项重要特性,旨在保证数据写入的一致性和完整性。其核心特点是:一个IO操作要么完整地写入,要么整个写入失败,不会出现部分写入、部分未写入的情况

Why

在传统数据库操作中(如MySQL InnoDB),为保证数据一致性,通常采用Double Write机制(先写一份到共享表空间,再写入数据文件),这会导致额外的IO写入操作。NVMe原子写特性通过硬件支持,让数据库可以不使用Double Write机制,直接保证大块数据(如16KB)的原子写入。

关键参数

NVMe协议中定义了多个与原子写相关的参数:

  • AWUN(Atomic Write Unit Normal):控制器级别的原子写命令大小
  • AWUPF(Atomic Write Unit Power Fail):供电异常情况下的原子写命令大小
  • NAWUN/NAWUPF:命名空间级别的原子写命令大小
  • NABSN/NABO:命名空间原子写边界大小和偏移

参考资料:

  1. 浅析nvme原子写的应用场景
  2. 千问对话