sys.dm_db_xtp_memory_consumers (Transact-SQL)sys.dm_db_xtp_memory_consumers (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Notifica a los consumidores de memoria de nivel de base de datos en el motor de base de datos de OLTP en memoriaIn-Memory OLTP.Reports the database-level memory consumers in the OLTP en memoriaIn-Memory OLTP database engine. La vista devuelve una fila para cada consumidor de memoria que el motor de base de datos utiliza.The view returns a row for each memory consumer that the database engine uses. Use esta DMV para ver cómo se distribuye la memoria entre diferentes objetos internos.Use this DMV to see how the memory is distributed across different internal objects.

Para obtener más información, vea OLTP en memoria (optimización en memoria).For more information, see In-Memory OLTP (In-Memory Optimization).

Nombre de columnaColumn name Tipo de datosData type DescripciónDescription
memory_consumer_idmemory_consumer_id bigintbigint Identificador (interno) del consumidor de memoria.ID (internal) of the memory consumer.
memory_consumer_typememory_consumer_type intint Tipo de consumidor de memoria:The type of memory consumer:

0=Aggregation.0=Aggregation. (Agrega el uso de memoria de dos o varios consumidores.(Aggregates memory usage of two or more consumers. No se debe mostrar).It should not be displayed.)

2=VARHEAP (Hace un seguimiento del consumo de memoria para un montón de longitud variable).2=VARHEAP (Tracks memory consumption for a variable-length heap.)

3=HASH (Hace un seguimiento del consumo de memoria para un índice).3=HASH (Tracks memory consumption for an index.)

5=DB page pool (Hace un seguimiento del consumo de memoria para un grupo de páginas de base de datos para las operaciones en tiempo de ejecución.5=DB page pool (Tracks memory consumption for a database page pool used for runtime operations. Por ejemplo, variables de tabla y algunos recorridos serializables.For example, table variables and some serializable scans. Solo hay un consumidor de memoria de este tipo en cada base de datos).There is only one memory consumer of this type per database.)
memory_consumer_type_descmemory_consumer_type_desc nvarchar(64)nvarchar(64) Tipo de consumidor de memoria: VARHEAP, HASH o PGPOOL.Type of memory consumer: VARHEAP, HASH, or PGPOOL.

0 - (no debe mostrarse.)0 - (It should not be displayed.)

2: VARHEAP2 - VARHEAP

3 - HASH3 - HASH

5: PGPOOL5 - PGPOOL
memory_consumer_descmemory_consumer_desc nvarchar(64)nvarchar(64) Descripción de la instancia del consumidor de memoria:Description of the memory consumer instance:

VARHEAP:VARHEAP:
Montón de base de datos.Database heap. Se usa para asignar datos de usuario para una base de datos (filas).Used to allocate user data for a database (rows).
Montón del sistema de base de datos.Database System heap. Se usa para asignar datos de base de datos que se incluirán en volcados de memoria y no incluir datos de usuario.Used to allocate database data that will be included in memory dumps and do not include user data.
Montón de índice de intervalo.Range index heap. Montón privado que el índice de intervalo usa para asignar páginas BW.Private heap used by range index to allocate BW pages.

HASH: No hay ninguna descripción, ya que el object_id indica la tabla y el index_id el propio índice hash.HASH: No description since the object_id indicates the table and the index_id the hash index itself.

PGPOOL: Para la base de datos hay sólo una página grupo paginado de 64K de la base de datos.PGPOOL: For the database there is only one page pool Database 64K page pool.
object_idobject_id bigintbigint Identificador del objeto al que se atribuye la memoria asignada.The object ID to which the allocated memory is attributed. Un valor negativo para los objetos del sistema.A negative value for system objects.
xtp_object_idxtp_object_id bigintbigint El identificador de objeto para la tabla optimizada para memoria.The object ID for the memory-optimized table.
index_idindex_id intint El identificador de índice del consumidor (si existe).The index ID of the consumer (if any). NULL para las tablas base.NULL for base tables.
allocated_bytesallocated_bytes bigintbigint Número de bytes reservados para el consumidor.Number of bytes reserved for this consumer.
used_bytesused_bytes bigintbigint Bytes utilizados por el consumidor.Bytes used by this consumer. Solo se aplica a varheap.Applies only to varheap.
allocation_countallocation_count intint Número de asignaciones.Number of allocations.
partition_countpartition_count intint Exclusivamente para uso interno.Internal use only.
sizeclass_countsizeclass_count intint Exclusivamente para uso interno.Internal use only.
min_sizeclassmin_sizeclass intint Exclusivamente para uso interno.Internal use only.
max_sizeclassmax_sizeclass intint Exclusivamente para uso interno.Internal use only.
memory_consumer_addressmemory_consumer_address varbinaryvarbinary Dirección interna del consumidor.Internal address of the consumer. Exclusivamente para uso interno.For internal use only.
xtp_object_idxtp_object_id bigintbigint El identificador de objeto OLTP en memoria que corresponde a la tabla optimizada para memoria.The in-memory OLTP object ID that corresponds to the memory-optimized table.

ComentariosRemarks

En la salida, los asignadores en los niveles de base de datos hacen referencia a las tablas de usuario, los índices y las tablas del sistema.In the output, the allocators at database levels refer to user tables, indexes, and system tables. VARHEAP con object_id = NULL hace referencia en la memoria asignada a tablas con columnas de longitud variable.VARHEAP with object_id = NULL refers to memory allocated to tables with variable length columns.

PermisosPermissions

Se devuelven todas las filas si tiene el permiso VIEW DATABASE STATE en la base de datos actual.All rows are returned if you have VIEW DATABASE STATE permission on the current database. De lo contrario, se devuelve un conjunto de filas vacío.Otherwise, an empty rowset is returned.

Si no tiene permiso DATABASE STATE, todas las columnas se devolverán para las filas en las tablas en las que tenga el permiso SELECT.If you do not have VIEW DATABASE permission, all columns will be returned for rows in tables that you have SELECT permission on.

Las tablas del sistema solo se devuelven para los usuarios con el permiso VIEW DATABASE STATE.System tables are returned only for users with VIEW DATABASE STATE permission.

Notas generalesGeneral Remarks

Cuando una tabla optimizada para memoria tiene un índice de almacén de columnas, el sistema usa algunas tablas internas, que consumen algo de memoria, para realizar un seguimiento de datos para el índice de almacén de columnas.When a memory-optimized table has a columnstore index, the system uses some internal tables, which consume some memory, to track data for the columnstore index. Para obtener información detallada acerca de estas tablas internas y las consultas de ejemplo que muestra el consumo de memoria, consulte sys.memory_optimized_tables_internal_attributes (Transact-SQL).For details about these internal tables and sample queries showing their memory consumption see sys.memory_optimized_tables_internal_attributes (Transact-SQL).

EjemplosExamples

-- memory consumers (database level)  
SELECT OBJECT_NAME(object_id), *   
FROM sys.dm_db_xtp_memory_consumers;  

Escenario de usuarioUser Scenario

-- memory consumers (database level)  
  
select  convert(char(10), object_name(object_id)) as Name,   
convert(char(10),memory_consumer_type_desc ) as memory_consumer_type_desc, object_id,index_id, allocated_bytes,  used_bytes   
from sys.dm_db_xtp_memory_consumers  

Este es el resultado con un subconjunto de columnas.Here is the output with a subset of columns. Los asignadores en los niveles de base de datos hacen referencia a las tablas de usuario, los índices y las tablas del sistema.The allocators at database levels refer to user tables, indexes, and system tables. VARHEAP con object_id = NULL (última fila) hace referencia a la memoria asignada a las filas de datos de las tablas (en este ejemplo, es t1).The VARHEAP with object_id = NULL (last row) refers to memory allocated to data rows of the tables (in the example here, it is t1). Bytes asignados, cuando se convierten a MB, es 1340 MB.The allocated bytes, when converted to MB, is 1340MB.

Name       memory_consumer_type_desc object_id   index_id    allocated_bytes      used_bytes  
---------- ------------------------- ----------- ----------- -------------------- --------------------  
t3         HASH                      629577281   2           8388608              8388608  
t2         HASH                      597577167   2           8388608              8388608  
t1         HASH                      565577053   2           1048576              1048576  
NULL       HASH                      -6          1           2048                 2048  
NULL       VARHEAP                   -6          NULL        0                    0  
NULL       HASH                      -5          3           8192                 8192  
NULL       HASH                      -5          2           8192                 8192  
NULL       HASH                      -5          1           8192                 8192  
NULL       HASH                      -4          1           2048                 2048  
NULL       VARHEAP                   -4          NULL        0                    0  
NULL       HASH                      -3          1           2048                 2048  
NULL       HASH                      -2          2           8192                 8192  
NULL       HASH                      -2          1           8192                 8192  
NULL       VARHEAP                   -2          NULL        196608               26496  
NULL       HASH                      0           1           2048                 2048  
NULL       PGPOOL                    0           NULL        0                    0  
NULL       VARHEAP                   NULL        NULL        1405943808           1231220560  
  
(17 row(s) affected)  

Es igual que el nivel de objeto en la memoria total asignada y utilizada desde esta DMV sys.dm_db_xtp_table_memory_stats (Transact-SQL).The total memory allocated and used from this DMV is same as the object level in sys.dm_db_xtp_table_memory_stats (Transact-SQL).

select  sum(allocated_bytes)/(1024*1024) as total_allocated_MB,   
        sum(used_bytes)/(1024*1024) as total_used_MB  
from sys.dm_db_xtp_memory_consumers  
  
total_allocated_MB   total_used_MB  
-------------------- --------------------  
1358                 1191  

Vea tambiénSee Also

Vistas de administración dinámica de tabla optimizado para memoria (Transact-SQL)Memory-Optimized Table Dynamic Management Views (Transact-SQL)