Schlagwort-Archive: old feature

Linux Huge Pages: Schnellstart

If you’re not using HugePages, you’re doing it wrong!  (Mark J. Bobak)

Sie haben eine SGA von mehreren GB Größe, dazu mehrere Hundert Sessions auf der Datenbank? Ihr DB-Server läuft unter Linux, aber ohne Einsatz von HugePages? Dann verschenken Sie RAM und CPU-Leistung, und zwar nicht zu knapp!

Über Linux HugePages wurde schon viel geschrieben (s. Literaturliste unten), jedoch hauptsächlich auf Englisch und meist sehr ausgedehnt. Dieser Artikel soll die wichtigsten Fakten und Maßnahmen in Kürze aufzeigen.

Szenario

Ein Praxisbeispiel vorweg: Eine Data Warehouse-DB mit 20 GB SGA und etwa 300 Sessions läuft auf einem Server mit 32 GB RAM. Gelegentlich gerät der Server unter höhere Last und fängt daraufhin an, massiv zu swappen; die Performance geht in die Knie. Was ist passiert?

Weiterlesen

Advertisements

SYSDATE in SQL und PL/SQL

Heute fühle ich mich genötigt, ein Thema anzusprechen, das zwar ein Grundlagenthema ist, das aber immer wieder gerne in Vergessenheit gerät. ;-)

Anlass ist ein Fund in einer Produktionsumgebung, in der eine Überlastung der CPU bei sehr hoher Anzahl an SQL-Ausführungen zu beobachten war. Die Umgebung basiert sehr stark auf PL/SQL, wobei häufig verwendete SQL-Abfragen gerne in einer Function gekapselt und dann aus SQL heraus aufgerufen werden. Weiterlesen

Alt, aber bezahlt: Oracle Disk Manager auf VxFS

Neues aus den Rubriken „Old Feature“ und „unbekannt oder unterbewertet„: Der Oracle Disk Manager (ODM)!

Nicht immer hat man als DBA in einem Unternehmen die Wahl, welche Speichersysteme man für die Datenbank einsetzt, und seien sie auch noch so effizient: Es gibt oft altertümliche Standards, gerne auch als „Best Practice“ bezeichnet (um sie über jeden Zweifel, jedes Gegenargument und jegliche Innovation erhaben zu machen), an die man sich halten muss. Ein solcher Standard ist die zwingende Nutzung von Dateisystemen anstelle von ASM und/oder Raw Volumes.

Worin aber sollen denn die Nachteile von Dateisystemen liegen? Sie sind doch so schön bequem handhabbar?

Weiterlesen

GROUP BY und ORA-00979 in 10gR2 und 11gR2

Aus der Rubrik „heute dazugelernt“: Oracle erlaubt es, mindestens seit 9iR2 (frühere Versionen habe ich nicht getestet), mehr Spalten in einer SELECT-Liste anzugeben, als später in der GROUP BY-Klausel verwendet werden.

Für Aggregatfunktionen wie COUNT(), SUM(), etc. ist das ja klar, es geht darüberhinaus aber auch mit

  1. Konstanten
  2. Ausdrücken, die für jede Zeile einer Gruppe denselben Wert liefern (also z.B. von einer der Spalten im GROUP BY abgeleitet sind).

Weiterlesen

RELY-Constraints als Hilfe für den Optimizer und die Datenmodellierung

Oft werden dem unbestrittenen Nutzen von Constraints Nachteile im Zeitbedarf für deren Einsatz gegenüber gestellt, dabei lassen sich diese Nachteile oftmals leicht umschiffen. Zudem kann die Geschwindigkeit von Abfragen wesentlich schlechter werden, wenn keine Constraints eingesetzt werden!

„Wir setzen keine Constraints in unserer [großen Datenbank|DWH-DB|…] ein, weil die Performance bei der Beladung dann zu schlecht ist.“
Diese Ausrede gilt spätestens seit der Verfügbarkeit von RELY-Constraints nicht mehr! Weiterlesen

Unterbewertet oder unbekannt: Deferred Constraints

Über Nutzen und Nachteile von Constraints wird gerne und leidenschaftlich gestritten. Auf der Seite der Nachteile wird oft angeführt, daß die zeilenweise Verifizierung (im Englischen auch gerne als „slow-by-slow“ verballhornt) ein Performance-Killer ist. Es wäre also durchaus praktisch, wenn auch Constraints stapelweise, z.B. pro Transaktion, abgearbeitet werden könnten. Auftritt der Deferred Constraints!

Weiterlesen

NVL-st Du noch oder COALESCE-t Du schon?

NULL-„Werte“ an sich können dem DB-Entwickler genug Kopfzerbrechen bereiten, um alleine damit ganze Artikelserien zu füllen. Hier möchte ich mich lediglich auf einen kleinen Ausschnitt der Problematik beschränken, nämlich der Performance beim Vergleichen und Ersetzen von NULLs. Zum Ersetzen von NULLs in Abfragen wird zumeist die Funktion NVL() verwendet. Diese Funktion hat jedoch zwei entscheidende Nachteile:

  1. Sie bietet nur die Möglichkeit, genau einen Ausdruck mit einem anderen zu ersetzen. Will man mehr als zwei Ausdrücke gegeneinander vergleichen, muss die Funktion kaskadiert werden.

  2. Der zweite Ausdruck wird immer ausgewertet, auch dann, wenn der erste Ausdruck bereits NOT NULL ist.

Weiterlesen