Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Om du vill skapa minnesoptimerade tabeller måste du först skapa en minnesoptimerad filgrupp. Den minnesoptimerade filgruppen innehåller en eller flera containrar. Varje container innehåller datafiler eller deltafiler eller båda.
Även om datarader från SCHEMA_ONLY tabeller inte sparas och metadata för minnesoptimerade tabeller och inbyggda kompilerade lagrade procedurer lagras i de traditionella katalogerna, kräver den In-Memory OLTP-motorn fortfarande en minnesoptimerad filgrupp för minnesoptimerade tabeller för SCHEMA_ONLY att ge en enhetlig upplevelse för databaser med minnesoptimerade tabeller.
Den minnesoptimerade filgruppen baseras på filströmsfilgruppen med följande skillnader:
Du kan bara skapa en minnesoptimerad filgrupp per databas. Du måste uttryckligen markera filgruppen som innehåller memory_optimized_data. Du kan skapa filgruppen när du skapar databasen eller så kan du lägga till den senare:
ALTER DATABASE imoltp ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATADu måste lägga till en eller flera containrar i
MEMORY_OPTIMIZED_DATAfilgruppen. Till exempel:ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='c:\data\imoltp_mod1') TO FILEGROUP imoltp_modDu behöver inte aktivera filestream (Aktivera och konfigurera FILESTREAM) för att skapa en minnesoptimerad filgrupp. Mappningen till filströmmen görs av In-Memory OLTP-motorn.
Du kan lägga till nya containrar i en minnesoptimerad filgrupp. Du kan behöva en ny container för att utöka det lagringsutrymme som behövs för en beständig minnesoptimerad tabell och även för att distribuera I/O över flera containrar.
Dataflytt med en minnesoptimerad filgrupp optimeras i en Always On Availability Group-konfiguration. Till skillnad från filströmsfiler som skickas till sekundära repliker skickas inte kontrollpunktsfilerna (både data och delta) i den minnesoptimerade filgruppen till sekundära repliker. Data- och deltafilerna skapas med hjälp av transaktionsloggen på den sekundära repliken.
Anmärkning
När du använder en minnesoptimerad filgrupp i SQL Server 2022 (16.x) och äldre versioner kan du bara ta bort den genom att ta bort databasen. Du kan inte släppa en container som inte är tom eller släppa den sista återstående containern även om den är tom. Du kan inte heller flytta data och deltafilpar till en annan container i den minnesoptimerade filgruppen.
Från och med förhandsversionen av SQL Server 2025 (17.x) kan du ta bort den sista återstående containern och ta bort den minnesoptimerade filgruppen. Mer information finns i Minnesoptimerad container och borttagning av filgrupper.
Konfigurera en Memory-Optimized-filgrupp
Överväg att skapa flera containrar i den minnesoptimerade filgruppen och distribuera dem på olika enheter för att få mer bandbredd för att strömma data till minnet.
I ett scenario med flera containrar och flera enheter allokeras data och deltafiler i turordning till containrarna. Den första datafilen allokeras från den första containern och deltafilen allokeras från nästa container och det här allokeringsmönstret upprepas. Det här allokeringsschemat distribuerar data- och deltafiler jämnt mellan containrar om du har ett udda antal enheter, var och en mappad till en container. Men om du har ett jämnt antal enheter, var och en mappad till en container, kan det resultera i obalanserad lagring med datafiler mappade till udda enheter och deltafiler som mappats till jämna enheter. Om du vill få en balanserad ström av I/O vid återställning bör du överväga att placera par med data och deltafiler på samma spindlar/lagring.
När du konfigurerar lagring måste du tillhandahålla ledigt diskutrymme som är fyra gånger så stort som varaktiga minnesoptimerade tabeller. Se också till att ditt I/O-undersystem stöder nödvändig IOPS för din arbetsbelastning. Om data- och deltafilpar fylls i vid en viss IOPS behöver du tre gånger den IOPS för att hantera lagrings- och sammanslagningsoperationer. Du kan lägga till lagringskapacitet och IOPS genom att lägga till en eller flera containrar i den minnesoptimerade filgruppen.
Försiktighet
Om ett MAXSIZE värde anges för den minnesoptimerade filgruppen och kontrollpunktsfilerna överskrider containerns maximala storlek blir databasen MISSTÄNKT.
I detta fall ska du inte försöka sätta databasen OFFLINE och ONLINE, eftersom databasen då förblir i RECOVERY_PENDING.
Se även
Skapa och hantera lagring för Memory-Optimized objekt
databasfiler och filgrupper
ALTER DATABASE-fil- och filgruppsalternativ (Transact-SQL)