Delen via


De voor geheugen geoptimaliseerde bestandsgroep

Van toepassing op:SQL Server

Als u tabellen wilt maken die zijn geoptimaliseerd voor geheugen, moet u eerst een voor geheugen geoptimaliseerde bestandsgroep maken. De voor geheugen geoptimaliseerde bestandsgroep bevat een of meer containers. Elke container bevat gegevensbestanden of deltabestanden of beide.

Hoewel gegevensrijen uit SCHEMA_ONLY tabellen niet behouden blijven en de metagegevens voor tabellen die zijn geoptimaliseerd voor geheugen en systeemeigen gecompileerde opgeslagen procedures worden opgeslagen in de traditionele catalogi, vereist de In-Memory OLTP-engine nog steeds een door geheugen geoptimaliseerde bestandsgroep voor tabellen die zijn geoptimaliseerd voor SCHEMA_ONLY geheugen om een uniforme ervaring te bieden voor databases met tabellen die zijn geoptimaliseerd voor geheugen.

De voor geheugen geoptimaliseerde bestandsgroep is gebaseerd op de filestream-bestandsgroep, met de volgende verschillen:

  • U kunt slechts één voor geheugen geoptimaliseerde bestandsgroep per database maken. U moet de bestandsgroep expliciet markeren als zijnde met memory_optimized_data. U kunt de bestandsgroep maken wanneer u de database maakt of u kunt deze later toevoegen:

    ALTER DATABASE imoltp ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATA  
    
  • U moet een of meer containers toevoegen aan de MEMORY_OPTIMIZED_DATA bestandsgroep. Voorbeeld:

    ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='c:\data\imoltp_mod1') TO FILEGROUP imoltp_mod  
    
  • U hoeft filestream niet in te schakelen (FILESTREAM inschakelen en configureren) om een voor geheugen geoptimaliseerde bestandsgroep te maken. De toewijzing aan filestream gebeurt door de In-Memory OLTP-engine.

  • U kunt nieuwe containers toevoegen aan een voor geheugen geoptimaliseerde bestandsgroep. Mogelijk hebt u een nieuwe container nodig om de opslag uit te breiden die nodig is voor een tabel die is geoptimaliseerd voor duurzaam geheugen en om IO over meerdere containers te distribueren.

  • Gegevensverplaatsing met een voor geheugen geoptimaliseerde bestandsgroep is geoptimaliseerd in een AlwaysOn-beschikbaarheidsgroepconfiguratie. In tegenstelling tot filestream-bestanden die naar secundaire replica's worden verzonden, worden de controlepuntbestanden (zowel gegevens als delta) binnen de voor geheugen geoptimaliseerde bestandsgroep niet verzonden naar secundaire replica's. De gegevens- en deltabestanden worden samengesteld met behulp van het transactielogboek op de secundaire replica.

Opmerking

In SQL Server 2022 (16.x) en oudere versies kunt u, zodra u een door het geheugen geoptimaliseerde bestandsgroep gebruikt, deze alleen verwijderen door de database te verwijderen. U kunt een niet-lege container niet verwijderen of de laatste resterende container verwijderen, zelfs niet als deze leeg is. U kunt ook geen gegevens- en deltabestandsparen verplaatsen naar een andere container in de voor geheugen geoptimaliseerde bestandsgroep.

Vanaf SQL Server 2025 (17.x) Preview kunt u de laatste resterende container verwijderen en de voor geheugen geoptimaliseerde bestandsgroep verwijderen. Zie voor meer informatie het verwijderen van containers en bestandsgroepen die zijn geoptimaliseerd voor geheugen.

Een Memory-Optimized-bestandsgroep configureren

Overweeg om meerdere containers te maken in de door het geheugen geoptimaliseerde bestandsgroep en deze te distribueren op verschillende stations om meer bandbreedte te bereiken om de gegevens naar het geheugen te streamen.

In een scenario met meerdere containers en meerdere schijven worden gegevens en deltabestanden op een round-robin-stijl aan de containers toegewezen. Het eerste gegevensbestand wordt toegewezen vanuit de eerste container en het deltabestand wordt toegewezen vanuit de volgende container en dit toewijzingspatroon wordt herhaald. Met dit toewijzingsschema worden gegevens en deltabestanden gelijkmatig verdeeld over containers als u een oneven aantal stations hebt, elk toegewezen aan één container. Als u echter een even aantal stations hebt en elk aan een container is toegewezen, kan dit leiden tot ongebalanceerde opslag, waarbij gegevensbestanden aan oneven stations en deltabestanden aan even stations worden toegewezen. Als u een evenwichtige I/O-stroom voor herstel wilt verkrijgen, kunt u overwegen paren met gegevens- en deltabestanden op dezelfde spindels/opslag te plaatsen.

Bij het configureren van opslag moet u vrije schijfruimte opgeven die vier keer zo groot is als voor duurzaam geheugen geoptimaliseerde tabellen. Zorg er ook voor dat uw I/O-subsysteem de vereiste IOPS voor uw workload ondersteunt. Als gegevens- en deltabestandsparen worden gevuld bij een bepaald aantal IOPS, hebt u drie keer zo veel IOPS nodig om rekening te houden met opslag- en samenvoegoperaties. U kunt opslagcapaciteit en IOPS toevoegen door een of meer containers toe te voegen aan de voor geheugen geoptimaliseerde bestandsgroep.

Waarschuwing

Als er een MAXSIZE waarde is ingesteld voor de voor geheugen geoptimaliseerde bestandsgroep en de controlepuntbestanden de maximale grootte van de container overschrijden, zal de database als VERDACHT worden aangemerkt.
In dit geval wordt niet geprobeerd om de database OFFLINE en ONLINE in te stellen, waardoor de database in RECOVERY_PENDING status blijft.

Zie ook

Opslag maken en beheren voor Memory-Optimized objecten
databasebestanden en bestandsgroepen
Opties voor ALTER DATABASE-bestand en bestandsgroep (Transact-SQL)