Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na: SQL Server 2016 (13.x) a novější verze
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric
Obsahuje řádek pro každou interní tabulku optimalizovanou pro paměť, která se používá k ukládání tabulek optimalizovaných pro uživatele. Každá tabulka uživatelů odpovídá jedné nebo více interním tabulkám. Jedna tabulka se používá pro základní úložiště dat. Další interní tabulky se používají k podpoře funkcí, jako jsou dočasné, index columnstore a úložiště mimo řádek (LOB) pro tabulky optimalizované pro paměť.
| Název sloupce | Datový typ | Description |
|---|---|---|
| object_id | int | ID tabulky uživatele Interní tabulky optimalizované pro paměť, které existují, aby podporovaly uživatelskou tabulku (například úložiště mimo řádky nebo odstraněné řádky v případě kombinací Hk/Columnstore), mají stejné object_id jako jejich nadřazený objekt. |
| xtp_object_id | bigint | In-Memory ID objektu OLTP odpovídající interní tabulce optimalizované pro paměť, která se používá k podpoře tabulky uživatele. Je jedinečný v rámci databáze a může se v průběhu životnosti objektu změnit. |
| typ | int | Typ interní tabulky. 0 => DELETED_ROWS_TABLE 1 => USER_TABLE 2 => DICTIONARIES_TABLE 3 => SEGMENTS_TABLE 4 => ROW_GROUPS_INFO_TABLE 5 => INTERNÍ OFF-ROW TABULKA DAT 252 => INTERNAL_TEMPORAL_HISTORY_TABLE |
| type_desc | nvarchar(60) | Popis typu DELETED_ROWS_TABLE –> interní tabulka sledující odstraněné řádky pro index columnstore USER_TABLE –> tabulka obsahující uživatelská data v řádku DICTIONARIES_TABLE –> Slovníky pro index columnstore SEGMENTS_TABLE –> komprimované segmenty indexu columnstore ROW_GROUPS_INFO_TABLE –> metadata o komprimovaných skupinách řádků indexu columnstore INTERNÍ OFF-ROW TABULKA DAT –> interní tabulka použitá pro ukládání sloupce mimo řádek. V tomto případě minor_id odráží column_id. INTERNAL_TEMPORAL_HISTORY_TABLE –> hot tail of the disk-based history table. Řádky vložené do historie se nejprve vloží do této interní tabulky optimalizované pro paměť. Existuje úloha na pozadí, která asynchronně přesouvá řádky z této interní tabulky do tabulky historie založené na disku. |
| minor_id | int | 0 označuje uživatele nebo interní tabulku. Ne-0 označuje ID sloupce uloženého mimo řádek. Spojí se s column_id ve sloupcích sys.columns. Každý sloupec uložený mimo řádek má v tomto zobrazení systému odpovídající řádek. |
Povolení
Viditelnost metadat v zobrazeních katalogu je omezena na položky, které uživatel vlastní, nebo na které má uživatel udělené určité oprávnění. Další informace naleznete v kapitole Konfigurace viditelnosti metadat.
Examples
A. Vrácení všech sloupců uložených mimo řádek
Následující skript T-SQL znázorňuje tabulku s několika velkými sloupci, které nejsou lob, a jedním sloupcem LOB:
CREATE TABLE dbo.LargeTableSample
(
Id int IDENTITY PRIMARY KEY NONCLUSTERED,
C1 nvarchar(4000),
C2 nvarchar(4000),
C3 nvarchar(4000),
C4 nvarchar(4000),
Misc nvarchar(max)
) WITH (MEMORY_OPTIMIZED = ON);
GO
Následující dotaz zobrazuje všechny sloupce, které jsou uložené mimo řádek spolu s jejich velikostmi. Velikost -1 označuje sloupec LOB. Všechny obchodní sloupce se ukládají mimo řádek.
SELECT
QUOTENAME(SCHEMA_NAME(o.schema_id)) + N'.' + QUOTENAME(OBJECT_NAME(moa.object_id)) AS 'table',
c.name AS 'column',
c.max_length
FROM sys.memory_optimized_tables_internal_attributes moa
JOIN sys.columns c ON moa.object_id = c.object_id AND moa.minor_id=c.column_id
JOIN sys.objects o on moa.object_id=o.object_id
WHERE moa.type=5;
B. Vrácení spotřeby paměti všech sloupců uložených mimo řádek
Pokud chcete získat další podrobnosti o spotřebě paměti sloupců mimo řádek, můžete použít následující dotaz, který zobrazuje spotřebu paměti všech interních tabulek a jejich indexů, které se používají k ukládání sloupců mimo řádek:
SELECT
QUOTENAME(SCHEMA_NAME(o.schema_id)) + N'.' + QUOTENAME(OBJECT_NAME(moa.object_id)) AS 'table',
c.name AS 'column',
c.max_length,
mc.memory_consumer_desc,
mc.index_id,
mc.allocated_bytes,
mc.used_bytes
FROM sys.memory_optimized_tables_internal_attributes moa
JOIN sys.columns c ON moa.object_id = c.object_id AND moa.minor_id=c.column_id
JOIN sys.dm_db_xtp_memory_consumers mc ON moa.xtp_object_id=mc.xtp_object_id
JOIN sys.objects o on moa.object_id=o.object_id
WHERE moa.type=5;
C. Vrácení spotřeby paměti indexů columnstore v tabulkách optimalizovaných pro paměť
Pomocí následujícího dotazu zobrazte spotřebu paměti indexů columnstore v tabulkách optimalizovaných pro paměť:
SELECT
QUOTENAME(SCHEMA_NAME(o.schema_id)) + N'.' + QUOTENAME(OBJECT_NAME(moa.object_id)) AS 'table',
i.name AS 'columnstore index',
SUM(mc.allocated_bytes) / 1024 as [allocated_kb],
SUM(mc.used_bytes) / 1024 as [used_kb]
FROM sys.memory_optimized_tables_internal_attributes moa
JOIN sys.indexes i ON moa.object_id = i.object_id AND i.type in (5,6)
JOIN sys.dm_db_xtp_memory_consumers mc ON moa.xtp_object_id=mc.xtp_object_id
JOIN sys.objects o on moa.object_id=o.object_id
WHERE moa.type IN (0, 2, 3, 4)
GROUP BY o.schema_id, moa.object_id, i.name;
Pomocí následujícího dotazu rozdělte spotřebu paměti napříč interními strukturami používanými pro indexy columnstore v tabulkách optimalizovaných pro paměť:
SELECT
QUOTENAME(SCHEMA_NAME(o.schema_id)) + N'.' + QUOTENAME(OBJECT_NAME(moa.object_id)) AS 'table',
i.name AS 'columnstore index',
moa.type_desc AS 'internal table',
mc.index_id AS 'index',
mc.memory_consumer_desc,
mc.allocated_bytes / 1024 as [allocated_kb],
mc.used_bytes / 1024 as [used_kb]
FROM sys.memory_optimized_tables_internal_attributes moa
JOIN sys.indexes i ON moa.object_id = i.object_id AND i.type in (5,6)
JOIN sys.dm_db_xtp_memory_consumers mc ON moa.xtp_object_id=mc.xtp_object_id
JOIN sys.objects o on moa.object_id=o.object_id
WHERE moa.type IN (0, 2, 3, 4)