Bevezetés a memóriaoptimalizált táblákhoz
A memóriaoptimalizált táblák olyan táblák, amelyeket a CREATE TABLE (Transact-SQL) használatával hoznak létre.
Alapértelmezés szerint a memóriaoptimalizált táblák teljesen tartósak. Ahogy a (hagyományos) lemezalapú táblákon lévő tranzakciók is a memóriaoptimalizált táblákon lévő tranzakciók teljesen atomosak, konzizisztensek, izolált és tartósak (ACID). A memóriaoptimalizált táblák és a natívan lefordított tárolt eljárások csak a Transact-SQL funkciók egy részhalmazát támogatják.
Az SQL Server 2016-tól és az Azure SQL Database-től függetlenül nincs korlátozás az OLTP-specifikus összeállításra vagy kódoldalakra.
Egy memóriaoptimalizált táblázat elsődleges memóriája az elsődleges memória. Olvasd fel a sorokat a táblázatból memódából, és írd fel ezeket a sorokat memódra. A táblázat adatainak egy másik példánya a lemezen van, de csak a tartósság érdekében. További információért a tartós táblákról lásd: Objektumok létrehozása és tárolása memóriaoptimalizálás céljából. A memóriaoptimalizált táblákban lévő adatokat csak az adatbázis-helyreállítás során (például szerver újraindítása után) olvassák a lemezről.
A nagyobb teljesítménynövekedés érdekében az in-memory OLTP támogatja az állandó táblákat tranzakciós állandó késleltetéssel. A késleltetett állandó tranzakciókat röviddel a tranzakció elkötelezése után a lemezre mentik, és az irányítás visszakerül az ügyfélhez. A jobb teljesítményért cserébe a lemezre nem mentett elkötelezett tranzakciók elvesznek szerver összeomlása vagy visszalépése esetén.
Az alapértelmezett állandó memóriaoptimalizált táblák mellett az SQL Server támogatja a nem rögzített, nem állandó memóriaoptimalizált táblákat, és az adataik nem maradnak a lemezen. Ez azt jelenti, hogy ezeken a táblákon lévő tranzakciók nem igényelnek lemez IO-t, de ha szerverhiba vagy failover történik, az adatok elvesznek.
Az in-memory OLTP integrálódik az SQL Serverrel, hogy zökkenőmentes élményt nyújtson minden aspektusban, például fejlesztésben, telepítésben, kezelhetőségben és támogathatóságban. Egy adatbázis tartalmazhat mind memórián belüli, mind lemezalapú objektumokat.
A memóriaoptimalizált táblázat sorai verzióban vannak. Ez azt jelenti, hogy a táblázat minden sorának több változata is lehet. Minden sorverzió ugyanabban a tábla-adatstruktúrában van. A sorverziózás lehetővé teszi az egyidejű olvasásokat és írásokat ugyanabban a sorban. További információért az egyidejű olvasásokról és írásokról ugyanabban a sorban lásd: A Memóriaoptimalizálási Táblázat Dolgoka.
Közelítő lépések és használati korlátok
Utaslépcső:
(1) Hozz létre egy adatbázist és MEMORY_OPTIMIZED_DATA fájlcsoportot (módosítsd az adatbázis hozzáadását a fájlcsoporthoz, minden adatbázisnak csak egy MEMORY_OPTIMIZED_DATA fájlcsoportja lehet!!) ) (2) Tegyen egy mappát a fájlcsoporthoz az adatfájlok tárolására (kérjük, ne hozza létre ezt a mappát előre, használd az alter database add file() fájl() fájlcsoportba) (3) Hozz létre tartós/nem állandó memóriaoptimalizált táblákat (az SQL Server 2014 alapértelmezés szerint persistenz), és egy elsődleges kulcsot is definiálnod egy nem aggregált hash index alapján. A hashelt indexek az egyetlen támogatott indextípusok a memóriaoptimalizált táblákban. (4) Helyileg fordított tárolt eljárások használata: A memóriaoptimalizált táblák támogatják a helyileg fordított tárolt eljárásokat, amennyiben ezek a tárolt eljárások csak memóriaoptimalizált táblákra hivatkoznak.
Korlát:
(1) A memóriaoptimalizált táblát a CONTAINS fájlcsoporttal együtt az adatbázis alá kell helyezni, MEMORY_OPTIMIZED_DATA fájlcsoporttal. (2) A memóriaoptimalizált táblának elsődleges kulcsot kell definiálnia egy nem aggregált hash-index alapján, és a táblát meg kell határozniAz idegen kulcs- vagy korlátozásellenőrzés nem támogatott (3) A memóriaoptimalizáló táblának elegendő memóriával kell rendelkeznie, különben olyan műveletek, mint a frissítések behelyezése, kudarcot vallanak. (4) Az SQL Server 2014 számos korlátozással rendelkezik ezekkel a táblázatokkal kapcsolatban. Például nem támogatják az idegen kulcsokat vagy a korlátozásellenőrzést (ami hasonló érzés a MySQL memória tárolómotorjához), hanemIDENTITY mezők vagy DML triggerek sem támogatottak。
Használd a tutorialt
Az adatbázis verziók a következők:
Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (X64) 2024. szeptember 25. 17:34:41 Copyright (C) 2022 Microsoft Corporation Enterprise Edition: Magalapú licenc (64-bit) Linuxon (Ubuntu 22.04.4 LTS) <X64>
Először hozzon létre egy adatbázist és fájlcsoportot a következő parancsval:
Ha nem hozol létre memóriaoptimalizált csoportot, hibát jelentenek, amikor memóriaoptimalizált táblát készítesz:Nem tudok memóriaoptimalizált táblákat létrehozni. Memóriaoptimalizált táblázatok létrehozásához az adatbázisnak online MEMORY_OPTIMIZED_FILEGROUP-vel kell rendelkeznie, amelynek legalább egy konténere van.
Készíts két memóriaoptimalizált táblát tesztelésre, egy állandó és egy nem állandó, a következő parancs segítségével:
A memóriaoptimalizálási táblázatnak két lehetősége van (TARTÓSSÁG = SCHEMA_AND_DATA), (TARTÓSSÁG = SCHEMA_ONLY) Tartósságtáblázat: TARTÓSSÁG =SCHEMA_AND_DATA Nem tartós táblázat: TARTÓSSÁG =SCHEMA_ONLY
A teszteket külön helyezik be a memóriaoptimalizálási táblába100 000 cikk(valójában 100002 elem) adatot tartalmaz, a parancs a következő:
A kitartás bekapcsolása 28 másodpercig tart, és 1 másodpercig nem kitartó。
Utalás:
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható. |