Johdanto muistiin optimoituihin taulukoihin
Muistiin optimoidut taulut ovat tauluja, jotka on luotu CREATE TABLE (Transact-SQL) -menetelmällä.
Oletuksena muistiin optimoidut taulukot ovat täysin pysyviä. Kuten (perinteisten) levypohjaisten taulujen transaktiot, muistiin optimoitujen taulujen transaktiot ovat täysin atomisia, johdonmukaisia, erillisiä ja pysyviä (ACID). Muistiin optimoidut taulukot ja natiivisti käännetyt tallennetut proseduurit tukevat vain osajoukkoa Transact-SQL-ominaisuuksista.
SQL Server 2016:sta lähtien ja Azure SQL Databasessa ei ole rajoituksia muistin sisäisille OLTP-kohtaisille kokoamis- tai koodisivuille.
Muistiin optimoidun taulukon ensisijainen muisti on ensisijainen muisti. Lue rivit taulukosta ulkomuistista ja kirjoita ne muistiin. Toinen kopio taulukon datasta säilytetään levyllä, mutta vain pysyvyyden vuoksi. Lisätietoja pysyvistä taulukoista löytyy kohdasta Create and manage storage of objects for memory optimization. Muistiin optimoituissa taulukoissa luetaan levyltä vain tietokannan palautuksen yhteydessä (esimerkiksi palvelimen uudelleenkäynnistyksen jälkeen).
Suorituskyvyn parantamiseksi muistissa oleva OLTP tukee pysyviä taulukoita, joissa on transaktionaalinen pysyvä viive. Viivästetyt pysyvät transaktiot tallennetaan levylle pian tapahtuman sitoutumisen jälkeen ja ohjaus palautetaan asiakkaalle. Suorituskyvyn parantamiseksi sitoutuneet tapahtumat, joita ei tallenneta levylle, menetetään palvelimen kaatumisen tai vikojen ohituksen sattuessa.
Oletustaulujen lisäksi, jotka ovat pysyvästi muistiin optimoituja, SQL Server tukee tallentamattomia, ei-pysyvää muistia hyödyntäviä tauluja, eikä niiden tietoja säilytetä levyllä. Tämä tarkoittaa, että näiden taulujen transaktiot eivät vaadi levyn IO:ta, mutta jos palvelimen vika tai failover tapahtuu, data menetetään.
In-memory OLTP integroituu SQL Serveriin tarjoten saumattoman kokemuksen kaikilla osa-alueilla, kuten kehityksessä, käyttöönotossa, hallittavuudessa ja tuettavuudessa. Tietokanta voi sisältää sekä muistissa olevia objekteja että levypohjaisia objekteja.
Muistioptimoidun taulukon rivit on versioittu. Tämä tarkoittaa, että jokaisella taulukon rivillä voi olla useita versioita. Kaikki riviversiot ylläpidetään samassa taulukkorakenteessa. Riviversiointia käytetään mahdollistamaan samanaikaiset luku- ja kirjoitukset samalle riville. Lisätietoja samanaikaisista luku- ja kirjoituksista samalle riville löytyy kohdasta Asiat muistin optimointitaulukossa.
Likimääräiset vaiheet ja käyttörajoitukset
Portaat:
(1) Luo tietokanta ja MEMORY_OPTIMIZED_DATA tiedostoryhmä (muokkaa tietokantaa, lisää tiedostoryhmä, jokaisessa tietokannassa voi olla vain yksi MEMORY_OPTIMIZED_DATA tiedostoryhmä!!) ) (2) Lisää kansio tiedostoryhmään tiedostojen tallentamista varten (älä luo tätä kansiota etukäteen, käytä alter database add file() to file() to filegroupiin) (3) Luo pysyvät/ei-pysyvät muistiin optimoidut taulut (SQL Server 2014 säilyy oletuksena), ja sinun täytyy myös määritellä ensisijainen avain ei-aggregoidun hajautusindeksin perusteella. Hajautetut indeksit ovat ainoa tuettu indeksityyppi muistiin optimoiduissa taulukoissa. (4) Käytä paikallisesti käännettyjä tallennettuja proseduureja: Muistiin optimoidut taulukot tukevat paikallisesti käännettyjä, tallennettuja proseduureja, kunhan ne viittaavat vain muistiin optimoituihin taulukoihin.
Rajoittaa:
(1) Muistiin optimoitu taulu on sijoitettava tietokannan alle, jossa on CONTAINS MEMORY_OPTIMIZED_DATA tiedostoryhmä. (2) Muistiin optimoitussa taulukossa on määriteltävä ensisijainen avain ei-aggregoidun hajautusindeksin perusteella, ja taulukko on määriteltäväVierasavaimen tai rajoitteiden tarkistusta ei tueta (3) Muistin optimointitaululla täytyy olla riittävästi muistia, muuten esimerkiksi päivitysten lisääminen epäonnistuu. (4) SQL Server 2014:llä on monia rajoituksia näissä taulukoissa. Esimerkiksi ne eivät tue vieraita avaimia tai rajoitusten tarkistusta (joka tuntuu samankaltaiselta kuin MySQL:n muistitallennusmoottori), vaanIDENTITY-kenttiä tai DML-laukaisijoita ei myöskään tueta。
Käytä opetusta
Tietokantaversiot ovat seuraavat:
Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64) 25. syyskuuta 2024 klo 17:34:41 Tekijänoikeus (C) 2022 Microsoft Corporation Enterprise Edition: Core-pohjainen lisensointi (64-bittinen) Linuxilla (Ubuntu 22.04.4 LTS) <X64>
Luo ensin tietokanta- ja tiedostoryhmä seuraavalla komennolla:
Jos et luo muistiin optimoitua ryhmää, virhe raportoidaan kun luot muistioptimoidun taulun:En voi luoda muistiin optimoituja taulukoita. Muistioptimoitujen taulukoiden luomiseksi tietokannalla täytyy olla MEMORY_OPTIMIZED_FILEGROUP, joka on verkossa ja jossa on vähintään yksi kontti.
Luo kaksi muistiin optimoitua taulukkoa testattavaksi, yksi pysyvä ja toinen ei-pysyvä, seuraavalla komennolla:
Muistin optimointitaulukossa on kaksi vaihtoehtoa (KESTÄVYYS = SCHEMA_AND_DATA), (KESTÄVYYS = SCHEMA_ONLY) Kestävyystaulukko: KESTÄVYYS =SCHEMA_AND_DATA Ei-pysyvä taulukko: KESTÄVYYS =SCHEMA_ONLY
Testit lisätään erikseen muistin optimointitaulukkoon100 000 artikkelia(todellisuudessa 100002 kohteet) dataa, komento on seuraava:
Persistence käynnistyy 28 sekunnissa ja 1 sekunnin ilman persistenssiä。
Viittaus:
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä.
Hyperlinkin kirjautuminen on näkyvissä. |