持久内存 (PMEM) 是驻留在内存总线上的固态高性能按字节寻址内存设备。PMEM 位于内存总线上,支持像 DRAM 一样访问数据,这意味着它具备与 DRAM 相当的速度和延迟,而且兼具 NAND 闪存的非易失性,他的推出标志着计算行业革命的开始。
当前一代 DRAM 的数据访问延迟在 80-100 纳秒范围内,而正确配置的机械磁盘应在1-10毫秒范围内执行。64 字节的持久内存访问时间约为 300 纳秒。虽然这比 DRAM 慢约 3 倍,但比SSD快几十倍。
但是目前没有相关的技术和补丁来保证存储 Oracle 所需的完整性,特别是异常断电、实例崩溃等,针对复杂的数据库系统容易出现数据库损坏的问题,官方也针对此问题出了一篇MOS文章:File Systems and Devices on Persistent Memory (PMEM) in Database Servers May Cause Database Corruption (Doc ID 2608116.1)
2019年OOW上,Oracle发布的Exadata X8M 中首先支持了持久内存,Exadata X8M 在存储层使用 Persistent Memory 来加速数据库块 I/O,以及加速数据库事务日志中与提交相关的过程。Exadata 在 AppDirect 模式下使用 Persistent Memory,Exadata 软件旨在通过合并与 Persistent Memory 的 8 字节原子性兼容的软件逻辑来解决上述数据完整性问题。Exadata 存储还保留跨存储服务器的所有数据的 2 或 3 个冗余副本(取决于冗余配置)以实现容错。 参考:Exadata X8M发布,体系结构发生重大的变化。
目前该文档已经更新,指出Oracle 21C已经全面支持持久化内存PMEM,不仅保证了PMEM的性能还解决了以上数据库损坏的问题,如果大家环境中有PMEM,可以尝试用21C来进行测试验证,使用步骤参考官方文档:https://docs.oracle.com/en/database/oracle/oracle-database/21/admin/using-PMEM-db-support.html#GUID-82286150-8AFD-439C-A434-27390B8852E5
评论
