Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 1141|Antwoord: 1

[Bron] Geheugengeoptimaliseerde tabellen voor SQL SERVER-databases

[Link kopiëren]
Geplaatst op 2025-5-10 21:28:18 | | | |
Introductie tot geheugen-geoptimaliseerde tabellen

Geheugen-geoptimaliseerde tabellen zijn tabellen die zijn gemaakt met CREATE TABLE (Transact-SQL).

Standaard zijn geheugen-geoptimaliseerde tabellen volledig persistent. Net als transacties op (traditionele) schijfgebaseerde tabellen zijn transacties op geheugengeoptimaliseerde tabellen volledig atomair, consistent, geïsoleerd en persistent (ACID). Geheugen-geoptimaliseerde tabellen en native gecompileerde stored procedures ondersteunen slechts een subset van Transact-SQL-functies.

Vanaf SQL Server 2016 en in Azure SQL Database zijn er geen beperkingen meer op in-memory OLTP-specifieke rangering of codepagina's.

Het primaire geheugen van een geheugengeoptimaliseerde tabel is het primaire geheugen. Lees rijen uit de tabel uit het geheugen en schrijf die rijen in het geheugen. Een andere kopie van de tabelgegevens wordt op de schijf bijgehouden, maar alleen voor persistentiedoeleinden. Voor meer informatie over persistente tabellen, zie Create and manage storage of objects for memory optimization. Data in geheugengeoptimaliseerde tabellen wordt alleen van de schijf gelezen tijdens databaseherstel (bijvoorbeeld na een herstart van de server).

Voor grotere prestatieverbeteringen ondersteunt in-memory OLTP persistente tabellen met transactionele persistente latentie. Vertraagde persistente transacties worden kort na het uitvoeren van de transactie op de schijf opgeslagen en de controle wordt teruggegeven aan de client. In ruil voor verbeterde prestaties gaan gecommitteerde transacties die niet op de schijf worden opgeslagen verloren bij een servercrash of failover.

Naast de standaard persistente geheugen-geoptimaliseerde tabellen ondersteunt SQL Server niet-opgenomen, niet-persistent geheugen-geoptimaliseerde tabellen, en hun gegevens worden niet op de schijf opgeslagen. Dit betekent dat transacties op deze tabellen geen schijf-IO vereisen, maar als er een serverstoring of failover optreedt, gaat de data verloren.

OLTP integreert in het geheugen met SQL Server om een naadloze ervaring te bieden op alle aspecten zoals ontwikkeling, implementatie, beheerbaarheid en ondersteuning. Een database kan zowel objecten in het geheugen als schijfgebaseerde objecten bevatten.

De rijen in de geheugengeoptimaliseerde tabel zijn versiegebonden. Dit betekent dat elke rij in de tabel meerdere versies kan hebben. Alle rijversies worden beheerd in dezelfde tabeldatastructuur. Rijversiebeheer wordt gebruikt om gelijktijdige lees- en schrijfacties naar dezelfde rij mogelijk te maken. Voor meer informatie over gelijktijdige lees- en schrijfopdrachten naar dezelfde rij, zie Dingen in de Geheugenoptimalisatietabel.

Ongeveer stappen en beperkingen van het gebruik

Stappen:

(1) Maak een database aan en MEMORY_OPTIMIZED_DATA bestandsgroep (database toevoegen bestandgroep, elke database kan maar één MEMORY_OPTIMIZED_DATA bestandsgroep hebben!!) )
(2) Voeg een map toe aan de bestandsgroep om de databestanden op te slaan (maak deze map alsjeblieft niet van tevoren aan, gebruik alter database add file() to filegroup)
(3) Maak persistente/niet-persistente geheugen-geoptimaliseerde tabellen aan (SQL Server 2014 wordt standaard gepersisteerd), en je moet ook een primaire sleutel definiëren op basis van een niet-geaggregeerde hashindex. Hashed indexes zijn het enige ondersteunde indextype in geheugengeoptimaliseerde tabellen.
(4) Gebruik lokaal gecompileerde opgeslagen procedures: Geheugen-geoptimaliseerde tabellen ondersteunen lokaal gecompileerde opgeslagen procedures, zolang deze procedures alleen naar geheugen-geoptimaliseerde tabellen verwijzen.

Grens:

(1) De geheugengeoptimaliseerde tabel moet onder de database worden geplaatst met de CONTAINS MEMORY_OPTIMIZED_DATA bestandsgroep.
(2) De geheugengeoptimaliseerde tabel moet een primaire sleutel definiëren op basis van een niet-geaggregeerde hashindex, en de tabel moet worden gedefinieerdVreemde sleutel- of constraintcontrole wordt niet ondersteund
(3) De geheugenoptimalisatietabel moet voldoende geheugen hebben, anders zullen operaties zoals het invoegen van updates mislukken.
(4) SQL Server 2014 heeft veel beperkingen op deze tabellen. Bijvoorbeeld, ze ondersteunen geen vreemde sleutels of constraint checking (wat vergelijkbaar aanvoelt met MySQL's geheugen-opslagengine), zeIDENTITY-velden of DML-triggers worden ook niet ondersteund

Gebruik de tutorial

De databaseversies zijn als volgt:

Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64)
        25 sep 2024 17:34:41
        Copyright (C) 2022 Microsoft Corporation
        Enterprise Edition: Core-based Licensing (64-bit) op Linux (Ubuntu 22.04.4 LTS) <X64>

Maak eerst een database- en bestandsgroep aan met het volgende commando:

Als je geen geheugengeoptimaliseerde groep aanmaakt, wordt er een foutmelding gemeld wanneer je een geheugengeoptimaliseerde tabel maakt:Kan geheugengeoptimaliseerde tabellen niet maken. Om geheugengeoptimaliseerde tabellen te maken, moet de database een online MEMORY_OPTIMIZED_FILEGROUP hebben die ten minste één container bevat.

Maak twee geheugengeoptimaliseerde tabellen aan om te testen, één persistent en één niet-persistent, met het volgende commando:

De geheugenoptimalisatietabel heeft twee opties (DUURZAAMHEID = SCHEMA_AND_DATA), (DUURZAAMHEID = SCHEMA_ONLY)
Duurzaamheidstafel: DUURZAAMHEID =SCHEMA_AND_DATA
Niet-persistente tabel: DUURZAAMHEID =SCHEMA_ONLY

Tests worden afzonderlijk in de geheugenoptimalisatietabel geplaatst100.000 artikelen(Eigenlijk 100002 items) data, is het commando als volgt:





Persistentie duurt 28 seconden om aan te zetten en 1 seconde zonder persistentie

Referentie:

De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.




Vorig:Ik hou van recyclingsoftware voor inspecties van laptops
Volgend:De C# 8.0-syntaxis gebruikt index en bereik
 Huisbaas| Geplaatst op 2025-5-10 21:36:40 |
Een normale tabel voegt 100.000 stukjes data in en duurt 18 seconden om uit te voeren. Zoals hieronder getoond:



Script:
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com