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
Az aktuális sorcsoportszintű információkat nyújt az aktuális adatbázis összes oszlopcentrikus indexéről.
Ez a DMV kibővíti a katalógusnézetet sys.column_store_row_groups.
| Oszlop név | Adattípus | Description |
|---|---|---|
object_id |
int | A mögöttes tábla azonosítója. |
index_id |
int | Az oszlopcentrikus index azonosítója a táblában object_id . |
partition_number |
int | Az azt tartalmazó row_group_idtáblapartíció azonosítója. A partition_number használatával csatlakozhat ehhez a DMV-hez sys.partitions |
row_group_id |
int | A sorcsoport azonosítója. Particionált táblák esetén az érték a partíción belül egyedi.-1 memóriabeli farok számára. |
delta_store_hobt_id |
bigint | A deltatároló sorcsoportjának hobt_id.NULL ha a sorcsoport nincs a deltatárolóban.NULL memóriabeli táblázat farkához. |
state |
tinyint | Társított state_descriptionazonosítószám.0 = INVISIBLE1= OPEN2 = CLOSED3 = COMPRESSED4 = TOMBSTONECOMPRESSED az egyetlen állapot, amely a memóriában lévő táblákra vonatkozik. |
state_desc |
nvarchar(60) | A sorcsoport állapotának leírása:0
-
INVISIBLE - Folyamatban lévő sorcsoport. Például:Az oszloptár INVISIBLE sorcsoportja az adatok tömörítése közben van. Amikor a tömörítés befejeződik, a metaadat-kapcsoló az oszloptár sorcsoportjának állapotát a helyről INVISIBLE a másikra COMPRESSEDmódosítja, a deltastore sorcsoport állapotát pedig a helyről CLOSED a másikra TOMBSTONE.1
-
OPEN - Új sorokat elfogadó deltastore sorcsoport. A megnyitott sorcsoportok továbbra is sortár formátumúak, és nem lettek oszlopcentrikus formátumba tömörítve.2
-
CLOSED - A delta áruházban található sorcsoport, amely a sorok maximális számát tartalmazza, és arra vár, hogy a rekordátállítási folyamat tömörítse azt az oszloptárba.3
-
COMPRESSED - Oszlopcentrikus tömörítéssel tömörített és az oszloptárban tárolt sorcsoport.4
-
TOMBSTONE - Olyan sorcsoport, amely korábban a deltastore-ban volt, és már nincs használatban. |
total_rows |
bigint | A sorcsoportban fizikailag tárolt sorok száma. Tömörített sorcsoportok esetén. Tartalmazza a töröltként megjelölt sorokat. |
deleted_rows |
bigint | A törlésre megjelölt tömörített sorcsoportban fizikailag tárolt sorok száma.0 a deltatárolóban lévő sorcsoportok esetében.Nemclustered columnstore indexek esetén ez az érték nem tartalmazza a törlési pufferben tárolt törölt sorokat. További információ, valamint a törölt sorok számának megkeresése a törlési pufferben: sys.internal_partitions. |
size_in_bytes |
bigint | A sorcsoport összes lapjának együttes mérete bájtban. Ez a méret nem tartalmazza a metaadatok vagy megosztott szótárak tárolásához szükséges méretet. |
trim_reason |
tinyint | Ennek oka, hogy a COMPRESSED sorcsoport a sorok maximális számánál kevesebbet tartalmazott.0 - UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION1 - NO_TRIM2 - BULKLOAD3 - REORG4 - DICTIONARY_SIZE5 - MEMORY_LIMITATION6 - RESIDUAL_ROW_GROUP7 - STATS_MISMATCH8 - SPILLOVER9 - AUTO_MERGE |
trim_reason_desc |
nvarchar(60) | A .trim_reason0
-
UNKNOWN_UPGRADED_FROM_PREVIOUS_VERSION: Az SQL Server korábbi verziójáról való frissítéskor történt.1
-
NO_TRIM: A sorcsoport nem lett levágva. A sorcsoport tömörítése legfeljebb 1 048 576 sorból állt. A sorok száma kisebb lehet, ha a sorok egy részhalmazát törölték a delta sorcsoport bezárása után2
-
BULKLOAD: A tömeges terhelésű köteg mérete korlátozta a sorok számát.3
-
REORG: Kényszerített tömörítés a REORG parancs részeként.4
-
DICTIONARY_SIZE: A szótár mérete túl nagy lett ahhoz, hogy az összes sort összenyomja.5
-
MEMORY_LIMITATION: Nincs elegendő memória az összes sor összenyomásához.6
-
RESIDUAL_ROW_GROUP: Az utolsó sorcsoport részeként bezárva, 1 millió sortal < az index összeállítása során.Megjegyzés: A több magból álló partíciók több ilyen típusú vágást is eredményezhetnek. 7
-
STATS_MISMATCH: Csak a memóriában lévő tábla oszlopcentrikus oszlopaihoz. Ha a statisztikák helytelenül jelezték >= 1 millió minősített sort a farokban, de kevesebbet találtunk, a tömörített sorcsoport 1 millió sorból <8
-
SPILLOVER: Csak a memóriában lévő tábla oszlopcentrikus oszlopaihoz. Ha a tail 1 millió minősített sorból áll > , a rendszer az utolsó köteg fennmaradó sorait tömöríti, ha a darabszám 100 000 és 1 millió között van9
-
AUTO_MERGE: A háttérben futó Tuple Mover egyesítési művelet egy vagy több sorcsoportot összevont ebbe a sorcsoportba. |
transition_to_compressed_state |
tinyint | Azt mutatja be, hogy ez a sorcsoport hogyan lett áthelyezve a deltastore-ból egy tömörített állapotba az oszloptárban.1 - NOT_APPLICABLE2 - INDEX_BUILD3 - TUPLE_MOVER4 - REORG_NORMAL5 - REORG_FORCED6 - BULKLOAD7 - MERGE |
transition_to_compressed_state_desc |
nvarchar(60) |
1
-
NOT_APPLICABLE - a művelet nem vonatkozik a deltastore-ra. Vagy a sorcsoport tömörítése az SQL Server 2016-ra (13.x) való frissítés előtt történt, ebben az esetben az előzmények nem maradnak meg.2
-
INDEX_BUILD – Egy index létrehozása vagy újraépítése tömörítette a sorcsoportot.3
-
TUPLE_MOVER - A háttérben futó mozgató mozgató tömörítette a sorcsoportot. A rekord mozgatása azután történik, hogy a sorcsoport állapota OPEN a következőre CLOSEDváltozik: .4
-
REORG_NORMAL - Az átszervezési művelet ALTER INDEX ... REORGáthelyezte a CLOSED sorcsoportot a deltastore-ból az oszloptárba. Ez azelőtt történt, hogy a mozgatónak volt ideje áthelyezni a sorcsoportot.5
-
REORG_FORCED - Ez a sorcsoport nyitva volt a deltastore-ban, és az oszloptárba kényszerítették, mielőtt teljes számú sora lett volna.6
-
BULKLOAD - Egy tömeges terhelésű művelet közvetlenül tömörítette a sorcsoportot a deltastore használata nélkül.7
-
MERGE – Egy egyesítési művelet egy vagy több sorcsoportot konszolidált ebbe a sorcsoportba, majd végrehajtotta az oszlopcentrikus tömörítést. |
has_vertipaq_optimization |
bit | A VertiPaq optimalizálása javítja az oszlopcentrikus tömörítést a sorcsoport sorainak sorrendjének átrendezésével a nagyobb tömörítés érdekében. Ez az optimalizálás a legtöbb esetben automatikusan megtörténik. A VertiPaq-optimalizálás két esetben nem használható: a. amikor egy delta sorcsoport az oszloptárba kerül, és az oszlopcentrikus indexen egy vagy több nemclustered index található – ebben az esetben a VertiPaq optimalizálása kihagyva a leképezési index módosításainak minimalizálása érdekében; b. a memóriaoptimalizált táblák oszlopcentrikus indexeihez. 0 = Nem1 = Igen |
generation |
bigint | Ezzel a sorcsoporttal társított sorcsoport létrehozása. |
created_time |
datetime2 | A sorcsoport létrehozásának óraideje.NULL - egy memóriabeli táblában lévő oszlopcentrikus indexhez. |
closed_time |
datetime2 | A sorcsoport bezárásának óraideje.NULL - egy memóriabeli táblában lévő oszlopcentrikus indexhez. |
Results
Az aktuális adatbázis minden egyes sorcsoportjának egy sorát adja vissza.
Permissions
CONTROL engedélyt igényel a táblában, és VIEW DATABASE STATE engedélyt az adatbázisban.
Engedélyek az SQL Server 2022-hez és újabb verziókhoz
Az adatbázishoz VIEW DATABASE PERFORMANCE STATE engedély szükséges.
Examples
A. Töredezettség kiszámítása annak eldöntéséhez, hogy mikor kell újrarendezni vagy újraépíteni egy oszlopcentrikus indexet
Oszlopcentrikus indexek esetén a törölt sorok százalékos aránya jó mérték a sorcsoport töredezettségének. Ha a töredezettség 20% vagy több, távolítsa el a törölt sorokat. További példákért lásd: Indexkarbantartás optimalizálása a lekérdezési teljesítmény javítása és az erőforrás-felhasználás csökkentése érdekében.
Ez a példa más rendszertáblákkal csatlakozik sys.dm_db_column_store_row_group_physical_stats , majd kiszámítja az Fragmentation oszlopot az aktuális adatbázis egyes sorcsoportjainak hatékonyságának becsléseként. Ha egyetlen tábláról szeretne információt keresni, távolítsa el a megjegyzésjeleket a WHERE záradék előtt, és adjon meg egy táblanevet.
SELECT i.object_id,
object_name(i.object_id) AS TableName,
i.name AS IndexName,
i.index_id,
i.type_desc,
CSRowGroups.*,
100 * (ISNULL(deleted_rows, 0)) / NULLIF (total_rows, 0) AS 'Fragmentation'
FROM sys.indexes AS i
INNER JOIN sys.dm_db_column_store_row_group_physical_stats AS CSRowGroups
ON i.object_id = CSRowGroups.object_id
AND i.index_id = CSRowGroups.index_id
-- WHERE object_name(i.object_id) = 'table_name'
ORDER BY object_name(i.object_id), i.name, row_group_id;