Wie wir in den vorangegangenen Beispielen gesehen haben, reicht
es nicht aus, einer Datenbank zu sagen, welche Daten sie zu
suchen hat. Wir müssen ihr auch noch Hilfen geben, mit denen sie
in der Lage ist, diese Aufgabe schnell zu erfüllen. Eine sehr
wichtige solche Hilfe ist ein Index.
Eine MYD-Datei wird, wenn sie keine Lücken hat, durch Anfügen von
neuen Datensätzen verlängert. Die natürliche Reihenfolge der
Datensätze in einer MYD-Datei ohne Löschen ist also
chronologisch. Wenn in der MYD-Datei auch gelöscht wird, werden
die Dinge komplizierter, denn MySQL wird versuchen, die Lücken
aufzufüllen. Die Reihenfolge der Datensätze ist dann
zufällig.
Das gleicht einer Bücherei, bei der neu gekaufte Bücher einfach
hinten in die freien Regale gestellt werden, und wenn Lücken
vorhanden sind, diese aufgefüllt werden.
Ein Index ist eine Struktur, die uns erlaubt, bestimmte Suchen
schneller …
Suchen dauern auf unserer Tabelle sehr lange.
root@localhost [rootforum]> select * from t where i = 1163012190;[Mehr]
+----------+--------------+---------------------------+------------+
| id | d | e | i |
+----------+--------------+---------------------------+------------+
| 19999993 | vrciabekkgcb | ykdewonxucqpwtdvzgnschyaw | 1163012190 |
+----------+--------------+---------------------------+------------+
1 row in set (21.81 sec)
root@localhost [rootforum]> select * from t where i = 944905110;
+----+--------------+---------------------------+-----------+
| id | d | e | i |
+----+--------------+---------------------------+-----------+
| 5 | kgiyuxheibsa | bipgdpnvetowphowepuerediy | 944905110 |
+----+--------------+---------------------------+-----------+
1 row in set (19.94 …
Für die folgenden Beispiele wird eine breitere Tabelle gebraucht,
und es müssen auch einige Testdaten vorhanden sein. Daher hier
einmal eine Tabellendefinition und ein Generatorscript für
Testdaten:
root@localhost [rootforum]> drop table t;
Query OK, 0 rows affected (0.00 sec)
root@localhost [rootforum]> create table t ( id bigint unsigned not null, d char(12) not null, e char(25) not null, i integer unsigned not null );
Query OK, 0 rows affected (0.22 sec)
root@localhost [rootforum]>
[1]+ Stopped mysql -u root -p
In http://vvv.koehntopp.de/rrd überwache ich die
Leistungsfähigkeit meines Dedicated Servers. Gestern abend habe
ich mein kleines Erfassungsscript einmal um einige Funktionen
erweitert, um auch die internen Leistungsdaten von MySQL mit
auszulesen und abzuspeichern - jedenfalls in Auszügen.
Das Resultat sind die Grafiken in mysql-traffic und darunter in meiner
Grafiktapete.
"MySQL-Leistungsdaten erfassen" vollständig
lesen
Arjen Lenz betreibt nicht nur den existierenden Planet MySQL in englischer Sprache, sondern
bereitet jetzt einen solchen auch in deutscher Sprache vor.
Wenn Ihr also ein Blog habt, das Artikel in deutscher Sprache
veröffentlicht, dann meldet Euch doch bei arjen@mysql.com. Am günstigsten wäre
es, wenn Euer Blog eine Kategorie "MySQL" hat, und diese als
RSS-Feed bereitsteht, aber Arjen bekommt Artikel auch nach
Stichworten oder Tags in seinen Planet gefiltert.
Ein Planet ist eine Website, die Blogs zu einem bestimmten Thema
einsammelt und aggregiert anzeigt. Planet Köhntopp sammelt z.B. meine Blogroll
ein und aggregiert sie nach Kategrien sortiert.
Ein MySQL Datenbankserver hat ein Datadir. Das Kommando
root@localhost [(none)]> show variables like "datadir";
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)
sagt uns, wo das liegt. In datadir wird für jede mit "CREATE
DATABASE" angelegte Datenbank ein Verzeichnis angelegt, und für
jede mit CREATE TABLE in dieser Datenbank vorhandene Tabelle eine
*.frm-Datei. Dies gilt für alle Tabellentypen, die MySQL
verwendet, sogar für MEMORY-Tables. Die frm-Datei beschreibt die
Definition der Tabelle, also welche Spalten und Indices vorhanden
sein sollen.
root@localhost [(none)]> create database rootforum;[Mehr]
Query OK, 1 row affected (0.00 sec)
root@localhost [(none)]> use …
Das Entwickler Magazin berichtet in seiner jüngsten Ausgabe 2.06 in der Rubrik “Datenbank Magazin” über den MySQL Datenbankserver. Im Titelthema “MySQL 5.0 - Best Practices: Tipps und Tricks zu MySQL” wird dem Leser eine Übersicht über den Entwicklungsstand der Datenbank geboten. Der Artikel bildet den Auftakt zu einer Serie im Entwickler Magazin, die Ihnen die besten Tripps und Tricks zu MySQL näherbringen wird.
Das Entwickler Magazin berichtet in seiner jüngsten Ausgabe 2.06 in der Rubrik “Datenbank Magazin” über den MySQL Datenbankserver. Im Titelthema “MySQL 5.0 - Best Practices: Tipps und Tricks zu MySQL” wird dem Leser eine Übersicht über den Entwicklungsstand der Datenbank geboten. Der Artikel bildet den Auftakt zu einer Serie im Entwickler Magazin, die Ihnen die besten Tripps und Tricks zu MySQL näherbringen wird.
Das Entwickler Magazin berichtet in seiner jüngsten Ausgabe 2.06 in der Rubrik “Datenbank Magazin” über den MySQL Datenbankserver. Im Titelthema “MySQL 5.0 - Best Practices: Tipps und Tricks zu MySQL” wird dem Leser eine Übersicht über den Entwicklungsstand der Datenbank geboten. Der Artikel bildet den Auftakt zu einer Serie im Entwickler Magazin, die Ihnen die besten Tripps und Tricks zu MySQL näherbringen wird.
Den Rekord für die weiteste Anreise halte nächste Woche wohl ich.