Tabellen Perfomance - lieber selbst drum kümmern?

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

Tabellen Perfomance - lieber selbst drum kümmern?

Postby Sosum » 22. January 2006 16:00

Hallo Leute,

ich arbeite zur Zeit an einem ziemlich ehrgeizigem Projekt. Hierbei spielt die Tabellenperfomance eine doch erhebliche Rolle, daher ist es wichtig, dass ich mir schon in der Konzeptphase gedanken darum mache. Vielleicht hat ja der eine oder andere von Euch da schon einschlägige Erfahrungen gemacht.

I.
Zur Diskussion stehen zwei folgende zwei Verfahren, die sich zunächst einmal aus Zeitgründen ausschliessen:

Gemeinsames:
- Tabellenfelder werden mit Bedacht gewählt. InnoDB Tabellen werden nur da eingesetzt, wo sie unvermeidlich (Transaktionssicherheit) sind.
- 10.000-70.000 Tabellenzeilen sind denkbar.

1.
- Tunig der Tabellen erfolgt über Analyse des Serververhaltens und Justierung der Server-Parameter hinsichtlich Speicher, Threads usw...

2.
- Jede Tabellenzeile enthält einen Aufrufzähler. Dieser statistische Wert zeigt also an, wie oft die Tabellenzeile aufgerufen wurde. Mittels dieser Information wird die Tabelle alle x Stunden neu aufgebaut, so dass die häufigen Aufrufe "zuerst" auftreten. Macht natürlich eine Abstraktion von der DB-ID Spalte notwenig, ist aber kein Problem.

Hauptsächlich frage ich mich, ob die Optimierung unter 2. überhaupt greift. Schliesslich pfuscht man da des Servers Handwerk rum. Der MySQL Server ist ja auch nicht blöd (oder :shock: ) und cachet die Anfragen. Häufige Aufrufe sollten somit eh schnell verfügbar. Leider fehlen mir da entsprechende Erfahrungswerte.

Die wahrscheinlich häufigste Operation wird es sein, einen Satz von Zeilen mittels einer bestimmten ID aus der besagten Datensatzgröße "rauszufiltern".

=======================
II. MySQL 5 Trigger:
Verzeiht mir. Hier habe ich noch nicht gegoogelt, fällt mir eben aber noch eine weitere Perfomancefrage ein: Wie leistungsfähig sind denn Trigger?
Soweit ich das bislang geblickt hab, sind Trigger atomar, werden also bei (Zeilen-)Events ausgeführt, also atomar. Sollte man sie eher einsetzen, oder lohnt doch lieber eine "externe" logisch höhergradige Lösung via PERL oder PHP?
Hintergrund: In PERL kann ich ja eine Reihe von Tabellenupdates in einer logischen Triggereinheit zusammenfassen und so wieder Rechenzeit sparen. Die MetaInformation, wieviele Updates zu erledigen sind, bevor der Trigger, gleich welcher Natur, ausgelöst wird, liegt ja nur in PERL vor. Oder gibt es eine Möglichkeit diese MetaInformation an MySQL zu übermitteln (Information variiert).

Könntet ihr mir ein paar Infos hierzu geben?
Grüße,
Aron
Sosum
 
Posts: 24
Joined: 08. September 2003 23:08

Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 28 guests