Introduktion til hukommelsesoptimerede tabeller
Hukommelsesoptimerede tabeller er tabeller, der er oprettet ved hjælp af CREATE TABLE (Transact-SQL).
Som standard er hukommelsesoptimerede tabeller fuldt persistente. Ligesom transaktioner på (traditionelle) diskbaserede tabeller er transaktioner på hukommelsesoptimerede tabeller fuldt atomare, konsistente, isolerede og persistente (ACID). Hukommelsesoptimerede tabeller og native kompilerede lagrede procedurer understøtter kun et delmængde af Transact-SQL-funktionerne.
Fra og med SQL Server 2016 og i Azure SQL Database er der ingen begrænsninger på OLTP-specifik sammenstilling eller kodesider i hukommelsen.
Den primære hukommelse i en hukommelsesoptimeret tabel er den primære hukommelse. Læs rækker fra tabellen fra hukommelsen og skriv dem til hukommelsen. En anden kopi af tabeldataene opbevares på disken, men kun til persistensformål. For mere information om persistente tabeller, se Opret og administrer lagring af objekter til hukommelsesoptimering. Data i hukommelsesoptimerede tabeller læses kun fra disk under databasegendannelse (for eksempel efter en servergenstart).
For større ydelsesgevinster understøtter OLTP i hukommelsen persistente tabeller med transaktionel persistent latenstid. Forsinkede vedvarende transaktioner gemmes på disken kort efter, at transaktionen er gennemført, og kontrollen returneres til klienten. Til gengæld for forbedret ydeevne går committede transaktioner, der ikke gemmes på disken, tabt i tilfælde af servernedbrud eller failover.
Ud over de standard persistente hukommelsesoptimerede tabeller understøtter SQL Server ikke-registrerede ikke-persistente hukommelsesoptimerede tabeller, og deres data lagres ikke på disken. Det betyder, at transaktioner på disse tabeller ikke kræver nogen disk-IO, men hvis der sker en serverfejl eller failover, går dataene tabt.
OLTP integreres i hukommelsen med SQL Server for at give en problemfri oplevelse på alle områder såsom udvikling, implementering, håndtering og support. En database kan indeholde både objekter i hukommelsen og diskbaserede objekter.
Rækkerne i den hukommelsesoptimerede tabel er versioneret. Det betyder, at hver række i tabellen kan have flere versioner. Alle rækkeversioner vedligeholdes i den samme tabel-datastruktur. Rækkeversionering bruges til at muliggøre samtidige læsninger og skrivninger til samme række. For mere information om samtidige læsninger og skrivninger til samme række, se Ting i Memory Optimization Table.
Omtrentlige trin og begrænsninger i brugen
Trin:
(1) Opret en database og MEMORY_OPTIMIZED_DATA filgruppe (alter database tilføj filgruppe, hver database kan kun have én MEMORY_OPTIMIZED_DATA filgruppe!!) ) (2) Tilføj en mappe til filgruppen for at gemme datafilerne (venligst opret ikke denne mappe på forhånd, brug alter database tilføj fil() til filgruppen) (3) Opret persistent/ikke-persistent hukommelsesoptimerede tabeller (SQL Server 2014 er som standard lagret), og du skal også definere en primærnøgle baseret på et ikke-aggregeret hashindeks. Hashed indekser er den eneste understøttede indekstype i hukommelsesoptimerede tabeller. (4) Brug lokalt kompilerede lagrede procedurer: Hukommelsesoptimerede tabeller understøtter lokalt kompilerede lagrede procedurer, så længe disse lagrede procedurer kun refererer til hukommelsesoptimerede tabeller.
Grænse:
(1) Den hukommelsesoptimerede tabel skal placeres under databasen med CONTAINS MEMORY_OPTIMIZED_DATA filgruppen. (2) Den hukommelsesoptimerede tabel skal definere en primærnøgle baseret på et ikke-aggregeret hashindeks, og tabellen skal defineresFremmednøgle- eller begrænsningskontrol understøttes ikke (3) Hukommelsesoptimeringstabellen skal have nok hukommelse, ellers vil operationer som indsættelse af opdateringer fejle. (4) SQL Server 2014 har mange begrænsninger på disse tabeller. For eksempel understøtter de ikke fremmednøgler eller begrænsningskontrol (som føles som MySQLS hukommelseslagringsmotor), deIDENTITY-felter eller DML-triggere understøttes heller ikke。
Brug tutorialen
Databaseversionerne er som følger:
Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64) 25. sep. 2024 17:34:41 Ophavsret (C) 2022 Microsoft Corporation Enterprise Edition: Kernebaseret licensering (64-bit) på Linux (Ubuntu 22.04.4 LTS) <X64>
Først opretter du en database og filgruppe med følgende kommando:
Hvis du ikke opretter en hukommelsesoptimeret gruppe, vil der blive rapporteret en fejl, når du opretter en hukommelsesoptimeret tabel:Kan ikke oprette hukommelsesoptimerede tabeller. For at oprette hukommelsesoptimerede tabeller skal databasen have en MEMORY_OPTIMIZED_FILEGROUP, der er online og har mindst én container.
Opret to hukommelsesoptimerede tabeller til test, én persistent og én ikke-persistent, med følgende kommando:
Hukommelsesoptimeringstabellen har to muligheder (HOLDBARHED = SCHEMA_AND_DATA), (HOLDBARHED = SCHEMA_ONLY) Holdbarhedstabell: HOLDBARHED =SCHEMA_AND_DATA Ikke-persistent tabel: HOLDBARHED =SCHEMA_ONLY
Tests indsættes separat i hukommelsesoptimeringstabellen100.000 artikler(faktisk 100002 elementer) data, er kommandoen som følger:
Persistens tager 28 sekunder at aktivere og 1 sekund uden persistens。
Henvisning:
Hyperlink-login er synlig.
Hyperlink-login er synlig.
Hyperlink-login er synlig.
Hyperlink-login er synlig.
Hyperlink-login er synlig. |