SQL Server Express für Produktionsdatenbanken?

14

Wir sind dabei, eine duale Web- / interne Transaktionsanwendung einzuführen, bei der jeder Kunde über eine eigene Datenbank verfügt. Jede Datenbank ist sehr klein - jeweils weniger als 50 MB. Daher haben wir uns gefragt, ob es sinnvoll ist, SQL Express 2008 anstelle des vollständigen SQL Servers zu verwenden.

Dies scheint den Vorteil zu haben, dass die Festplatten-E / A auf mehrere Server verteilt und gleichzeitig erhebliche Kosten gespart werden (da kleine 15-KB-Laufwerke und gebrauchte Dual-Core-Server beide kostengünstig sind). Wenn wir irgendwann zu viele Server benötigen, können wir ein Upgrade auf SQL Server durchführen. Bei Dutzenden interner Benutzer scheint dies jedoch momentan zu teuer zu sein (zumal wir eine Failover-Box benötigen würden).

1 GB Arbeitsspeicher und die Verwendung von 4 Kernen auf einem einzelnen Prozessor klingen angesichts unserer geringen Datenbankgröße nicht allzu restriktiv. Wir werden nie mehr als ~ 200 Benutzer gleichzeitig haben und die meisten Vorgänge werden transaktionaler sein (was viele Hochgeschwindigkeits-Festplatten gegenüber starkem RAM / CPU zu bevorzugen scheint, oder?)

Vermisse ich irgendwelche Vorteile von SQL Server Standard, die die anfängliche Investition in Höhe von 5 bis 20.000 USD rechtfertigen könnten?

Piep Piep
quelle

Antworten:

17

Mit den anderen Editionen von SQL Server erhalten Sie Dinge wie den SQL Agent, sodass Sie die Datenbankwartung und andere Jobs planen können.

Solange Ihre Datenbank die Grenzen der Express Edition überschreitet, ist alles in Ordnung.

SQL Server mag viel RAM. Je mehr desto besser. Da der SQL Server keine Daten in den Cache laden kann, werden die Festplatten zusätzlich belastet. Sie sollten sich die Web Edition oder Workstation Edition von SQL Server ansehen. Diese Editionen haben höhere Limits als die Express Edition, kosten aber weniger als die Standard Edition.

Wenn Sie mit der Express Edition beginnen, können Sie nach dem Kauf der Lizenz jederzeit ein Upgrade auf die Standard Edition durchführen.

mrdenny
quelle
+1 kann nichts anderes zu dieser Antwort hinzufügen
Nick Kavadias
Ich glaube nicht, dass Workgroup- und Web Edition-Lizenzen für extern gehostete Geschäftsanwendungen verwendet werden können.
Akash Kava
1
CPU-Lizenzen sind für alle Editionen verfügbar (mit Ausnahme von Express, für das keine CPU-Lizenz erforderlich ist). Dies bedeutet, dass Sie sie für eine öffentlich zugängliche Website verwenden können. Hier ist der Link zur Workgroup-CPU-Lizenz bit.ly/KDLDR . Ich konnte die Web Edition nicht leicht finden, aber jeder VAR sollte sie bereitstellen können, ohne sich umzusehen.
Mrdenny
Ich empfehle auch, mit etwas über Express zu beginnen, und manchmal kann es schwierig sein, von Express zu einer anderen Edition zu wechseln.
DanBig
3
SQL Express ist genau das gleiche Modul wie die anderen Editionen, nur mit Größenbeschränkungen. Beim Wechsel von Express zu einer anderen Edition müssen Sie lediglich die Datenbank von der Express-Edition trennen und an eine andere Instanz anhängen, auf der eine andere Edition ausgeführt wird.
Mrdenny
15

Einige Produktionsprobleme und Problemumgehungen, die ich mit der Express-Edition hatte:

Geplante Sicherungen

SSIS

  • SQL Express 2008 verfügt zwar über einen Assistenten zum Importieren / Exportieren von Daten, die dtsexec-Laufzeit von Express Edition führt jedoch nicht alle SSIS-Pakete aus
  • Problemumgehung: Sie können SSIS-Pakete mit der Developer Edition entwickeln. Wenn Sie eine Standard Edition im Netzwerk haben, können Sie SSIS-Pakete von dieser aus planen und ausführen. Sie können sogar SSIS-Pakete aus der Developer Edition ausführen, sofern dies nicht gegen die Lizenz verstößt
  • Siehe auch:
    Kann ich SSIS-Pakete mit SQL Server 2008 Express / Web oder Workgroup
    SSIS mit SQL Server 2005 Express ausführen?

