Claramente, falta uma peça na minha compreensão do OLTP na memória. Suponha que eu tenha uma tabela com otimização de memória configurada para persistir esquema e dados. Dado que essas tabelas sempre residem na RAM, como seus dados sobrevivem à reinicialização do servidor? Examinei a documentação, mas não me lembro de ter visto nenhuma menção sobre como ou quando os dados são movidos para o disco. Na verdade, até onde eu sei, o objetivo do hekaton é que eles não residem no disco.
Simplesmente perdi uma parte da documentação?
As tabelas com otimização de memória vêm em 2 sabores:
DURABILIDADE = { SCHEMA_ONLY | ESQUEMA_AND_DADOS }
Ambos os tipos sobrevivem à reinicialização do servidor, mas para SCHEMA_ONLY nenhum dado é salvo, mas a definição da tabela é. SCHEMA_AND_DATA preserva os dados e o esquema.
Apesar do modelo de recuperação, todo DML para tabelas com otimização de memória SCHEMA_AND_DATA é totalmente registrado (exceto alterações de índice). Após a reinicialização/reinicialização da instância do servidor, os dados são transmitidos dos arquivos de dados (que existem como parte do grupo de arquivos otimizado para memória) do armazenamento para a memória.
Eu escrevi extensivamente sobre tabelas com otimização de memória em http://nedotter.com/archive/category/in-memory-oltp/