Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók
Azure SQL Database
Azure SQL Managed Instance
SQL database in Microsoft Fabric
A felhasználó memóriaoptimalizált tábláinak tárolására használt minden belső memóriaoptimalizált tábla sorát tartalmazza. Minden felhasználói tábla egy vagy több belső táblának felel meg. A rendszer egyetlen táblát használ az alapvető adattároláshoz. További belső táblákat használnak olyan funkciók támogatásához, mint például az időbeli, oszlopcentrikus index és a soron kívüli (LOB) tárolás a memóriaoptimalizált táblákhoz.
| Oszlop név | Adattípus | Description |
|---|---|---|
| object_id | int | A felhasználói tábla azonosítója. A felhasználói táblákat támogató belső memóriaoptimalizált táblák (például a soron kívüli tárolás vagy a törölt sorok Hk/Columnstore kombinációk esetén) ugyanazzal a object_id rendelkeznek, mint a szülőjük. |
| xtp_object_id | bigint | In-Memory a felhasználói tábla támogatásához használt belső memóriaoptimalizált táblának megfelelő OLTP-objektumazonosítót. Az adatbázison belül egyedi, és az objektum élettartama alatt változhat. |
| típus | int | A belső táblázat típusa. 0 => DELETED_ROWS_TABLE 1 => USER_TABLE 2 => DICTIONARIES_TABLE 3 => SEGMENTS_TABLE 4 => ROW_GROUPS_INFO_TABLE 5 => BELSŐ OFF-ROW ADATTÁBLA 252 => INTERNAL_TEMPORAL_HISTORY_TABLE |
| leírás típusa | nvarchar(60) | A típus leírása DELETED_ROWS_TABLE –> Oszlopcentrikus index törölt sorainak belső táblakövetése USER_TABLE –> A soron belüli felhasználói adatokat tartalmazó táblázat DICTIONARIES_TABLE –> Oszlopcentrikus index szótárai SEGMENTS_TABLE –> Oszlopcentrikus index tömörített szegmensei ROW_GROUPS_INFO_TABLE –> Metaadatok egy oszlopcentrikus index tömörített sorcsoportjairól INTERNAL OFF-ROW DATA TABLE –> Egy soron kívüli oszlop tárolására használt belső tábla. Ebben az esetben minor_id tükrözi a column_id. INTERNAL_TEMPORAL_HISTORY_TABLE –> A lemezalapú előzménytábla gyakori elérésű farka. Az előzményekbe beszúrt sorok először ebbe a belső memóriaoptimalizált táblába lesznek beszúrva. Van egy háttérfeladat, amely aszinkron módon áthelyezi a sorokat ebből a belső táblából a lemezalapú előzménytáblába. |
| minor_id | int | A 0 egy felhasználót vagy egy belső táblát jelöl A non-0 egy soron kívül tárolt oszlop azonosítóját jelzi. A sys.columns column_id összekapcsolása. Minden soron kívül tárolt oszlopnak van egy megfelelő sora ebben a rendszernézetben. |
Permissions
A katalógusnézetekben a metaadatok láthatósága olyan biztonságos adatokra korlátozódik, amelyek egy felhasználó tulajdonában vannak, vagy amelyeken a felhasználó engedélyt kapott. További információ: Metaadatok láthatóságának konfigurációja.
Példák
A. A soron kívül tárolt összes oszlop visszaadása
A következő T-SQL-szkript egy táblát mutat be, amely több nagy, nem LOB oszlopot és egyetlen LOB oszlopot tartalmaz:
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
Az alábbi lekérdezés a soron kívül tárolt összes oszlopot és azok méretét jeleníti meg. A -1 mérete egy LOB oszlopot jelöl. A rendszer minden LOB-oszlopot soron kívül tárol.
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. A soron kívül tárolt összes oszlop memóriahasználatának visszaadása
A soron kívüli oszlopok memóriahasználatával kapcsolatos további információkért használja az alábbi lekérdezést, amely a soron kívüli oszlopok tárolására használt összes belső tábla és index memóriahasználatát mutatja be:
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. Az oszlopcentrikus indexek memóriahasználatának visszaadása memóriaoptimalizált táblákon
A következő lekérdezés használatával megjelenítheti az oszlopcentrikus indexek memóriahasználatát a memóriaoptimalizált táblákon:
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;
A következő lekérdezésben bontsa le a memóriahasználatot a memóriaoptimalizált táblák oszlopcentrikus indexeihez használt belső struktúrák között:
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)