-1

我查看了文档,并没有在示例中看到任何实际的实现案例。

有人知道如何确保通过英特尔 NVMe SPDK 处理对我的数据库服务器的传入请求吗?

4

1 回答 1

3

您需要开发一个自定义存储引擎

MySQL 中现有的存储引擎使用 POSIX 调用进行 I/O。换句话说,它们称为标准内核函数。通过这种方式,它们可以支持具有可移植代码的各种存储设备和操作系统。

据我了解SPDK,它是一个用户空间代码入口点库,绕过操作系统内核的I/O接口,直接读写NVMe。

所以我认为它需要完全重写 MySQL 存储引擎中的 I/O 代码才能利用 SPDK。这也将使存储引擎不可移植。它仅适用于具有 NVMe 存储设备的主机。

然后,您将需要对其进行大约 25 年的优化,以匹配例如 InnoDB 代码的成熟度。仅使用相同的使用模式执行相同的 I/O 调用可能不是利用 NVMe 驱动器的最佳方式。

即使你做了所有这些,你也可能不会发现它对于像 MySQL 这样的复杂服务的整体性能有很大的改进。如果您的数据库受 I/O 限制,那么您已经输了。提高性能的更好方法是不执行 I/O,而是在 RAM 中读取和写入数据。即使与 NVMe 存储相比,RAM 延迟仍然至少低三个数量级。

于 2021-09-03T15:27:59.280 回答