Ich untersuche die Vorteile eines Upgrades von MS SQL 2012 auf 2014. Eines der großen Verkaufsargumente von SQL 2014 sind die speicheroptimierten Tabellen, die Abfragen anscheinend superschnell machen.
Ich habe festgestellt, dass es einige Einschränkungen für speicheroptimierte Tabellen gibt, wie zum Beispiel:
- Keine
(max)
großen Felder - Maximal ~ 1 KB pro Zeile
- Keine
timestamp
Felder - Keine berechneten Spalten
- Keine
UNIQUE
Einschränkungen
Diese sind alle als Belästigungen zu qualifizieren, aber wenn ich sie wirklich umgehen möchte, um die Leistungsvorteile zu erzielen, kann ich einen Plan erstellen.
Der wahre Kicker ist die Tatsache, dass Sie keine ALTER TABLE
Anweisung ausführen können und jedes Mal, wenn Sie der Liste eines Index ein Feld hinzufügen, diese Regel durchlaufen müssen INCLUDE
. Außerdem müssen Sie anscheinend Benutzer vom System ausschließen, um Schemaänderungen an MO-Tabellen in der Live-DB vorzunehmen.
Ich finde das total empörend, insofern ich eigentlich nicht glauben kann, dass Microsoft so viel Entwicklungskapital in dieses Feature hätte investieren können, und es so unpraktisch zu warten. Dies führt mich zu dem Schluss, dass ich das falsche Ende des Stocks bekommen haben muss; Ich muss etwas an speicheroptimierten Tabellen falsch verstanden haben, was mich zu der Annahme geführt hat, dass es weitaus schwieriger ist, sie zu verwalten, als es tatsächlich ist.
Also, was habe ich falsch verstanden? Haben Sie MO-Tische verwendet? Gibt es eine Art geheimen Schalter oder Prozess, der es praktisch macht, sie zu verwenden und zu warten?
quelle
Du können in Sql Server Management Studio nicht mit der rechten Maustaste auf eine speicheroptimierte Tabelle klicken, um einen Designer aufzurufen und neue Spalten hinzuzufügen, wie Sie möchten. Sie könnten auch nicht als Mittel im Tabellennamen klicken der Umbenennung der Tabelle. (SQL 2014, als ich das schreibe.)
Stattdessen können Sie mit der rechten Maustaste auf die Tabelle klicken und einen Befehl create für ein neues Abfragefenster ausführen . Dieser Erstellungsbefehl kann durch Hinzufügen neuer Spalten geändert werden.
Um die Tabelle zu ändern, können Sie die Daten in einer neuen Tabelle, temporären Tabelle oder Tabellenvariablen speichern . Dann können Sie die Tabelle mit dem neuen Schema löschen und neu erstellen und schließlich die tatsächlichen Daten zurückkopieren . Dieses 3-Behälter-Schalen-Spiel ist für die meisten Anwendungsfälle nur wenig unbequem.
Sie haben jedoch keinen Grund, sich mit speicheroptimierten Tabellen zu beschäftigen, wenn es kein Leistungsproblem gibt, das Sie lösen möchten.
Dann müssen Sie abwägen, ob sich die Einschränkungen und Umgehungsmöglichkeiten für Ihren Anwendungsfall lohnen. Haben Sie ein Leistungsproblem? Hast du alles andere ausprobiert? Verbessert dies Ihre Leistung um das 10-100-fache? Wenn man es benutzt oder nicht benutzt, wird es wahrscheinlich so oder so ein bisschen hirnlos.
quelle
Sie können In-Memory-OLTP ohne größere Probleme auf Operationsservern verwenden. Wir haben diese Technologie in einem Bank- und Zahlungsunternehmen eingesetzt.
Im Allgemeinen können wir speicheroptimierte Tabellen verwenden, wenn die Auslastung zu hoch ist. Mit In-Memory-OLTP können Sie eine bis zu 30-fache Leistung erzielen! Microsoft korrigiert die meisten dieser Einschränkungen in SQL Server 2016 und 2017. Speicheroptimierte Tabellen haben eine völlig andere Architektur als festplattenbasierte Tabellen.
Es gibt zwei Arten von speicheroptimierten Tabellen. langlebige tische und langlebige tische. Dauerhafte und nicht dauerhafte Tabellen behalten Tabellendaten im Speicher. Darüber hinaus werden in dauerhaften Tabellen Daten auf Datenträgern für Wiederherstellungsdaten und -schemata beibehalten. In den meisten Betriebsszenarien sollten dauerhafte Tabellen verwendet werden, da hier Datenverluste von entscheidender Bedeutung sind. In einigen Szenarien, zum Beispiel beim Laden und Zwischenspeichern von ETLs, können wir nicht dauerhafte Tabellen verwenden.
Sie können diese eBooks verwenden und lernen, wie man diese Technologie einsetzt:
Kalen Delaney: https://www.red-gate.com/library/sql-server-internals-in-memory-oltp
Dmitri Korotkevitch: https://www.apress.com/gp/book/9781484227718
quelle