Biggle's Blog

Web- und Software Development

by Mario Priebe

Verteilte Datenbankabfragen

Wenn man ein Ergebniss von mehreren Tabellen aus verschiedenen Datenbanken selektieren möchte, kann man das über ein UNION bewerkstelligen.

Die Anzahl der zu selektierenden Spalten muss immer gleich sein. Man kann auch verschiedene Spalten abfragen, diese müssen aber immmer vom selben Datentyp sein. Gegebenfalls muss man diese dann in den entsprechenden Typen casten.

Example


SELECT lastname, firstname FROM db1.contactTable
UNION
SELECT lastname, firstname FROM db2.otherTable


by Mario Priebe

Oracle 2 MySQL

50 hilfreiche Hinweise für eine Migration von Oracle nach MySQL findet man bei Xaprb.

oracle2mysql

by Mario Priebe

MYSQL Performance Tuning Primer

Mit folgendem Script vom MySQL Mitarbeiter Matthew Montgomery,  kann man seine MySQL Datenbank auf Performance testen. Getestet werden folgende Einstellungen:

SLOW QUERIES
BINARY UPDATE LOG
WORKER THREADS
MAX CONNECTIONS
MEMORY USAGE
KEY BUFFER
QUERY CACHE
SORT OPERATIONS
JOINS
OPEN FILES LIMIT
TABLE CACHE
TEMP TABLES
TABLE SCANS
TABLE LOCKING

Veränderungen oder Eingriffe in die Datenbank finden nicht statt.

performancetuningprimer


by Mario Priebe

MySQL 5.1 und die Partitionierung

Ich habe mich nun gerade 1h dahin gequält, eine MySQL Tabelle in “CHAR” zu partitionieren. Folgenden Ansatz hatte ich versucht (und auch sehr sehr viele andere).

   CREATE TABLE test
   ( id INT NOT NULL
   , name VARCHAR(45)
   )
   partition BY range(CHAR(name))
   ( partition p0 VALUES less than ('a'),
     partition p1 VALUES less than ('k'),
     partition p2 VALUES less than ('p'),
     partition p3 VALUES less than ('z')
   )

Bitte nicht nachmachen, denn:
Bis ich dann auf die “Beschränkungen und Grenzen der Partitionierung” gestossen bin,  wo dann folgendes steht:

Ein Partitionierungsschlüssel muss entweder eine Integer-Spalte oder ein Ausdruck sein, der einen Integer ergibt. Quelle mySQL

Na Prima, also Umdenken angesagt…

by Mario Priebe

phpminiadmin – Die 10kb-Alternative zu phpMyAdmin

Beim Dennis lese ich gerade das der phpMyAdmin einen kleinen Ableger bekommen hat, welcher viel leichtgewichtiger daher kommt als sein  Vorfahre.

Dieser nennt sich phpminiadmin und ist sage und schreibe ca. 10kb gross groß (phpMyAdmin 11MB (11264kb)) und beinhaltet lediglich nur eine Datei.

Nach den ersten Tests schon einmal ein kleines Urteil wie phpminiadmin auf mich wirkt: Kurz und knapp “Leichtgewichtig ja, aber lange nicht so mächtig.” Für kleine Dinge ganz gut und praktisch…



by Mario Priebe

10teilige MySQL Performance Serie

Wer das Beste aus Mysql heraus holen will, sollte sich die 10 Artikel im Netways Blog anschauen. Dort geht Bernd Erk auf folgende Themen rund um die Performance von Mysql ein:

  • Teil 1: Hardware, Speicher & Festplatten: Die wichtigen Ressourcen für MySQL
  • Teil 2: Storage-Engine: Welche Storage-Engine passt zu wem
  • Teil 3: MySQL-Proxy: Verwendung zur Lastverteilung und Änderung
  • Teil 4: Query-Cache: Daten aus dem Speicher ausliefern
  • Teil 5: Key-Buffer: Optimierung der Index-Verwaltung
  • Teil 6: Slow-Query-Log: Die Ausgabe des Slow-Query-Logs interpretieren
  • Teil 7: Table-Partitioning: logische Partitionierung von MySQL-Tabellen
  • Teil 8: Replikation: Tips zur Datenreplikation
  • Teil 9: Verwendung von Indizes: Richtige Verwendung von Indizes
  • Teil 10: Überblick behalten: Werkzeuge zum Monitoring der Datenbank

Mitunter neu war für mich der EXPLAIN Befehl, welcher Informationen dazu liefert, wie ein SELECT in der DB ausgeführt wird und wie und in welcher Reihenfolge Tabellen miteinander verknüpft sind. Ermittelt werden Ergebnisse, die zeigen wo Indizes konfiguriert werden müssen, um SELECT Anweisungen zu beschleunigen.

Wichtig für mich ist auch das Thema der Partitionierung von Tabellen, mit der man seine Tabelle in einzelne Teile zerlegen kann.