Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: SQL Server 2016 (13.x) en latere versies
van Azure SQL Database
Azure SQL Managed Instance
Bevat een rij voor elke interne, door geheugen geoptimaliseerde tabel die wordt gebruikt voor het opslaan van tabellen die zijn geoptimaliseerd voor gebruikersgeheugen. Elke gebruikerstabel komt overeen met een of meer interne tabellen. Er wordt één tabel gebruikt voor de kerngegevensopslag. Aanvullende interne tabellen worden gebruikt ter ondersteuning van functies zoals tijdelijke, columnstore-index en LOB-opslag (off-row) voor tabellen die zijn geoptimaliseerd voor geheugen.
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
| object_id | int | Id van de gebruikerstabel. Voor intern geheugen geoptimaliseerde tabellen die bestaan ter ondersteuning van een gebruikerstabel (zoals opslag buiten rij of verwijderde rijen in het geval van combinaties van Hk/Columnstore) hebben dezelfde object_id als de bovenliggende tabel. |
| xtp_object_id | bigint | In-Memory OLTP-object-id die overeenkomt met de tabel die is geoptimaliseerd voor intern geheugen die wordt gebruikt ter ondersteuning van de gebruikerstabel. Deze is uniek in de database en kan gedurende de levensduur van het object worden gewijzigd. |
| type | int | Type interne tabel. 0 => DELETED_ROWS_TABLE 1 => USER_TABLE 2 => DICTIONARIES_TABLE 3 => SEGMENTS_TABLE 4 => ROW_GROUPS_INFO_TABLE 5 => INTERNE OFF-ROW GEGEVENSTABEL 252 => INTERNAL_TEMPORAL_HISTORY_TABLE |
| type_beschrijving | nvarchar(60) | Beschrijving van het type DELETED_ROWS_TABLE -> Interne rijen voor het bijhouden van verwijderde rijen voor een columnstore-index USER_TABLE -> Tabel met de gebruikersgegevens in de rij DICTIONARIES_TABLE -> Woordenlijsten voor een columnstore-index SEGMENTS_TABLE -> Gecomprimeerde segmenten voor een columnstore-index ROW_GROUPS_INFO_TABLE -> Metagegevens over gecomprimeerde rijgroepen van een columnstore-index INTERNAL OFF-ROW DATA TABLE -> Interne tabel die wordt gebruikt voor opslag van een kolom buiten de rij. In dit geval weerspiegelt minor_id de column_id. INTERNAL_TEMPORAL_HISTORY_TABLE -> Hot tail van de geschiedenistabel op basis van schijven. Rijen die in de geschiedenis zijn ingevoegd, worden eerst ingevoegd in deze interne tabel die is geoptimaliseerd voor geheugen. Er is een achtergrondtaak die asynchroon rijen van deze interne tabel verplaatst naar de geschiedenistabel op basis van de schijf. |
| minor_id | int | 0 geeft een gebruiker of interne tabel aan Niet-0 geeft de id aan van een kolom die buiten de rij is opgeslagen. Wordt samengevoegd met column_id in sys.columns. Elke kolom die buiten de rij is opgeslagen, heeft een bijbehorende rij in deze systeemweergave. |
Permissions
De zichtbaarheid van de metagegevens in catalogusweergaven is beperkt tot beveiligbare items waarvan een gebruiker eigenaar is of waarvoor de gebruiker een bepaalde machtiging heeft gekregen. Zie Zichtbaarheidsconfiguratie voor metagegevensvoor meer informatie.
Voorbeelden
Eén. Alle kolommen retourneren die buiten de rij zijn opgeslagen
Het volgende T-SQL-script illustreert een tabel met meerdere grote niet-LOB-kolommen en één LOB-kolom:
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
In de volgende query ziet u alle kolommen die buiten de rij zijn opgeslagen, samen met hun grootte. Een grootte van -1 geeft een LOB-kolom aan. Alle LOB-kolommen worden buiten de rij opgeslagen.
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. Geheugenverbruik retourneren van alle kolommen die buiten de rij zijn opgeslagen
Voor meer informatie over het geheugenverbruik van kolommen buiten rij kunt u de volgende query gebruiken, waarin het geheugenverbruik van alle interne tabellen en de bijbehorende indexen wordt weergegeven voor het opslaan van de kolommen buiten rij:
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. Geheugenverbruik van columnstore-indexen retourneren voor tabellen die zijn geoptimaliseerd voor geheugen
Gebruik de volgende query om het geheugenverbruik van columnstore-indexen weer te geven voor tabellen die zijn geoptimaliseerd voor geheugen:
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;
Gebruik de volgende query om het geheugenverbruik op te splitsen in interne structuren die worden gebruikt voor columnstore-indexen in tabellen die zijn geoptimaliseerd voor geheugen:
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)