Mailinglisten-Archive |
Thomas Heller wrote: > > Moin Moin! > > In der PHP3 Mailing Liste kam eine Diskussion über das Ablegen von > Bilddateien in > einer Datenbank. Ich habe das jetzt soweit eingerichtet und mir kommt das > alles recht fix vor. > Die Bilder landen in einem Table mit einer ID (PRIMARY KEY) und werden > in einer anderen Tabelle einem Produkt zugeordnet. > > Ein Argument war, daß die Daten wenn Sie gelöscht werden (DELETE FROM..) > nicht vollständig > von der Platte entfernt werden, sondern weiterhin bestehen. Wie handelt > mySQL solche > Vorgänge und wann/wie löscht er den ganzen Eintrag komplett? > > Hat jemand Erfahrungen damit Bilder in einer Datenbank abzulegen? > Gibt es Wege das weiter zu optimieren als über einen KEY den SELECT > durchzuführen? > > Danke, mfg > Thomas Hallo Thomas Was das löschen angeht: mysql verkleinert ihre Datenfiles nach dem Löschen mit DELETE nicht, sondern markiert den Platz lediglich als frei. Dadurch kann sie diesen beim nächsten INSERT wiederverwenden. Wenn Du den Platz auf der Platte brauchst, kannst Du die OPTIMIZE TABLE syntax benutzen. Diese solltest Du auch so ab und zu verwenden, um die Fragmentierung durch die BLOBs zu reduzieren. Besser ist es natürlich ab und zu isamchk über Tabellen mit Feldern variabler Länge laufen zu lassen. Die beste Art BLOBs (= Bilder) zu speichern ist eine Tabelle zu verwenden, die nur aus einer ID und einem BLOB selbst besteht, und dann alle Zugriffe auf den BLOB ausschließlich über die ID auszuführen. Da Du das bereis so gemacht hast, ist alles soweit OK. Das größte Problem mit mysql und BLOB's ist, daß im Augenblick eine Tabelle insgesammt nur maximal 2 GByte (bzw. 4 GByte bei einigen OS's) groß werden kann. Das bedeutet, daß bei Bildern von ca. 200 KByte nur ca. 10'000 in einer Tabelle Platz haben. Tschau Christian
php::bar PHP Wiki - Listenarchive