Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerenciada SQL do Azure
Apresenta informações sobre In-Memory ficheiros de checkpoint OLTP, incluindo tamanho do ficheiro, localização física e o ID da transação.
Observação
Para o ponto de controlo atual que ainda não fechou, a coluna de estado de sys.dm_db_xtp_checkpoint_files estará EM CONSTRUÇÃO para novos ficheiros. Um ponto de controlo fecha automaticamente quando há crescimento suficiente do registo de transações desde o último ponto de controlo, ou se emitir o CHECKPOINT comando. Para obter mais informações, consulte CHECKPOINT (Transact-SQL).
Um grupo de ficheiros otimizado para memória utiliza internamente ficheiros apenas adicionáveis para armazenar linhas inseridas e eliminadas para tabelas em memória. Existem dois tipos de ficheiros. Um ficheiro de dados contém linhas inseridas enquanto um ficheiro delta contém referências a linhas eliminadas.
O SQL Server 2014 (12.x) é substancialmente diferente das versões mais recentes e é discutido no SQL Server 2014.
Para mais informações, consulte Criação e Gestão de Armazenamento para Memory-Optimized Objetos.
SQL Server 2016 (13.x) e posteriores
A tabela seguinte descreve as colunas para sys.dm_db_xtp_checkpoint_files, começando pelo SQL Server 2016 (13.x).
| Nome da coluna | Tipo | Description |
|---|---|---|
| container_id | int | O ID do contentor (representado como um ficheiro com o tipo FILESTREAM em sys.database_files) do qual o ficheiro de dados ou delta faz parte. Junta-se a file_id em sys.database_files (Transact-SQL). |
| container_guid | uniqueidentifier | GUID do Contentor, do qual fazem parte a raiz, o ficheiro de dados ou delta. Junta-se com file_guid na sys.database_files mesa. |
| checkpoint_file_id | uniqueidentifier | GUID do ficheiro do ponto de controlo. |
| relative_file_path | Nvarchar(256) | Caminho do ficheiro em relação ao contentor para onde está mapeado. |
| file_type | smallint | -1 GRÁTIS 0 para ficheiro DATA. 1 para o ficheiro DELTA. 2 para ficheiro ROOT 3 para ficheiro BIG DATA |
| descrição_do_tipo_de_ficheiro | Nvarchar(60) | GRATUITO - Todos os ficheiros mantidos como GRATUITOS estão disponíveis para alocação. Os ficheiros gratuitos podem variar em tamanho consoante as necessidades previstas pelo sistema. O tamanho máximo é de 1 GB. DADOS - Os ficheiros de dados contêm linhas que foram inseridas em tabelas otimizadas para memória. DELTA - Os ficheiros Delta contêm referências a linhas em ficheiros de dados que foram eliminados. ROOT - Os ficheiros raiz contêm metadados do sistema para objetos otimizados para memória e compilados nativamente. DADOS GRANDES - Os ficheiros de dados grandes contêm valores inseridos nas colunas (n)varchar(max) e varbinary(max), bem como os segmentos de coluna que fazem parte dos índices de columnstore em tabelas otimizadas para memória. |
| internal_storage_slot | int | O índice do ficheiro no array de armazenamento interno.
NULL para ROOT ou para estados diferentes de 1. |
| checkpoint_pair_file_id | uniqueidentifier | Ficheiro DATA ou DELTA correspondente.
NULL para ROOT. |
| file_size_in_bytes | bigint | Tamanho do ficheiro no disco. |
| file_size_used_in_bytes | bigint | Para pares de ficheiros de checkpoints que ainda estão a ser preenchidos, esta coluna será atualizada após o próximo checkpoint. |
| logical_row_count | bigint | Para Dados, número de linhas inseridas. Para Delta, número de linhas eliminadas após contabilizar a tabela de drop. Para Root, NULL. |
| state | smallint | 0 - PRÉ-CRIADO 1 - EM CONSTRUÇÃO 2 - ATIVO 3 - ALVO DE FUSÃO 8 - À ESPERA DE TRUNCAMENTO DO TRONCO |
| descrição_do_estado | Nvarchar(60) | PRÉ-CRIADO - Vários ficheiros de checkpoint são pré-alocados para minimizar ou eliminar quaisquer esperas para alocar novos ficheiros à medida que as transações são executadas. Estes ficheiros podem variar em tamanho e são criados consoante as necessidades estimadas da carga de trabalho. Não contêm dados. Isto representa uma sobrecarga de armazenamento em bases de dados com um grupo de ficheiros MEMORY_OPTIMIZED_DATA. EM CONSTRUÇÃO - Estes ficheiros de checkpoint estão em construção, ou seja, estão a ser preenchidos com base nos registos de registo gerados pela base de dados e ainda não fazem parte de um checkpoint. ATIVO - Estes contêm as linhas inseridas/eliminadas de checkpoints fechados anteriormente. Contêm o conteúdo das tabelas que são lidas na memória antes de aplicarem a parte ativa do registo de transações no reinício da base de dados. Esperamos que o tamanho destes ficheiros de checkpoint seja aproximadamente 2x o tamanho em memória das tabelas otimizadas para memória, assumindo que a operação de fusão acompanha a carga de trabalho transacional. MERGE TARGET - O alvo das operações de merge - estes ficheiros de checkpoint armazenam as linhas de dados consolidadas dos ficheiros de origem identificados pela política de merge. Uma vez instalada a fusão, o MERGE TARGET transita para o estado ATIVO. AGUARDANDO TRUNCAMENTO DE LOGS - Depois de a fusão estar instalada e o MERGE TARGET CFP fazer parte do checkpoint durável, os ficheiros de checkpoint de origem da fusão transitam para este estado. Ficheiros neste estado são necessários para a correção operacional da base de dados com tabela otimizada para memória. Por exemplo, recuperar de um ponto de controlo durável para voltar atrás no tempo. |
| lower_bound_tsn | bigint | Limite inferior da transação no ficheiro; NULL se não estiver em (1, 3). |
| upper_bound_tsn | bigint | Limite superior da transação no ficheiro; NULL se não estiver em (1, 3). |
| begin_checkpoint_id | bigint | Identificação do ponto de controlo inicial. |
| end_checkpoint_id | bigint | Identificação do posto de controlo final. |
| last_updated_checkpoint_id | bigint | ID do último posto de controlo que atualizou este ficheiro. |
| encryption_status | smallint | 0, 1, 2 |
| encryption_status_desc | Nvarchar(60) | 0 => NÃO ENCRIPTADO 1 => ENCRIPTADO COM A CHAVE 1 2 => ENCRIPTADO COM A CHAVE 2. Válido apenas para ficheiros ativos. |
SQL Server 2014 (12.x)
A tabela seguinte descreve as colunas para sys.dm_db_xtp_checkpoint_files, para SQL Server 2014 (12.x).
| Nome da coluna | Tipo | Description |
|---|---|---|
| container_id | int | O ID do contentor (representado como um ficheiro com o tipo FILESTREAM em sys.database_files) do qual o ficheiro de dados ou delta faz parte. Junta-se a file_id em sys.database_files (Transact-SQL). |
| container_guid | uniqueidentifier | O GUID do contentor do qual faz parte o ficheiro de dados ou delta. |
| checkpoint_file_id | GUID | ID dos dados ou ficheiro delta. |
| relative_file_path | Nvarchar(256) | Caminho para o ficheiro de dados ou delta, em relação à localização do contentor. |
| file_type | tinyint | 0 para ficheiro de dados. 1 para o ficheiro Delta. NULL se a coluna de estado estiver definida para 7. |
| descrição_do_tipo_de_ficheiro | Nvarchar(60) | O tipo de ficheiro: DATA_FILE, DELTA_FILE, ou NULL se a coluna de estado estiver definida para 7. |
| internal_storage_slot | int | O índice do ficheiro no array de armazenamento interno.
NULL se a coluna de estado não for 2 ou 3. |
| checkpoint_pair_file_id | uniqueidentifier | Os dados correspondentes ou ficheiro delta. |
| file_size_in_bytes | bigint | Tamanho do ficheiro que é utilizado.
NULL se a coluna de estado estiver definida para 5, 6 ou 7. |
| file_size_used_in_bytes | bigint | Tamanho usado do ficheiro que é utilizado.
NULL se a coluna de estado estiver definida para 5, 6 ou 7.Para pares de ficheiros de checkpoints que ainda estão a ser preenchidos, esta coluna será atualizada após o próximo checkpoint. |
| inserted_row_count | bigint | Número de linhas no ficheiro de dados. |
| deleted_row_count | bigint | Número de linhas eliminadas no ficheiro delta. |
| drop_table_deleted_row_count | bigint | O número de linhas nos ficheiros de dados afetadas por uma tabela de drop. Aplica-se a ficheiros de dados quando a coluna de estado é igual a 1. Mostra as contagens de linhas eliminadas de tabelas(ões) eliminadas. As estatísticas drop_table_deleted_row_count são compiladas depois de concluída a recolha de lixo de memória das linhas das tabelas(es) abandonadas e de um checkpoint ser tomado. Se reiniciar o SQL Server antes das estatísticas das tabelas de drop serem refletidas nesta coluna, as estatísticas serão atualizadas como parte da recuperação. O processo de recuperação não carrega linhas de tabelas eliminadas. As estatísticas das tabelas descartadas são compiladas durante a fase de carregamento e reportadas nesta coluna quando a recuperação termina. |
| state | int | 0 - PRÉ-CRIADO 1 - EM CONSTRUÇÃO 2 - ATIVO 3 - ALVO DE FUSÃO 4 - FONTE FUNDIDA 5 - NECESSÁRIO PARA APOIO/HA 6 - EM TRANSIÇÃO PARA LÁPIDE 7 - LÁPIDE |
| descrição_do_estado | Nvarchar(60) | PRÉ-CRIADO - Um pequeno conjunto de pares de dados e ficheiros delta, também conhecidos como pares de ficheiros checkpoint (CFPs), é mantido pré-alocado para minimizar ou eliminar quaisquer esperas para alocar novos ficheiros à medida que as transações são executadas. São criados com um tamanho de ficheiro de dados de 128 MB e tamanho delta de 8 MB, mas não contêm dados. O número de CFPs é calculado como o número de processadores lógicos ou escalonadores (um por núcleo, sem máximo) com um mínimo de 8. Trata-se de uma sobrecarga fixa de armazenamento em bases de dados com tabelas otimizadas para memória. EM CONSTRUÇÃO - Conjunto de CFPs que armazenam linhas de dados recém-inseridas e possivelmente eliminadas desde o último checkpoint. ATIVO - Estes contêm as linhas inseridas e eliminadas de checkpoints fechados anteriormente. Estes CFPs contêm todas as linhas inseridas e eliminadas necessárias antes de aplicar a parte ativa do registo de transações no reinício da base de dados. O tamanho destes CFPs será aproximadamente duas vezes o tamanho em memória das tabelas otimizadas para memória, assumindo que a operação de fusão está em dia com a carga de trabalho transacional. META DE FUSÃO - O CFP armazena as linhas de dados consolidadas do(s) CFP(s) identificadas pela política de fusão. Uma vez instalada a fusão, o MERGE TARGET transita para o estado ATIVO. FONTE MERGED - Uma vez instalada a operação de merge, os CFPs de origem são marcados como MERGED SOURCE. Note-se que o avaliador de políticas de fusão pode identificar múltiplas fusões, mas um CFP só pode participar numa operação de fusão. NECESSÁRIO PARA BACKUP/HA - Uma vez instalada a fusão e o MERGE TARGET CFP faz parte do Durable Checkpoint, os CFPs da fonte de merge transitam para este estado. Os CFPs neste estado são necessários para a correção operacional da base de dados com tabela otimizada para memória. Por exemplo, recuperar de um ponto de controlo durável para voltar atrás no tempo. Um CFP pode ser marcado para recolha de lixo assim que o ponto de truncamento log ultrapassa o seu intervalo de transações. EM TRANSIÇÃO PARA TOMBSTONE - Estas CFPs não são necessárias pelo motor OLTP In-Memory e podem ser recolhidas em lixo. Este estado indica que estes CFPs estão à espera que o thread de fundo os faça a transição para o estado seguinte, que é o TOMBSTONE. TOMBSTONE - Estes CFPs estão à espera de serem recolhidos pelo coletor de lixo do filestream. (sp_filestream_force_garbage_collection (Transact-SQL)) |
| lower_bound_tsn | bigint | O limite inferior das transações contidas no ficheiro.
NULL se a coluna de estado for diferente de 2, 3 ou 4. |
| upper_bound_tsn | bigint | O limite superior das transações contidas no ficheiro.
NULL se a coluna de estado for diferente de 2, 3 ou 4. |
| last_backup_page_count | int | Contagem lógica de páginas que é determinada na última cópia de segurança. Aplica-se quando a coluna de estado está definida para 2, 3, 4 ou 5.
NULL se a contagem de páginas não for conhecida. |
| delta_watermark_tsn | int | A transação do último ponto de controlo que escreveu neste ficheiro delta. Esta é a marca de água para o ficheiro delta. |
| last_checkpoint_recovery_lsn | nvarchar(23) | Número de sequência do registo de recuperação do último ponto de controlo que ainda precisa do ficheiro. |
| tombstone_operation_lsn | nvarchar(23) | O ficheiro será apagado assim que o tombstone_operation_lsn ficar atrás do número de sequência do troncamento logarítmico. |
| logical_deletion_log_block_id | bigint | Aplica-se apenas ao estado 5. |
Permissions
Requer permissão VIEW DATABASE STATE no banco de dados.
Permissões para SQL Server 2022 e posterior
É necessária a permissão VIEW DATABASE PERFORMANCE STATE no banco de dados.
Casos de uso
Pode estimar o armazenamento total utilizado por In-Memory OLTP da seguinte forma:
-- total storage used by In-Memory OLTP
SELECT SUM (file_size_in_bytes)/(1024*1024) as file_size_in_MB
FROM sys.dm_db_xtp_checkpoint_files;
Para ver uma divisão da utilização do armazenamento por estado e tipo de ficheiro, execute a seguinte consulta:
SELECT state_desc
, file_type_desc
, COUNT(*) AS [count]
, SUM(file_size_in_bytes) / 1024 / 1024 AS [on-disk size MB]
FROM sys.dm_db_xtp_checkpoint_files
GROUP BY state, state_desc, file_type, file_type_desc
ORDER BY state, file_type;
Conteúdo relacionado
- Introdução às tabelas Memory-Optimized
- Memory-Optimized Vistas de Gestão Dinâmica da Tabela
- In-Memory Visão Geral e Cenários de Utilização OLTP
- Otimizar o desempenho usando tecnologias na memória no Banco de Dados SQL do Azure
- Otimizar o desempenho usando tecnologias na memória no Azure SQL Managed Instance