Profiling

mika
quelle
2
  1. Wenn Sie die SQL Server-Lizenz lesen, müssen Sie keine zusätzliche Lizenz für den passiven Server erwerben, wenn diese ausschließlich für das Failover verwendet wird und keine Abfragen bearbeitet werden, bis der erste Server ausfällt.

  2. Wir haben SQL Server Express ziemlich lange verwendet, und es ist gut und viel besser als früher MSDE, wir haben mehr als 200 gleichzeitige Verbindungen, aber wir haben nur eine Datenbank mit einer Größe von 2 GB, und alles ist reibungslos. Wir hatten nie Probleme, vorausgesetzt, wir vermeiden teure Verknüpfungen und führen eine gute Indizierung durch. Jetzt verwenden wir SQL Standard, aber bis Ihre Datenbankgröße mehr als 4 GB und Ihre Benutzeranzahl weniger als 200-500 beträgt, können Sie mit SQL Express sicher leben.

  3. SQL Server Express benötigt etwas weniger Speicherplatz (ca. 200 MB), wohingegen die Standard Edition ca. 1,5 GB verwendet, wahrscheinlich, weil die Standard Edition viel Caching ausführt. Ihre Abfragen sind in Express in wenigen Millisekunden langsamer als in der Standardausgabe. Leider verwendet die Express Edition keinen Multi-Core-Prozessor (dies ist eine eingeschränkte Funktion), sodass es keine große Hilfe ist, wenn Sie einen 2-Core- oder einen 4-Core-Prozessor haben.

Akash Kava
quelle
Ich dachte, SSE 2008 verwendet Multi-Cores (bis zu 4)?
Beep Beep
@LuckyLindy Standard verwendet bis zu 4 Sockel, mit einer Vielzahl von Kernen pro Sockel.
Mrdenny
"aber bis Ihre Datenbankgröße mehr als 4 GB beträgt" 4 GB sind die Beschränkung pro Instanz. Ich kann mich nicht erinnern, dass die Anzahl der verwendeten Instanzen begrenzt ist
Gennady Vanin Геннадий Ванин
2

LuckyLindy - Ich möchte Sie dazu ermutigen, eine kurze Pause einzulegen und sicherzustellen, dass Sie den SQL-Agenten nicht benötigen. Sie schrieben:

Wir sind dabei, eine duale Web- / interne Transaktionsanwendung einzuführen, bei der jeder Kunde über eine eigene Datenbank verfügt. Jede Datenbank ist sehr klein - jeweils weniger als 50 MB. Daher haben wir uns gefragt, ob es sinnvoll ist, SQL Express 2008 anstelle des vollständigen SQL Servers zu verwenden.

Was ist Ihr Plan für Backups? Sie müssen den SQL-Agenten nicht verwenden, er erleichtert jedoch das Leben eines DBAs. Sie können T-SQL / SMO / PowerShell / beliebige Skripts schreiben, die Ihre Sicherungen ausführen, und dann über sqlcmd oder PowerShell mit einer geplanten Task ausführen.

Was ist Ihr Plan für die Datenbankwartung? Im Laufe der Zeit müssen diese Datenbanken defragmentiert und auf Konsistenz überprüft werden. Die Standard Edition bietet alle Arten von Extras, um dies zu vereinfachen, während Sie in Express arbeiten müssen (erneut mit Skripten und geplanten Aufgaben).

Wie werden Sie über Probleme auf dem Server informiert? Der Agent hilft hier mit Alerts, um Sie zu benachrichtigen, wenn ein Protokoll voll ist, ein Datenträger voll ist usw.


Hierbei handelt es sich um wichtige Aufgaben vom Typ SQL Server DBA. Es ist eine Sache, Express für eine Inhouse-App auszuführen, aber wenn Sie uns sagen, dass Sie diese für Kunden hosten, mache ich mir Sorgen :)


In Teil 2 werden Sie gefragt, wie viele Kunden Sie dabei unterstützen möchten - sowohl beim Start als auch nach einem Jahr? Wenn Sie "100 Clients" sagen, reichen 100 50-MB-Datenbanken in Express nicht aus - Sie haben einfach nicht genug Speicher. Verdammt - je nachdem, wie viel Delta Sie haben, könnten Sie bei 15 DBs maximal sein, ich weiß es nicht.

Wir werden nie mehr als ~ 200 Benutzer gleichzeitig haben und die meisten Vorgänge werden transaktionaler sein (was viele Hochgeschwindigkeits-Festplatten gegenüber starkem RAM / CPU zu bevorzugen scheint, oder?)

