Mailinglisten-Archive |
Marcel Beerta schrieb am Dienstag, den 10. August 1999: > Für mich wäre es einfacher, alle Bilder in der Datenbank zu > speichern aber ich bin mir unsicher ob das gut für die Performance > ist. Was denkt ihr denn davon, die datenbank vollzublobben ?! Christian Mack hat das auf der internationalen MySQL-Mailingliste sehr schön zusammengefaßt. Hier meine übersetzte Version mit Ergänzungen ... Frage: Wie speichert man Bilder in einer MySQL-Datenbank? Antwort in Stichpunkten: - Zur Speicherung verwendet man einen der BLOB-Feldtypen. - Beim Einfügen der Binärdaten müssen die Zeichen ' " \ und die Binärnull kodiert werden als \' \" \\ und \0 - Beim Auslesen aus der Datenbank erhält man direkt die Binärdaten. - Für Bilder größer als etwa 100 KByte ist es meist besser, sie im Dateisystem und nicht in MySQL zu speichern. - Speichert man Bilder in MySQL, so empfiehlt es sich, alle BLOBs zusammen mit einem Identifikator (z.B.: bid INT) zentral in _einer_ Tabelle zu speichern und in anderen Tabellen nur mit dem bid zu arbeiten. So hat man das Problem der Fragmentierung nach Löschungen und Änderungen nur in der einen BLOB-Tabelle und die Arbeit mit anderen Tabellen wird nicht verlangsamt. - Tabellen können in MySQL 3.22.x nur maximal 4 GByte groß werden. Manche Betriebssysteme beschränken das evtl. auf nur 2 GByte. Man kann deshalb nur ca. 20000 Bilder zu 100 KByte in einer Tabelle ablegen. Frage: Wie verwende ich solche Bilder in HTML-Seiten? Antwort: - In der HTML-Seite verwendet man ein normales <IMG>-Tag, gibt als URL für das Bild aber ein CGI-Skript oder PHP-Programm an, welches das gewünschte Bild aus der Datenbank abruft. - Dabei muß der Content-TYpe passend zum Bild erzeugt werden, also Content-Type: image/gif oder Content-Type: image/jpeg Ciao, Martin -- Martin Ramsch <m.ramsch_(at)_computer.org> <URL: http://ramsch.home.pages.de/ > PGP: 0xE8EF4F75, 52 44 5E F3 B0 B1 38 26 E4 EC 80 58 7B 31 3A D7
php::bar PHP Wiki - Listenarchive