Partilhar via


O grupo de arquivos com otimização de memória

Aplica-se a:SQL Server

Para criar tabelas com otimização de memória, você deve primeiro criar um grupo de arquivos com otimização de memória. O grupo de arquivos com otimização de memória contém um ou mais contêineres. Cada contêiner contém arquivos de dados ou arquivos delta ou ambos.

Embora as linhas de dados das tabelas SCHEMA_ONLY não sejam persistentes e os metadados para tabelas otimizadas para memória e procedimentos armazenados compilados nativamente sejam guardados nos catálogos tradicionais, o motor OLTP In-Memory ainda requer um grupo de arquivos otimizado para memória para SCHEMA_ONLY proporcionar uma experiência uniforme em bancos de dados com tabelas otimizadas para memória.

O grupo de ficheiros otimizado para memória é baseado no grupo de ficheiros de fluxo, com as seguintes diferenças:

  • Você só pode criar um grupo de arquivos com otimização de memória por banco de dados. Você precisa marcar explicitamente o grupo de arquivos como contendo memory_optimized_data. Você pode criar o grupo de arquivos ao criar o banco de dados ou adicioná-lo mais tarde:

    ALTER DATABASE imoltp ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATA  
    
  • Você precisa adicionar um ou mais contêineres ao MEMORY_OPTIMIZED_DATA grupo de arquivos. Por exemplo:

    ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='c:\data\imoltp_mod1') TO FILEGROUP imoltp_mod  
    
  • Não é necessário habilitar o fluxo de arquivos (Habilitar e configurar FILESTREAM) para criar um grupo de arquivos com otimização de memória. O mapeamento para o fluxo de arquivos é realizado pelo motor OLTP In-Memory.

  • Você pode adicionar novos contêineres a um grupo de arquivos com otimização de memória. Você pode precisar de um novo contêiner para expandir o armazenamento necessário para uma tabela durável com otimização de memória e também para distribuir E/S em vários contêineres.

  • A movimentação de dados com um grupo de arquivos otimizado para memória é otimizada em uma configuração de Grupo de Disponibilidade Always On. Ao contrário dos arquivos de filestream que são enviados para réplicas secundárias, os arquivos de ponto de verificação (dados e delta) dentro do grupo de arquivos com otimização de memória não são enviados para réplicas secundárias. Os dados e os arquivos delta são construídos usando o log de transações na réplica secundária.

Observação

No SQL Server 2022 (16.x) e versões mais antigas, depois de usar um grupo de arquivos com otimização de memória, você só pode removê-lo descartando o banco de dados. Não é possível soltar um contêiner não vazio ou soltar o último contêiner restante, mesmo que ele esteja vazio. Também não é possível mover dados e pares de arquivos delta para outro contêiner no grupo de arquivos com otimização de memória.

A partir do SQL Server 2025 (17.x), pode remover o último contentor restante e remover o grupo de ficheiros otimizado para memória. Para obter mais informações, consulte Remoção de contêiner e grupo de arquivos com otimização de memória.

Configurando um grupo de arquivos Memory-Optimized

Considere a criação de vários contêineres no grupo de arquivos com otimização de memória e distribua-os em unidades diferentes para obter mais largura de banda para transmitir os dados para a memória.

Num cenário de múltiplos contentores e drives, os dados e arquivos delta são distribuídos de forma round-robin pelos contentores. O primeiro arquivo de dados é alocado a partir do primeiro contêiner e o arquivo delta é alocado do próximo contêiner e esse padrão de alocação se repete. Esse esquema de alocação distribui dados e ficheiros delta uniformemente entre contentores se tiveres um número ímpar de discos, cada um mapeado para um contentor. No entanto, se tiver um número par de unidades que estão todas mapeadas para um contêiner, isto pode resultar num armazenamento desequilibrado com arquivos de dados mapeados para unidades ímpares e arquivos delta mapeados para unidades pares. Para obter um fluxo equilibrado de E/S na recuperação, considere colocar pares de dados e arquivos delta nos mesmos eixos/armazenamento.

Ao configurar o armazenamento, você deve fornecer espaço livre em disco quatro vezes o tamanho de tabelas duráveis com otimização de memória. Certifique-se também de que seu subsistema de E/S suporte as IOPS necessárias para sua carga de trabalho. Se os pares de dados e arquivos delta forem preenchidos em uma determinada IOPS, você precisará de três vezes mais IOPS para contabilizar operações de armazenamento e mesclagem. Você pode adicionar capacidade de armazenamento e IOPS adicionando um ou mais contêineres ao grupo de arquivos com otimização de memória.

Atenção

Se um MAXSIZE valor for definido para o grupo de arquivos com otimização de memória e os arquivos de ponto de verificação excederem o tamanho máximo do contêiner, o banco de dados se tornará SUSPECT.
Nesse caso, não tente definir o banco de dados como OFFLINE e ONLINE, pois isso fará com que ele permaneça no estado RECOVERY_PENDING.

Ver também

Criação e gerenciamento de armazenamento para objetos Memory-Optimized
arquivos de banco de dados e grupos de arquivos
ALTER DATABASE Opções de arquivo e grupo de arquivos (Transact-SQL)