Forums Neueste Beiträge
 

Mandanten mit Partitionen erschlagen?

03/09/2007 - 13:08 von Christoph Schneegans | Report spam
Hallo allerseits!

Ich entwickle eine .NET-Anwendung auf Basis von SQL Server 2000, die zur Pflege
von eCommerce-Katalogdaten verwendet wird. Die meisten Installationen dieser
Anwendung verwenden einen oder zwei "Mandanten", deren Daten völlig unabhàngig
sind. Einige Installationen verwenden jedoch bis zu einhundert Mandanten, und
bei diesen Installationen làßt die Performance dann auch sehr zu wünschen übrig.

Ist das ein Szenario, wo eine Partitionierung von Tabellen sinnvoll sein könnte?
Bspw. könnte man die entsprechenden Tabellen nach dem Anfangsbuchstaben des
Mandanten partitionieren. Kann ich damit rechnen, daß SELECTs, INSERTs, UPDATEs
und DELETEs in diesen Tabellen nach der Partitionierung spürbar performanter
ausgeführt werden? Ich möchte es allerdings vermeiden, sekundàre Datendateien
anzulegen.

BOL hàlt sich bei dem Thema AFAICS etwas bedeckt; ich habe schon gelesen, daß
Partitionierung bei SQL Server 2005 deutlich vereinfacht wurde, aber eine
Migration von 2000 auf 2005 kommt derzeit nicht in Frage. Wo finde ich also
detaillierte Informationen zum Vorgehen in SQL Server 2000?

<http://schneegans.de/frontpage/faq/> · Die hàufigsten Fragen zu FrontPage
 

Lesen sie die antworten

#1 Christoph Muthmann
03/09/2007 - 15:40 | Warnen spam
Christoph Schneegans wrote:
Hallo allerseits!

Ich entwickle eine .NET-Anwendung auf Basis von SQL Server 2000, die
zur Pflege von eCommerce-Katalogdaten verwendet wird. Die meisten
Installationen dieser Anwendung verwenden einen oder zwei
"Mandanten", deren Daten völlig unabhàngig sind. Einige
Installationen verwenden jedoch bis zu einhundert Mandanten, und bei
diesen Installationen làßt die Performance dann auch sehr zu wünschen
übrig.

Ist das ein Szenario, wo eine Partitionierung von Tabellen sinnvoll
sein könnte? Bspw. könnte man die entsprechenden Tabellen nach dem
Anfangsbuchstaben des Mandanten partitionieren. Kann ich damit
rechnen, daß SELECTs, INSERTs, UPDATEs und DELETEs in diesen Tabellen
nach der Partitionierung spürbar performanter ausgeführt werden? Ich
möchte es allerdings vermeiden, sekundàre Datendateien anzulegen.

BOL hàlt sich bei dem Thema AFAICS etwas bedeckt; ich habe schon
gelesen, daß Partitionierung bei SQL Server 2005 deutlich vereinfacht
wurde, aber eine Migration von 2000 auf 2005 kommt derzeit nicht in
Frage. Wo finde ich also detaillierte Informationen zum Vorgehen in
SQL Server 2000?



Hallo Christoph,
mit Partitionierung habe ich keine praktischen Erfahrungen, versuche es
aber mal von einer anderen Seite anzugehen.

Verwendest Du wirklich den Mandanten-Namen in allen Tabellen und keine
Mandanten-Nummer? Die Nummer würde weniger Speicherplatz verbrauchen,
die Sàtze kürzer und damit mehr Sàtze in einem Block liegen, was die
IOs reduziert.

Ich setze jetzt mal voraus, dass Dein Hauptaugenmerk auf dem nach
Mandanten getrennten Betrieb liegt. Selektionen/Aggregate über alle
Daten gibt es nicht oder müssen nicht sehr schnell sein. Dann würde es
ja Sinn machen, die Daten nach Mandanten sortiert auf der Platte zu
haben.

Enthalten deine geclusterten Indizes auch den Mandanten-Namen, oder
sind die Daten bunt verstreut, so dass jedes Select eine Rundfahrt über
die ganze Platte macht? Dieses wàre eine einfache Abwandlung der
Partitionierung und zeigt die möglichen Auswirkungen, auch für
Abfragen, die nicht nur auf einen Mandanten gehen.

Wàre es eine Option für jeden Mandanten eine eigene Datenbank zu
betreiben?
Hat der Server genügend Memory um alle Abfragen parallel zu
verarbeiten, oder gibt es nur wenige User für diese Anwendungen?

Einen schönen Tag noch,
Christoph
(Please post ALL replies to the newsgroup only unless indicated
otherwise)

Ähnliche fragen