[prev in list] [next in list] [prev in thread] [next in thread]
List: suse-adabas
Subject: Re: [suse-adabas] Optimierung Kernel Parameter
From: Joerg Bruehe <joerg () sql ! de>
Date: 2001-08-27 11:14:14
[Download RAW message or body]
Hallo in die Runde
(und nachtraeglich allen eine schoene Urlaubszeit)!
Christof Lehmann wrote:
>
> Hallo Michael,
>
> > [...]
> > Wir haben wenig schreibende Zugriffe, dafür aber sehr oft einen Zugriff
> > auf Tabellen mit mehreren 100.000 Datensätzen, wobei oft kein Indexzugriff
> > stattfindet.
> Irgendwie sollte man die Datenbank dazubringen, einen Indexzugriff
> vorzunehmen.
> Wenn keine Indizes vorhanden sind, dann entsprechende Anlegen. Wenn
> vorhanden, aber nicht genutzt, dann gibt es zwei Möglichkeiten. Wenn der
> Optimierer zu der Erkenntnis kommt, daß bei der Suche mehr als 15%(?)
> gefunden werden würde, verwendet er den Index nicht.
Richtig - und das ist eine bewusste Design-Entscheidung.
> Das kann an
> fehlerhaften Daten in der Statistik liegen (update statistics tablename)
> oder der Inhalt in der indizierten Tabelle ist nicht gleichmäßig
> verteilt.
Missverstaendlich formuliert: Auch bei aktuellen Statistik-Werten
greift weiterhin die 15%-Regel.
In der Formulierung "Bei fehlerhaften Statistik-Werten steigt das
Risiko,
dass ein sinnvoller Index nicht benutzt wird" ein wichtiger Hinweis.
Ganz grundsaetzlich ist die gewaehlte Strategie abhaengig von
1. Kommando (fuehrende Index-Felder eindeutig vorgegeben?, ...),
2. Schema (Tabellen und Indexe),
3. Daten (Index-Selektivitaet, 15%-Regel).
Kernel-Parameter spielen hier keine Rolle.
> > Der Hauptspeicher hat 1 GB.
> > DataCacheHits ~ 100%
Gut.
> > ConverterCacheHits 70-80%
_Sehr_ schlecht.
Unbedingt den Converter-Cache vergroessern, um 99% zu erreichen.
(Ob 100% moeglich sind oder wegen der "Cache Misses" beim Anlaufen
nicht erreichbar, kann ich nicht sicher sagen.)
> Sucht Ihr immer nach den gleichen Datensätzen?
> Bei beiden Werten sind Beträge über 90 oder noch besser über 95
> sinnvoll.
Ganz ausdruecklich: Fuer den Converter-Cache waere 95% immer noch
schlecht. Da jede Converter-Page viele Daten-Pages adressiert
(ca. 170), ist jeder "Miss" im Converter-Cache potentiell sehr
teuer. Erst wenn dieser Cache gross genug ist (99% Hit-Rate),
werden die anderen (performance-maessig) interessant.
> Da Euer Rechner 1GB Hauptspeicher hat, kannst Du die Werte für
> DATA_CACHE_PAGES und
> CONV_CACHE_PAGES höherstellen. An Deiner Stelle würde ich mit den
> CONV_CACHE_PAGES beginnen, so daß Du nach mehreren Anfragen (möglichst
> ein guter Durchschnitt durch alle Fragen) einen Wert über 90 erreichst.
^^
Siehe oben - 99%.
Die naechste Stufe ist dann _nicht_ der Daten-Cache, sondern die
Strategie - selbst wenn die Pages im Cache stehen, ist ein Scan
nicht so gut wie ein Index-Zugriff.
Wenn bei dieser Analyse ein unguenstiges Schema entdeckt wird
(oder schlechter SQL-Code), ist das zu verbessern.
Erst danach kommt der Daten-Cache an die Reihe.
(Durch bessere Strategie kann die Anzahl der benutzten Daten-Pages
so reduziert worden sein, dass auch ein kleinerer Cache ausreicht.)
> > [...]
> > MAXDATAPAGES 600000
> > MAXCPU 1
> > DATA_CACHE_PAGES 2000
> > PROC_DATA_PAGES 260
> > PROC_CODE_PAGES 1
> > TEMP_CACHE_PAGES 30
> > CATALOG_CACHE_PAGS 1616
> > CONV_CACHE_PAGES 400
Auf mindestens 1000 erhoehen, dann Stop-Start der DB (die Parameter
werden nur beim Start ausgewertet), dann bei gleicher Anwendungs-
Last neu messen.
Solange die 99% nicht erreicht werden, diese Schritte wiederholen
(bis maximal 4415, das laesst sich aus MAXDATAPAGES = 600000
berechnen).
Gruss und Erfolg,
Joerg Bruehe
--
Joerg Bruehe, SQL Datenbanksysteme GmbH, Berlin, Germany
(speaking only for himself)
mailto: joerg@sql.de
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic