Iepazīšanās ar atmiņai optimizētām tabulām
Atmiņai optimizētas tabulas ir tabulas, kas izveidotas, izmantojot CREATE TABLE (Transact-SQL).
Pēc noklusējuma atmiņai optimizētas tabulas ir pilnībā noturīgas. Tāpat kā transakcijas (tradicionālajās) diska tabulās, transakcijas atmiņai optimizētās tabulās ir pilnībā atomiskas, konsekventas, izolētas un noturīgas (ACID). Atmiņai optimizētas tabulas un vietēji kompilētas saglabātās procedūras atbalsta tikai Transact-SQL līdzekļu apakškopu.
Sākot ar SQL Server 2016 un Azure SQL datu bāzē, nav ierobežojumu atmiņā OLTP specifiskai salīdzināšanai vai kodu lapām.
Atmiņai optimizētas tabulas primārā atmiņa ir primārā atmiņa. Lasiet tabulas rindas no atmiņas un ierakstiet šīs rindas atmiņā. Vēl viena tabulas datu kopija tiek uzturēta diskā, bet tikai noturības nolūkos. Papildinformāciju par pastāvīgajām tabulām skatiet sadaļā Objektu krātuves izveide un pārvaldība atmiņas optimizācijai. Dati atmiņai optimizētajās tabulās tiek nolasīti no diska tikai datu bāzes atkopšanas laikā (piemēram, pēc servera atsāknēšanas).
Lai iegūtu lielāku veiktspēju, atmiņā esošā OLTP atbalsta pastāvīgas tabulas ar transakciju pastāvīgu latentumu. Aizkavētie pastāvīgie darījumi tiek saglabāti diskā neilgi pēc darījuma veikšanas un kontrole tiek atgriezta klientam. Apmaiņā pret uzlabotu veiktspēju, saistītie darījumi, kas netiek saglabāti diskā, tiek zaudēti servera avārijas vai kļūmju gadījumā.
Papildus noklusējuma pastāvīgajai atmiņai optimizētajām tabulām SQL Server atbalsta neierakstītas nepastāvīgas atmiņas optimizētas tabulas, un to dati netiek saglabāti diskā. Tas nozīmē, ka transakcijām šajās tabulās nav nepieciešams diska IO, bet, ja rodas servera kļūme vai kļūme, dati tiek zaudēti.
Atmiņā esošais OLTP integrējas ar SQL Server, lai nodrošinātu nevainojamu pieredzi visos aspektos, piemēram, izstrādē, izvietošanā, pārvaldāmībā un atbalstāmībā. Datu bāze var saturēt gan atmiņā esošus objektus, gan diska objektus.
Atmiņai optimizētās tabulas rindas ir versijas. Tas nozīmē, ka katrai tabulas rindai var būt vairākas versijas. Visas rindu versijas tiek uzturētas vienā tabulas datu struktūrā. Rindu versiju izveide tiek izmantota, lai iespējotu vienlaicīgu lasīšanu un rakstīšanu vienā rindā. Papildinformāciju par vienlaicīgu lasīšanu un rakstīšanu vienā rindā skatiet sadaļā Atmiņas optimizācijas tabulas lietas.
Aptuvenie soļi un lietošanas ierobežojumi
Darbības:
(1) Izveidojiet datu bāzi un MEMORY_OPTIMIZED_DATA failu grupu (mainīt datu bāzi pievienot failu grupu, katrai datu bāzei var būt tikai viena MEMORY_OPTIMIZED_DATA failu grupa!!) ) (2) Pievienojiet mapi failu grupai, lai saglabātu datu failus (lūdzu, neizveidojiet šo mapi iepriekš, izmantojiet mainīt datu bāzi pievienot failu () failu grupai) (3) Izveidojiet pastāvīgas/nepastāvīgas atmiņai optimizētas tabulas (SQL Server 2014 ir saglabāts pēc noklusējuma), un jums ir jādefinē arī primārā atslēga, pamatojoties uz neapkopotu jaucējindeksu. Jauktie indeksi ir vienīgais atbalstītais indeksa tips atmiņai optimizētās tabulās. (4) Izmantojiet lokāli kompilētas saglabātās procedūras: Atmiņai optimizētas tabulas atbalsta lokāli kompilētas saglabātās procedūras, ja vien šīs saglabātās procedūras atsaucas tikai uz atmiņai optimizētām tabulām.
Ierobežojumu:
(1) Atmiņai optimizētā tabula jāievieto datu bāzē ar CONTAINS MEMORY_OPTIMIZED_DATA failu grupu. (2) Atmiņai optimizētajā tabulā ir jādefinē primārā atslēga, kuras pamatā ir neapkopots jaucējindekss, un tabula ir jādefinēĀrējās atslēgas vai ierobežojumu pārbaude netiek atbalstīta (3) Atmiņas optimizācijas tabulā jābūt pietiekami daudz atmiņas, pretējā gadījumā tādas darbības kā atjauninājumu ievietošana neizdosies. (4) SQL Server 2014 ir daudz ierobežojumu šīm tabulām. Piemēram, tie neatbalsta ārējās atslēgas vai ierobežojumu pārbaudi (kas šķiet līdzīgi MySQL atmiņas glabāšanas dzinējam), viņiNetiek atbalstīti arī IDENTITY lauki vai DML aktivizētāji。
Apmācības izmantošana
Datu bāzes versijas ir šādas:
Microsoft SQL Server 2022 (RTM-CU15-GDR) (KB5046059) - 16.0.4150.1 (x64) 2024. gada 25. septembris 17:34:41 Autortiesības (C) 2022 Microsoft Corporation Enterprise Edition: Core licencēšana (64 bitu) operētājsistēmā Linux (Ubuntu 22.04.4 LTS) <X64>
Vispirms izveidojiet datu bāzi un failu grupu ar šādu komandu:
Ja neizveidojat atmiņai optimizētu grupu, izveidojot atmiņai optimizētu tabulu, tiks ziņots par kļūdu:Nevar izveidot atmiņai optimizētas tabulas. Lai izveidotu atmiņai optimizētas tabulas, datu bāzei ir jābūt MEMORY_OPTIMIZED_FILEGROUP, kas ir tiešsaistē un kurā ir vismaz viens konteiners.
Izveidojiet divas atmiņai optimizētas tabulas, lai pārbaudītu, vienu pastāvīgu un otru nepastāvīgu, izmantojot šādu komandu:
Atmiņas optimizācijas tabulai ir divas iespējas (IZTURĪBA = SCHEMA_AND_DATA), (IZTURĪBA = SCHEMA_ONLY) Izturības tabula: IZTURĪBA =SCHEMA_AND_DATA Nenoturīga tabula: IZTURĪBA =SCHEMA_ONLY
Testi tiek ievietoti atsevišķi atmiņas optimizācijas tabulā100 000 rakstu(faktiski 100002 vienumu) datiem, komanda ir šāda:
Noturība aizņem 28 sekundes, lai ieslēgtos, un 1 sekundi bez noturības。
Atsauce:
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama. |