MySQL: MD5-Hash-Wert als Schlüssel

Hallo,

hier kurz was ich machen will:

  • komplexere DB-Abfrage-Ergebnisse sollen gecacht werden (in einer Tabelle)

  • dafür bilde ich jeweils einen MD5-Hash (aus Merkmalen des zu cachenden Inhaltes)

  • dieser dient als Schlüssel in der Tabelle

Nun meine Frage: kann man dieses Schlüssel-Feld noch optimieren?
Meine Ideen (wo ich aber nicht weiß, ob sie was bringen würden):

  • Feld als Varchar(32)

  • Feldlänge auf kürzer als 32 festlegen (bringt das was?)

  • ich könnte den MD5-Schlüssel in 2 16-Zeichen-Blöcke aufspalten, diese in dezimal umwandeln und in 2 Bigint-Feldern (die den Schlüsel bilden) speichern

Was haltet ihr von meinen wahnwitzigen Ideen? Habt ihr noch andere Ideen?

Ajo

Hallo Ajo,

Was haltet ihr von meinen wahnwitzigen Ideen? Habt ihr noch
andere Ideen?

korrekt, es ist eine wahnwitzige Idee! Was willst Du genau erreichen?
Datenbanksysteme cachen normalerweise die Abfragen und die Ausführungspläne (auch mit Ersetzung von Abfrageparameter -> also besser als Du es erreichen kannst).
Wenn Du nur die Ergebnisse von komplexeren Abfragen (solche Langläufer) zwischenspeichern willst, hast Du eine Nachbildung eines Reporting-Systems.Auch hier gibt es bestimmt Systeme, die Deine Anforderungen bereits jetzt erfüllen.

MfG Georg V.

Hallo,

da hast du Recht: DBMS chachen ihre Abfraben in der Regel selbstständig und effizient.

Meine Problemstellung ist aber:

  • Abfrage von Daten, die noch per Skript weiterverarbeitet werden sollen (auch nicht gerade unkomplex)
  • dieses fertige Ergebnis möchte ich cachen
  • außerdem kann ich mit eigener Cache-Tabelle bestimmen, wann der Eintrag verfällt (denn die Datenbank, wo die Daten herkommen ist stark ist stark frequentiert – der Cache verfällt also schnell)
  • außerdem: etliche Daten, die ich cachen will, liegen auf einem anderen DB-Server: ich kann mir durch eigenes Cachen den Connect zu dieser DB sparen

Ich denke, diese Gründe reichen für ein eigenes Caching

Ajo