2009-04-02 7 views
2

Wir haben eine Datenbank mit einer großzügigen Verwendung des CLOB/TEXT-Datentyps im gesamten Schema. Nachdem ich gestern viele Abfragen auf mehrere Tabellen mit einem CLOB-Typ durchgeführt habe, kam ich zu dem Schluss, dass, sobald es einen CLOB in der SELECT-Klausel gibt (selbst wenn der Wert if NULL/empty ist), die Abfrage einen enormen Leistungseinbruch erleidet.Performance-Hit mit CLOB/TEXT?

Wir haben eine Client-Server-Anwendung (keine webbasierte), die beim Kunden installiert wird. Da wir auch mehrere Datenbanken im Backend unterstützen, ist es für uns nicht möglich, datenbankspezifische Optimierungen im Code vorzunehmen.

Von den CLOBs wegzugehen ist nicht wirklich eine Option.

Ich verstehe, dass die meisten Optimierungen für einen CLOB/TEXT-Datentyp auf dem Datenbankserver durchgeführt werden müssen. Welche Art von Empfehlungen sollte ich an die Kunden weitergeben?

Was könnte ich als Entwickler im Code tun, um die Abfragen zu beschleunigen?

Antwort

1

Der Umfang des Leistungsproblems wird datenbankspezifisch sein. Im Allgemeinen würden Sie jedoch erwarten, dass die meisten Implementierungen die CLOB-Daten an einem physisch getrennten Ort auf der Festplatte aus Feldern mit fester Breite speichern.

CLOBs sollten aus diesem Grund nur sparsam verwendet werden. Wenn Sie eines verwenden müssen, stellen Sie sicher, dass Sie nicht viele zur gleichen Zeit zurückbringen müssen. Sie sind am besten, wenn Sie nur jeweils einen abrufen müssen, z. B. wenn Sie den vollständigen Datensatz in Ihrem Client anzeigen.

0

Eine richtige Antwort wird weitere Informationen benötigen. Können Sie insbesondere Beispiele für "langsame" Abfragen zusammen mit der Struktur der Tabellen, auf die sie zugreifen, veröffentlichen?

Das gesagt, im Allgemeinen CLOBs sollten nicht automatisch zu Leistungsproblemen führen.

Abfragen mit Bedingungen auf ihnen wird langsam sein, da CLOBs in der Regel nicht indiziert werden können. Das Abrufen wird Auswirkungen haben, wenn die Gesamtmenge der zu übertragenden Daten groß wird. Abgesehen von diesen Punkten sollten CLOBs jedoch die Leistung nicht wesentlich beeinträchtigen (d. H., Nur ein CLOB in einer Tabelle sollte nicht schaden).

Dies sind nur allgemeine Beobachtungen. Details hängen natürlich von dem verwendeten DBMS und dessen Konfiguration ab.