Jämförelse av diskbaserad tabellagring och minnesoptimerad tabellagring

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Kategorier Diskbaserad tabell Beständig Minnesoptimerad Tabell
DDL Metadatainformation lagras i systemtabeller i databasens primära filgrupp och är tillgänglig via katalogvyer. Metadatainformation lagras i systemtabeller i databasens primära filgrupp och är tillgänglig via katalogvyer.
Struktur Rader lagras på 8 000 sidor. En sida lagrar endast rader från samma tabell. Rader lagras som enskilda rader. Det finns ingen sidstruktur. Två rader i rad i en datafil kan tillhöra olika minnesoptimerade tabeller.
Indexen Index lagras i en sidstruktur som liknar datarader. Endast indexdefinitionen sparas (inte indexrader). Index underhålls i minnet och återskapas när den minnesoptimerade tabellen läses in i minnet som en del av omstarten av en databas. Eftersom indexrader inte sparas görs ingen loggning för indexändringar.
DML-åtgärd Det första steget är att hitta sidan och sedan läsa in den i buffertpoolen.

Infoga
SQL Server infogar raden på sidan som redovisar radordning för grupperat index.

Ta bort
SQL Server letar upp den rad som ska tas bort på sidan och markerar den borttagen.

Update
SQL Server letar upp raden på sidan. Uppdateringen görs på plats för icke-nyckelkolumner. Nyckelkolumnsuppdateringen görs genom en borttagnings- och infogningsåtgärd.

När DML-åtgärden är klar skrivs de berörda sidorna till disken som en del av buffertpoolens princip, kontrollpunkt eller transaktionskommitté för minimalt loggade operationer. Både läs-/skrivåtgärder på sidor leder till onödig I/O.
Eftersom data finns i minnet görs DML-åtgärderna direkt i minnet för minnesoptimerade tabeller. Det finns en bakgrundstråd som läser loggposterna för minnesoptimerade tabeller och bevarar dem i data- och deltafiler. En uppdatering genererar en ny radversion. Men en uppdatering loggas som en borttagning följt av en infogning.
Datafragmentering Fragmentering genom datamanipulering leder till att data fragmenteras vilket resulterar i delvis fyllda sidor och att logiskt sammanhängande sidor inte är intill varandra på disken. Detta försämrar prestanda för dataåtkomst och kräver att du defragmenterar data. Minnesoptimerade data lagras inte på sidor, så det finns ingen datafragmentering. Men eftersom rader uppdateras och tas bort måste data- och deltafilerna komprimeras. Detta görs av en bakgrunds-MERGE-tråd baserat på en sammanslagningsprincip.

Se även

Skapa och hantera lagring för minnesoptimerade objekt