Welche großen Einschränkungen sollte ich von Linked SQL Servern erwarten?

9

Unser Produkt basiert auf Microsoft SQL Server. Derzeit verwenden wir drei Datenbanken und haben sie immer auf einer SQL Server-Instanz bereitgestellt.

Die drei Datenbanken sind OLTP, OLAP und Audit. Die OLAP-Datenbank verfügt über umfangreiche eingehende EOD-Daten sowohl von OLTP als auch von Audit mithilfe datenbankübergreifender Abfragen.

Fragen

Wenn wir diese drei Datenbanken auf drei separaten Standard Edition- Instanzen innerhalb eines einzelnen physischen Servers bereitstellen und sie mithilfe der Linked Server-Funktion von SQL Server zusammenbinden würden:

  1. Wie transparent wird es für den Anwendungscode sein? Wie viel Veränderung sollte ich erwarten?
  2. Eingehende Daten an OLAP beliefen sich auf 50.000 bis 100.000 Zeilen, 200 bis 500 MB Nutzlast pro EOD. Wie viel Leistungsabfall sollte ich erwarten?
  3. Welche anderen großen Einschränkungen sollte ich erwarten?

Hintergrund

Derzeit stellen wir unseren potenziell ersten Kunden mit mehr als 500 gleichzeitigen Benutzern vor.

Wir entwerfen eine Serverspezifikation, die 64 Kerne und 256 GB RAM enthält. Damit SQL Server all diese Ressourcen nutzen kann, muss der Client die Enterprise Edition kaufen, die für SQL Server 2016 nur in einer lernbasierten Lizenzierung verfügbar ist.

Wir befürchten, dass allein die Lizenzkosten (64 x 7400 US-Dollar) sie senken werden. Daher denke ich darüber nach, die Datenbank in drei Instanzen der Standard Edition aufzuteilen und sie miteinander zu verknüpfen, in der Hoffnung, dass die Verknüpfungsfunktion für den Anwendungscode transparent ist.

Bungrudi
quelle

Antworten:

14

Wie transparent wird es für den Anwendungscode sein? Wie viel Veränderung sollte ich erwarten?

Überhaupt nicht transparent. Erwarten Sie größere Änderungen.

Sie sollten auf einen erheblichen Leistungsabfall vorbereitet sein.

Distributed Query (das Framework für Verbindungsserver) verwendet ein allgemeines OLEDB-Modell, unabhängig davon, um welchen Server es sich am anderen Ende handelt. Es ist richtig, dass ein SQL Server-Ziel möglicherweise vollständigere Informationen (Metadaten, Statistiken usw.) bereitstellen kann, aber das Ergebnis ist noch lange nicht so eng integriert oder in der Lage wie eine native datenbankübergreifende Operation.

Remote-Abfragen haben einen verdienten Ruf für langsame Leistung und schlechte Planauswahl durch den Optimierer. Anweisungen, die Daten ändern (Löschen, Einfügen, Aktualisieren, Zusammenführen), sind besonders anfällig, da das Grundmodell häufig das eines Cursors ist.


Wenn Sie niemals instanzübergreifende Ad-hoc -Abfragen durchführen müssen, können Sie möglicherweise jede gespeicherte Abfrage von Hand auf eine akzeptable Leistung abstimmen. Dies ist jedoch eine Menge Arbeit, und der Erfolg ist keineswegs garantiert.

Für Quer Beispiel Bulk - Operationen, würden Sie besser viel aus realen Massenoperationen mit ( bcp, BULK INSERT, SSIS ... etc.) Zwischen Instanzen als Verbindungsserver verwenden.


Alles in allem scheint die Grundidee viel schwieriger zu sein, als es mir wert ist. Geben Sie die Hardware an, die den Einschränkungen der Standard Edition entspricht. Wenn der Client eine höhere Leistung benötigt, erwerben Sie einen größeren Server und verwenden Sie die Enterprise Edition.

Paul White 9
quelle