Entries Tagged as 'MySQL'

MySQL: Mehr Performance durch Query-Cache

MySQL No Comments »

Im Query-Cache, der seit Version 4 zur Verfügung steht, werden Queries und deren Ergebnisse gespeichert. Wenn das gleiche Statement mehrmals benutzt wird und die betroffenen Datensätze sich nicht verändert haben, wird das Ergebnis aus dem Cache geliefert. In Szenarien, in denen häufig auf Bestandsdaten zugegriffen wird, kann dieser Cache enmorme Geschwindigkeitssteigerungen bewirken. Besonders bei komplexen Statements kann der Query-Cache sehr wirkungsvoll sein, da das zeitaufwändige Parsen der Statements entfällt.

[root@machine]mysql -uroot -prootpassword
mysql> set global query_cache_type=1;
mysql> set global query_cache_size = 67108864;
mysql> FLUSH QUERY CACHE;

67108864 Bytes = 64 MB. Das sollte für den Anfang genug Speicher sein, denn der Query-Cache wird im RAM abgelegt.

Nun besuchen wir ein paar unserer Seiten, die Datenbankabfragen enthalten und prüfen anschließend den Cache.

[root@machine]mysql -uroot -prootpassword
mysql> SHOW STATUS LIKE 'q%';

Das Ergebnis sollte in etwa so aussehen:

+-------------------------+----------+
| Variable_name | Value |
+-------------------------+----------+
| Qcache_free_blocks | 1 |
| Qcache_free_memory | 66564920 |
| Qcache_hits | 2181 |
| Qcache_inserts | 417 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 396 |
| Qcache_queries_in_cache | 270 |
| Qcache_total_blocks | 590 |
| Questions | 4828 |
+-------------------------+----------+
9 rows in set (0.00 sec)

MySQL: Table is marked as crashed and should be repaired

MySQL No Comments »

Eigentlich wollte ich heute nur 1 Feld zu einer MySQL Tabelle hinzufügen. Also wie immer phpMyAdmin aufgerufen und die entsprechende Tabelle ausgewählt.
Und BANG! Table xyz is marked as crashed and should be repaired

Im phpMyAdmin unter Operationen nachgesehen, doch die dort üblicherweise Verfügbaren Hilfsmittel standen nicht zur Auswahl. Was tun also, wenn's brennt?

Man wendet sich an Ruth, den Ruth darf alles ;)

Terminal auf, SSH Verbindung zum Server und los geht's:

[root@host ~]# mysqlcheck -A  -r -uBenutzer -pPasswort

Das -A sorgt dafür dass alle Tabellen überprüft werden, das -r sorgt dafür dass versucht wird die Tabellen zu reparieren.

Sollte das nicht ausreichen, sollte man die MySQL Dokumentation konsultieren. Hier findet man ein weiteres Tool "myisamchk".

MySQL: Doppelte Einträge per Subselect löschen

MySQL No Comments »
DELETE adressen FROM adressen,
(SELECT count(*) as counter,
min(id) as id,
name, anschrift, plz, ort
from adressen
GROUP BY name, anschrift, plz, ort
HAVING counter > 1) as doppel
WHERE adressen.name = doppel.name and
adressen.anschrift = doppel.anschrift and
adressen.plz = doppel.plz and
adressen.ort = doppel.ort and
adressen.id != doppel.id;

MySQL: Doppelte Einträge einer Tabelle ausgeben

MySQL No Comments »
SELECT * FROM table GROUP BY column HAVING count(column) >1;
Powered by Mango Blog. ©2010 Patrick Heppler. Design inspired by the GlossyBlue Theme © N.Design Studio.
RSS Feeds