我对内存中 OLTP 的理解显然缺失了一部分。假设我有一个内存优化表,该表设置为保留架构和数据。鉴于这些表始终驻留在 RAM 中,它们的数据如何在服务器重新启动后保存下来?我已经查看了文档,但我不记得看到过任何关于如何或何时将数据移动到磁盘的提及。事实上,据我所知,hekaton 的全部意义在于它们并不存在于磁盘上。
我只是错过了一份文档吗?
我对内存中 OLTP 的理解显然缺失了一部分。假设我有一个内存优化表,该表设置为保留架构和数据。鉴于这些表始终驻留在 RAM 中,它们的数据如何在服务器重新启动后保存下来?我已经查看了文档,但我不记得看到过任何关于如何或何时将数据移动到磁盘的提及。事实上,据我所知,hekaton 的全部意义在于它们并不存在于磁盘上。
我只是错过了一份文档吗?
内存优化表有两种类型:
耐用性 = { SCHEMA_ONLY | 架构和数据}
两种类型都可以在服务器重新启动后继续存在,但对于 SCHEMA_ONLY,不会保存任何数据,但会保存表定义。SCHEMA_AND_DATA 保留数据和模式。
尽管有恢复模型,但 SCHEMA_AND_DATA 内存优化表的所有 DML 都会被完全记录(索引更改除外)。服务器重新启动/实例重新启动后,数据从数据文件(作为内存优化文件组的一部分存在)从存储器流式传输到内存中。
我在http://nedotter.com/archive/category/in-memory-oltp/上发表了大量有关内存优化表的博客