Badam zalety aktualizacji z MS SQL 2012 do 2014. Jednym z głównych punktów sprzedaży SQL 2014 są tabele zoptymalizowane pod kątem pamięci, które najwyraźniej sprawiają, że zapytania są superszybkie.
Odkryłem, że istnieje kilka ograniczeń dotyczących tabel zoptymalizowanych pod względem pamięci, takich jak:
- Brak
(max)
wielkości pól - Maksymalnie ~ 1 KB na wiersz
- Brak
timestamp
pól - Brak wyliczonych kolumn
- Bez
UNIQUE
ograniczeń
Wszystkie te kwalifikują się jako uciążliwości, ale jeśli naprawdę chcę je obejść w celu uzyskania korzyści w zakresie wydajności, mogę opracować plan.
Prawdziwym kickerem jest fakt, że nie można uruchomić ALTER TABLE
instrukcji i musisz przejść przez ten rygor za każdym razem, gdy dodajesz pole do INCLUDE
listy indeksu. Co więcej, wydaje się, że musisz wyłączyć użytkowników z systemu, aby dokonać zmian schematu w tabelach MO w aktywnej bazie danych.
Uważam to za całkowicie oburzające do tego stopnia, że w rzeczywistości nie mogę uwierzyć, że Microsoft mógł zainwestować tyle kapitału na rozwój w tę funkcję, i pozostawienie jej tak niepraktycznej w utrzymaniu. To prowadzi mnie do wniosku, że musiałem mieć niewłaściwy koniec kija; Musiałem źle zrozumieć coś o tabelach zoptymalizowanych pod kątem pamięci, co skłoniło mnie do przekonania, że ich utrzymanie jest o wiele trudniejsze niż w rzeczywistości.
Co więc źle zrozumiałem? Czy korzystałeś już z tabel MO? Czy istnieje jakiś tajny przełącznik lub proces, który czyni je praktycznymi w użyciu i utrzymaniu?
Nie można kliknąć prawym przyciskiem myszy tabeli zoptymalizowanej pod kątem pamięci, aby pobrać projektanta i dodać nowe kolumny według własnego uznania z poziomu Sql Server Management Studio. Nie można również kliknąć nazwy tabeli w celu zmiany nazwy tabeli. (SQL 2014 w momencie pisania tego.)
Zamiast tego możesz kliknąć tabelę prawym przyciskiem myszy i wypisać polecenie tworzenia w nowym oknie zapytania. To polecenie tworzenia można zmienić, dodając dowolne nowe kolumny.
Tak więc, aby zmodyfikować tabelę, możesz przechowywać dane w nowej tabeli, tabeli tymczasowej lub zmiennej tabeli. Następnie możesz upuścić i ponownie utworzyć tabelę z nowym schematem, a na koniec skopiować z powrotem rzeczywiste dane . Ta gra z 3 pojemnikami jest tylko trochę mniej wygodna w większości przypadków.
Ale nie byłoby powodu, aby zawracać sobie głowę tabelami zoptymalizowanymi pod kątem pamięci, jeśli nie występuje problem z wydajnością, który próbujesz rozwiązać.
Następnie musisz rozważyć, czy ograniczenia i obejścia są tego warte w twoim przypadku użycia. Czy masz problem z wydajnością? Próbowałeś już wszystkiego innego? Czy poprawi to twoją wydajność o 10-100x? Używanie go lub nieużywanie go prawdopodobnie nie będzie wcale bez sensu.
źródło
możesz używać OLTP w pamięci w serwerach operacyjnych bez większego problemu. zastosowaliśmy tę technologię w firmie bankowo-płatniczej,
Zasadniczo możemy używać tabel zoptymalizowanych pod kątem pamięci, gdy obciążenie jest zbyt duże. dzięki zastosowaniu OLTP w pamięci możesz osiągnąć lepszą wydajność do 30X! Microsoft poprawia większość tych ograniczeń w SQL Server 2016 i 2017. tabele zoptymalizowane pod kątem pamięci mają zupełnie inną architekturę niż tabele oparte na dyskach.
tabele zoptymalizowane pod kątem pamięci są dwoma typami. trwałe stoły i niestabilne stoły. Trwałe i nietrwałe tabele utrzymują dane w tabeli przechowywane w pamięci. Trwałe tabele utrwalają dane na dyskach dla danych odzyskiwania i schematu. w większości scenariuszy operacyjnych powinniśmy stosować trwałe tabele, ponieważ utrata danych ma tutaj kluczowe znaczenie. w niektórych scenariuszach, na przykład ładowanie ETL i buforowanie, możemy użyć tabel nietrwałych.
możesz skorzystać z tych ebooków i nauczyć się korzystać z tej technologii:
Kalen Delaney: https://www.red-gate.com/library/sql-server-internals-in-memory-oltp
Dmitri Korotkevitch: https://www.apress.com/gp/book/9781484227718
źródło