【Rust日报】2025-09-03 文章《SurrealDB 为提升基准测试表现而牺牲数据持久性》
💡
原文中文,约1500字,阅读约需4分钟。
📝
内容提要
SurrealDB 在使用 RocksDB 或 SurrealKV 时,为了提高基准测试性能,牺牲了数据持久性。用户需设置环境变量 SURREAL_SYNC_DATA=true,以防止崩溃时数据损坏。建议更改默认设置或在文档中提醒用户。
🎯
关键要点
- SurrealDB 在使用 RocksDB 或 SurrealKV 时,默认牺牲数据持久性以提升基准测试表现。
- 用户需设置环境变量 SURREAL_SYNC_DATA=true,以防止崩溃时数据损坏。
- SurrealDB 的代码分析显示,数据写入时未默认启用 fsync 或 fdatasync,导致数据可能仅存储在操作系统缓存中。
- 虽然这种默认设置提高了写入性能,但牺牲了数据安全性。
- 建议 SurrealDB 团队更改默认设置或在文档中明确警告用户。
- 用户在使用 SurrealDB 时务必设置 SURREAL_SYNC_DATA 以确保数据持久性。
- 文章还探讨了 Rust 中将整数转换为枚举类型的几种方法及其性能。
- 使用 #[derive] 方法在稳定版 Rust 中不能用于 const fn,且需返回 Result 类型。
- std::mem::transmute 方法生成的汇编代码简单但存在安全风险。
- match 方法安全但生成的汇编代码包含额外分支,可通过位掩码优化。
- 性能测试显示,直接使用 match 方法在多数情况下表现最好。
- Dysk 是一个文件系统列表工具,能够以更直观的方式展示磁盘信息,支持多种过滤和定制选项。
❓
延伸问答
SurrealDB 在基准测试中是如何牺牲数据持久性的?
SurrealDB 在使用 RocksDB 或 SurrealKV 时,默认情况下牺牲数据持久性以提升基准测试表现,未启用 fsync 或 fdatasync,导致数据可能仅存储在操作系统缓存中。
用户如何确保 SurrealDB 的数据持久性?
用户需设置环境变量 SURREAL_SYNC_DATA=true,以防止崩溃时数据损坏。
SurrealDB 的默认设置对数据安全性有什么影响?
默认设置提高了写入性能,但牺牲了数据安全性,可能导致数据在崩溃时丢失。
SurrealDB 团队对当前设置有什么建议?
建议 SurrealDB 团队更改默认设置或在文档中明确警告用户,以提高数据安全性。
Rust 中将整数转换为枚举类型有哪些方法?
主要有 #[derive]、std::mem::transmute 和 match 方法,分别有不同的性能和安全性特点。
在 Rust 中,哪种方法转换整数为枚举的性能最好?
性能测试显示,直接使用 match 方法在多数情况下表现最好。
➡️