Zitat von
Gecko:
Killen viele BLOB-Felder die
DB-Performance?
Das würde ich mit einem eindeutigen Ja beantworten.
Ich habe folgenden Test mit dem MS
SQL Server 2000 durchgeführt:
Alle Daten einer Tabelle (~30 Felder) mit 50000 Records werden mit "Select * FROM Tabelle" abgerufen.
Dann habe ich zwei Blob-Felder eingefügt.
Fast alle Blob-Felder waren leer, ungefähr bei 10 Datensätzen waren kurze Inhalte eingetragen.
Zwischen den Testläufen wurde jeweils der gesamte Cache gelöscht.
Ergebnis: ca. 15% weniger Leistung.
Meine Erklärung:
ein Blob-Feld löst allein schon durch sein Vorhandensein zusätzliche Aktionen in der
DB aus.
Vorallem werden Blob-Daten physikalisch auf anderen Seiten als die Tabelle gespeichert.
Daher ergeben sich zusätzliche Festplattenzugriffe.
Workaround:
Man speichert die Blobdaten nicht direkt in der Tabelle, sondern in einer eigenen Tabelle.
Dies erfordert einen zusätzlichen Primärschlüssel für die Blobtabelle und einen Fremdschlüssel (pro Blobfeld) für die Orginaltabelle. (Datentyp int32 verwenden!)
Falls man die Blob-Daten wirklich braucht, kann man gezielt nur Blobdaten für den aktuellen Datensatz abrufen.