Transaktionsvorgänge wie INSERTs werden weiterhin in den Speicher geschrieben. Erwarten Sie daher nicht, dass Sie weniger Speicherunterstützung benötigen. Abhängig von der Anzahl der INSERTs, die Sie ausführen, ist der Speicherbedarf bei dieser Anzahl von Benutzern möglicherweise größer als bei den meisten anderen. Wenn Sie viele Daten laden, die von anderen nicht wirklich verwendet werden, belegt sie immer noch Speicherplatz. Es kann zu Konflikten zwischen "Daten, die Benutzer häufig abfragen" und "Daten, die Benutzer laden und die für eine Weile von niemandem abgefragt werden" kommen. SQL schützt uns, indem es sicherstellt, dass die Daten, die im Arbeitsspeicher häufiger abgefragt werden, länger bestehen, Sie jedoch weiterhin Konflikte haben.

An diesem Punkt wandere ich lol. Und 200 gleichzeitige Benutzer sind auch nicht für Express bei mir. Angenommen, 64 KB sind die durchschnittlichen Anforderungen an den Verbindungsspeicher. Wie viele Verbindungen stellen Ihre Apps her? Verwenden Sie das Verbindungspooling?

Alles in allem sagt mein Bauchgefühl beim Lesen Ihrer Beschreibung: "No - Express Edition ist einfach nicht mächtig genug." Und ich hasse die Workgroup Edition - denke, es ist ein schlechtes Geschäft -, also scheint mir Standard richtig zu sein.

Scott Whigham
quelle
2
Scott - Tolle Antwort. Zu Ihrer Information ... SQL Server Express hat tatsächlich keine Speichergrößenbeschränkung für alle Datenbanken. Sie können nur eine einzige Datenbank mit mehr als 4 GB Daten haben. Als Test habe ich 10.000 100-MB-Datenbanken (1 TB) auf einem einzelnen Server erstellt, und SQL Server Express lief einwandfrei. Außerdem wird der mit jeder Verbindung verbundene Speicher nicht für die Gesamtgröße von 1 GB gezählt. Ich bin damit einverstanden, dass das Verwalten all dieser Datenbanken ein bisschen mühsam sein kann. Da wir jedoch tatsächlich Tausende von Datenbanken haben, benötigen wir wahrscheinlich sowieso Skripte (es gibt keine Möglichkeit, eine Datenbank manuell zu berühren, wenn dies nicht der Fall ist korrupt).
Beep Beep
+1, ich stimme zu, dass es eine gute Antwort war, aber ich habe es auch positiv bewertet
Gennady Vanin Геннадий Ванин
1

Haben Sie darüber nachgedacht, eines der kostenlosen DBMS (MySQL, PostreSQL ...) zu verwenden? Das würde Ihre Lizenzbedenken lindern?

Wenn dies keine Option ist, scheint SQL Server Express eine gute Lösung zu sein.

sleske
quelle
2
Wir haben letztes Jahr Leistungstests für alle wichtigen Datenbanken durchgeführt - MySQL, PostgreSQL, Firebird, DB2, Oracle, SQL Server, SQL Server Express und SQL Desktop. Wir haben festgestellt, dass DB2, Oracle und SQL Server (und Express, aber nicht Desktop) MySQL und PostgreSQL unter Windows für unsere Transaktionsoperationen weggeblasen haben - um den Faktor 2. 1/2 Die Leistung bedeutet die doppelte Anzahl von Servern. MySQL und PostgreSQL schnitten unter Linux etwas besser ab, waren aber immer noch nicht auf dem gleichen Niveau.
Beep Beep
1

Es kann sicherlich für bedeutende Produktionsanwendungen verwendet werden. Wir haben es in über 1500 Kliniken im Gesundheitswesen mit separaten SQL Server Express-Instanzen verwendet, um täglich Millionen von Transaktionen zu verarbeiten. Sie können den Nachteil des SQL Server-Agenten auf einfache Weise umgehen, indem Sie eine der folgenden Methoden verwenden:

  1. Drittanbieterprodukt wie SQLAutomate
  2. Windows-Taskplaner
  3. Eine Standard- oder Enterprise-Edition von SQL Server mit den installierten Master-Server-Funktionen 1 und 2 ist sehr kostengünstig oder kostenlos. 3 ist teuer, es sei denn, Sie haben es bereits in Ihrer Umgebung verfügbar.

Siehe Michael Oteys ausgezeichnete Präsentation (google it) zum Thema "Verwenden von SQL Server Express in der Produktion".

Pazifischer Winter
quelle
Es war eigentlich ein 7 Jahre alter Beitrag :)
BaronSamedi1958