Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 1141|Odgovoriti: 1

[Vir] Tabele, optimizirane za pomnilnik za SQL SERVER baze podatkov

[Kopiraj povezavo]
Objavljeno 10. 5. 2025 ob 21:28:18 | | | |
Uvod v tabele, optimizirane za pomnilnik

Pomnilniško optimizirane tabele so tabele, ustvarjene z uporabo CREATE TABLE (Transact-SQL).

Privzeto so tabele, optimizirane za pomnilnik, popolnoma trajne. Tako kot transakcije na (tradicionalnih) tabelah na diskih so tudi transakcije na pomnilniško optimiziranih tabelah popolnoma atomske, dosledne, izolirane in trajne (ACID). Pomnilniško optimizirane tabele in nativno prevedene shranjene procedure podpirajo le podmnožico funkcij Transact-SQL.

Od SQL Server 2016 in v Azure SQL Database ni omejitev glede OLTP-specifičnega koliranja ali kodnih strani v pomnilniku.

Primarni pomnilnik tabele, optimizirane za pomnilnik, je primarni pomnilnik. Beri vrstice iz tabele iz spomina in te vrstice zapiši v spomin. Druga kopija podatkov tabele se hrani na disku, vendar le zaradi trajnosti. Za več informacij o trajnih tabelah glejte Ustvarjanje in upravljanje shranjevanja objektov za optimizacijo pomnilnika. Podatki v tabelah, optimiziranih za pomnilnik, se berejo z diska le med obnovo baze podatkov (na primer po ponovnem zagonu strežnika).

Za večje izboljšave zmogljivosti OLTP v pomnilniku podpira trajne tabele s transakcijsko trajno zakasnitvijo. Zamaknjene trajne transakcije se shranijo na disk kmalu po tem, ko je transakcija sklenjena in se nadzor vrne odjemalcu. V zameno za izboljšano zmogljivost se v primeru zrušitve strežnika ali preklopa izgubijo zavezane transakcije, ki niso shranjene na disk.

Poleg privzetih tabel, optimiziranih za trajni pomnilnik, SQL Server podpira tudi neposnete tabele, optimizirane za netrajni pomnilnik, njihovi podatki pa niso shranjeni na disku. To pomeni, da transakcije na teh tabelah ne zahtevajo diskovnega vhodnega prehoda, vendar se podatki izgubijo, če pride do okvare strežnika ali preklopa.

OLTP v pomnilniku se integrira s SQL Serverjem, da zagotovi brezhibno izkušnjo na vseh področjih, kot so razvoj, uvajanje, upravljanje in podpora. Baza podatkov lahko vsebuje tako objekte v pomnilniku kot tudi objekte na disku.

Vrstice v pomnilniško optimizirani tabeli so verzionirane. To pomeni, da ima lahko vsaka vrstica v tabeli več različic. Vse različice vrstic so vzdrževane v isti podatkovni strukturi tabele. Verzioniranje vrstic se uporablja za omogočanje sočasnega branja in pisanja v isto vrstico. Za več informacij o sočasnih branjih in zapisih v isto vrstico glejte Stvari v tabeli optimizacije pomnilnika.

Približni koraki in omejitve uporabe

Korake:

(1) Ustvarite bazo podatkov in MEMORY_OPTIMIZED_DATA skupino datotek (spremenite bazo podatkov dodajte datotečno skupino, vsaka baza podatkov lahko vsebuje le eno MEMORY_OPTIMIZED_DATA skupino datotek!!) )
(2) Dodajte mapo v skupino datotek za shranjevanje podatkovnih datotek (prosimo, da te mape ne ustvarite vnaprej, uporabite alter database add file() v datotečno skupino)
(3) Ustvarite trajne/netrajne tabele, optimizirane za pomnilnik (SQL Server 2014 je privzeto ohranjen), poleg tega pa morate definirati primarni ključ na podlagi neagregiranega hash indeksa. Hashed indeksi so edina podprta vrsta indeksa v tabelah, optimiziranih za pomnilnik.
(4) Uporaba lokalno prevedenih shranjenih postopkov: Tabele, optimizirane za pomnilnik, podpirajo lokalno prevedene shranjene procedure, dokler te shranjene procedure uporabljajo le tabele, optimizirane za pomnilnik.

Omejiti:

(1) Tabela, optimizirana za pomnilnik, mora biti postavljena pod bazo podatkov z datoteko CONTAINS MEMORY_OPTIMIZED_DATA datotečne skupine.
(2) Tabela, optimizirana za pomnilnik, mora definirati primarni ključ na podlagi neagregiranega hash indeksa, tabela pa mora biti definiranaPreverjanje tujih ključev ali omejitev ni podprto
(3) Tabela optimizacije pomnilnika mora imeti dovolj pomnilnika, sicer bodo operacije, kot je vstavljanje posodobitev, neuspešne.
(4) SQL Server 2014 ima veliko omejitev glede teh tabel. Na primer, ne podpirajo tujih ključev ali preverjanja omejitev (kar je podobno kot MySQL pogon za shranjevanje pomnilnika), oniIDENTITY polja ali DML sprožilci prav tako niso podprti

Uporabi vodič

Različice baze podatkov so naslednje:

Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64)
        25. sep 2024 17:34:41
        Avtorske pravice (C) Microsoft Corporation 2022
        Enterprise Edition: Licenciranje na osnovi jedra (64-bit) na Linuxu (Ubuntu 22.04.4 LTS) <X64>

Najprej ustvarite bazo podatkov in skupino datotek z naslednjim ukazom:

Če ne ustvarite skupine, optimizirane za pomnilnik, bo ob ustvarjanju tabele, optimizirane za pomnilnik, prijavljena napaka:Ni mogoče ustvariti tabel, optimiziranih za pomnilnik. Za ustvarjanje tabel, optimiziranih za pomnilnik, mora imeti podatkovna baza MEMORY_OPTIMIZED_FILEGROUP, ki je na spletu in vsebuje vsaj en vsebnik.

Ustvarite dve tabeli, optimizirani za pomnilnik za testiranje, eno trajno in eno netrajno, z naslednjim ukazom:

Tabela optimizacije pomnilnika ima dve možnosti (VZDRŽLJIVOST = SCHEMA_AND_DATA), (VZDRŽLJIVOST = SCHEMA_ONLY)
Tabela vzdržljivosti: VZDRŽLJIVOST =SCHEMA_AND_DATA
Netrajna tabela: VZDRŽLJIVOST =SCHEMA_ONLY

Testi se vstavljajo ločeno v tabelo optimizacije pomnilnika100.000 člankov(dejansko 100002 elemente) podatke, ukaz je naslednji:





Persistence se vklopi v 28 sekundah in 1 sekundo brez Persistence

Referenčni:

Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.




Prejšnji:Obožujem recikliranje programske opreme za pregled kakovosti prenosnikov
Naslednji:C# 8.0 sintaksa uporablja indeks in razpon
 Najemodajalec| Objavljeno 10. 5. 2025 ob 21:36:40 |
Običajna tabela vstavi 100.000 kosov podatkov in se izvede v 18 sekundah. Kot je prikazano spodaj:



Skript:
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com