| TIP : Anti Blocker Strategien | |
|
zurück |
Autor : Sancho Fock Eine sinnvolle Strategie zur Lösung von konkreten Blocking Problemen kann nur gefunden werden, wenn man sich klar macht, um was für eine Art von Blocksituation es sich handelt. Das offensichtlichste Kriterium, nach denen sich Bocksituationen einteilen lassen, ist ihre durchschnittliche Lebensdauer. Aufgrund dieser Einteilung ergeben sich folgende Kategorien:
Im Folgenden sollen diese vier verschiedenen Arten von Blocksituationen hinsichtlich ihrer möglichen Ursachen und in Bezug auf angemessene Lösungsstrategien erörtert werden. Seitenanfang Short time scale Blocks In Multiuser Datenbanken kommt es zwangsläufig zu solchen Situationen; sie stellen normalerweise kein Problem für den Betrieb einer Anwendung dar. Dieser Art von Blocksituation sollte jedoch dann nachgegangen werden, wenn sie entweder bereits bei wenigen Usern auftritt oder wenn sie sehr häufig auftritt. Treten diese Blocksituationen sehr häufig auf, kann das zu Schneeballeffekten führen und das gesamte System lähmen. Auch wenn das Problem wahrscheinlich nicht vollständig gelöst werden kann, sollte zumindest versucht werden, es zu entschärfen. Ursachen: Short time scale Blocks, welche sehr häufig auftreten, lassen sich auf folgendes Grundproblem zurückführen: Für die vorhandene Userbelastung ist die Gesamtperformance des Systems zu niedrig. Lösungsstrategien: Dieser Problematik kann am besten dadurch begegnet werden, indem ein umfangreiches Performancetuning des Servers und der Applikation durchgeführt wird. Tritt diese Situation erst bei sehr hoher Userlast auf, beginnt man am Server und am Netzwerk mit der Untersuchung. Tritt diese Situation jedoch schon bei niedriger Userlast auf, sollte man untersuchen, ob sich bestimmte Use Cases der Client Anwendung konzeptionell gegenseitig oder selbst blockieren können. Sollte im konkreten Fall herausgefunden werden, daß dies so ist, dann muß untersucht werden, ob sich die Wahrscheinlichkeit des Auftretens dieser unerwünschten Situationen durch atomare Transaktionen, Verwendung von "row level locking" oder ähnlichem verringern läßt. Seitenanfang Mid time scale Blocks Diese Art von Blocksituation ist am schwierigsten zu finden. Sie dauert lange genug, um den Betrieb einer Anwendung zum Erlahmen zu bringen, ist aber meist zu kurz, um sie manuell analysieren zu können. Unterstützung bietet der THS Software SQL Guard 2000. Vom SQL Guard 2000 kann hier eine kostenlose Demoversion heruntergeladen werden. Ursachen: Die möglichen Ursachen für diese Art von Blocks sind die folgenden:
Lösungsstrategien: Wenn man - z.B. mit Hilfe des SQL Guards - die Transaktionen gefunden hat, welche andere Prozesse blockiert, muß isoliert werden, welche Art von Fehler vorliegt. Bei komplexen Transaktionen ergeben sich die folgenden Fragen:
Diese Fragen bieten Ansätze zur Lösung des Problems. Werden allerdings alle Fragen verneint, so muß die Situation entweder in Kauf genommen werden, oder es muß über die Geschäftsprozesse nachgedacht werden, do dass die problematischen Transaktionen ggf. ablöst werden könnten. Weitere Lösungsstrategien:
Seitenanfang Long time scale Blocks Diese Blocks sind den mid time scale blocks sehr ähnlich. Grundsätzlich können sie auch die gleichen Ursachen haben, wie die mid time scale blocks. Zusätzlich können sie die folgenden Ursachen haben:
Für beide Gründe gilt, dass Ihre Lebensdauer in den Bereich von mid time scale blocks fallen können, wenn beispielsweise Transaktionstimeouts definiert wurden oder der Endanwender seinen Client abschießt. Lösungsstrategie: Die Lösungsstrategie bei den beiden zusätzlichen Ursachen ist klar: Fehler beseitigen. Seitenanfang Sonderfall Deadlocks Da es in der Literatur viel über Deadlocks zu lesen gibt, soll an dieser Stelle nur kurz darauf eingegangen werden: Deadlocks sind ein Sonderfall einer Blocksituation, da es hier keinen eindeutig "Schuldigen" gibt. Der MS SQL Server kann Deadlocks auch sehr gut erkennen und behandeln. Lesen Sie dazu die MS Dokumentation. Im Wesentlichen tut der SQL Server bei Deadlocks das gleiche, das auch der SQL Guard 2000 bei Blocksituationen macht: Er terminiert einen Prozess. Der einzige Unterschied ist, das der SQL Server bei einem Deadlock keinen Schuldigen kennt, und deshalb ein "victim" auserwählt. Man kann Deadlocks in größeren Systemen niemals vollkommen ausschließen. Die Strategien, um Ihre Quantität zu verringern, sind die gleichen, die man anwenden kann, um Blocksituationen allgemein zu vermeiden. Zudem kann man darauf achten, dass es keine Transaktionen gibt, die die gleichen Ressourcen in umgekehrter Reihenfolge benötigen. Seitenanfang Allgemeine Strategien und Richtlinien, um Blocksituationen so selten wie möglich zu machen
Seitenanfang zurück |