wtorek, 5 kwietnia 2016

Wykorzystanie tabel In-Memory OLTP jako zmiennych tabelarycznych

In-Memory OLTP wprowadzono w SQL Server 2014 Enterprise. W tej wersji miało wiele ograniczeń, ale można tą technologię wykorzystać jako zamiennik zmiennych tabelarycznych i tabel tymczasowych (np. tabele przejściowe w czasie procesów ETL).

Sposób implementacji
1. Utworzenie typu tabelarycznego o strukturze takiej, jak nasza tabela tymczasowa
2. Zadeklarowanie zmiennej jako jako zmiennej utworzonego typu.

 USE HKDB;  
 CREATE TYPE SalesOrderDetailType_inmem  
 AS TABLE  
 (  
 OrderQty smallint NOT NULL,  
 ProductID int NOT NULL,  
 SpecialOfferID int NOT NULL,  
 LocalID int NOT NULL,  
 INDEX IX_ProductID NONCLUSTERED HASH (ProductID) WITH (BUCKET_COUNT = 131072),  
 INDEX IX_SpecialOfferID NONCLUSTERED (SpecialOfferID)  
 )  
 WITH (MEMORY_OPTIMIZED = ON );  
 GO  
 DECLARE @SalesDetail SalesOrderDetailType_inmem;  
 GO  

Wady rozwiązania
  • Wymagana jest edycja Enterprise i wersja co najmniej 2014

Zalety:
  • zmniejszony udział tempdb - każda baza ma swoją pulę pamięci, nie korzysta z zasobów tempdb
  • zadeklarowana zmienna ma indeks!
  • możliwy brak utrwalenia danych na dysku, co powoduje ekstremalnie szybkie przetwarzanie danych (wszystko w RAM)
  • zoptymalizowane zapisy do logów transakcyjnych
  • i wszystkie inne zalety technologii In-Memory OLTP
Przykład zaczerpnięty z książki "SQL Server Internals: In-Memory OLTP, Inside the SQL Server 2014 Hekaton Engine" Kalen Delaney

Brak komentarzy:

Prześlij komentarz