Partilhar via


Comparando armazenamento de tabelas baseado em disco com armazenamento de tabelas otimizado para memória

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure

Categorias Tabela baseada em disco Tabela Durável Otimizada para Memória
DDL A informação de metadados é armazenada em tabelas do sistema no grupo de ficheiros primário da base de dados e é acessível através de visualizações de catálogo. A informação de metadados é armazenada em tabelas do sistema no grupo de ficheiros primário da base de dados e é acessível através de visualizações de catálogo.
Estrutura As linhas encontram-se armazenadas em páginas de 8 KB. Uma página armazena apenas as linhas da mesma tabela. As linhas são armazenadas como linhas individuais. Não existe estrutura de página. Duas linhas consecutivas num ficheiro de dados podem pertencer a diferentes tabelas otimizadas para memória.
Indexes Os índices são armazenados numa estrutura de página semelhante às linhas de dados. Apenas a definição do índice é mantida (não as linhas do índice). Os índices são mantidos em memória e são regenerados quando a tabela otimizada para memória é carregada na memória como parte do reinício de uma base de dados. Como as linhas de índice não são preservadas, não é feito registo para alterações de índice.
Operação DML O primeiro passo é encontrar a página e depois carregá-la no buffer-pool.

Inserir
O SQL Server insere a linha na página tendo em conta a ordem das linhas para o índice clusterizado.

Suprimir
O SQL Server localiza a linha a eliminar na página e marca-a como eliminada.

Atualização
O SQL Server localiza a linha na página. A atualização é feita no local para colunas que não são chave. A atualização da coluna-chave é feita por meio de uma operação de eliminação e inserção.

Após a conclusão da operação DML, as páginas afetadas são esvaziadas para o disco como parte da política do buffer pool, checkpoint ou commit de transação para operações minimamente registadas. Ambas as operações de leitura/escrita nas páginas conduzem a entradas/saídas desnecessárias.
Para tabelas otimizadas para memória, como os dados residem na memória, as operações DML são feitas diretamente na memória. Existe uma thread em segundo plano que lê os registos de log para tabelas otimizadas para memória e os persiste em ficheiros de dados e ficheiros delta. Uma atualização gera uma nova versão da linha. Mas uma atualização é registada como uma eliminação seguida de uma inserção.
Fragmentação de Dados A manipulação de dados fragmenta dados, levando a páginas parcialmente preenchidas e páginas logicamente consecutivas que não são contíguas no disco. Isto degrada o desempenho do acesso aos dados e obriga a desfragmentar os dados. Os dados otimizados para memória não são armazenados em páginas, por isso não há fragmentação de dados. No entanto, à medida que as linhas são atualizadas e eliminadas, os dados e ficheiros delta precisam de ser compactados. Isto é feito por um processo de junção em segundo plano baseado numa política de fusão.

Ver também

Criação e gerenciamento de armazenamento para objetos Memory-Optimized