Willkommen bei Entwickler-Forum.
Seite 2 von 2 ErsteErste 1 2
Ergebnis 11 bis 15 von 15
  1. #11
    Gesperrt
    Registriert seit
    29.03.2011
    Beiträge
    66

    Standard

    Das stelle ich mir nicht ganz so schnell vor oder zumindest nicht so schnell, wie möglich.
    Ja das stimmt allerdings - das ginge mit Sicherheit sehr viel schneller, wenn ich das anders machen würde. Für meinen Bedarf reicht es, da ich das nur am Wochenende aktualisieren brauche. Die Auswertungen werden immer über länger zurückliegende Zeiträume gezogen. D.h. bis zum letzten Monatsende innerhalb des laufenden Monats. Für ganz aktuelle Sachen gibts ja nach wie vor den aktuellen Datenbestand wie bislang auch. Aber... schneller ist natürlich immer besser.

    Liegt PHP auf dem gleichen System wie Oracle?
    Nein das liegt alles verteilt im Netzwerk. Sybase ASE liegt auf einem Server, PHP auf einem anderen und die Oracle XE auf einem dritten. D.h. die Daten wandern aktuell über drei Server hinweg (ASE-Server => PHP-Server => XE-Server).

    Die Haupttabellen sind in ca. 15 Minuten überspielt (Holzhammer: DELETE FROM tableX und dann mit INSERT INTO tableX alles neu rein). Die Faktentabellen brauchen jedoch ~4h 10Min. Insgesamt liege ich also bei etwa ~4 1/2 Stunden. Das ist alles natürlich vollkommen unoptimiert. Sozusagen Proof-of-Concept und das was ich wollte, ist erreicht. Der Flaschenhals in der Kette ist ganz klar der Platten I/O vom Oracle XE Server. Da könnte man sicherlich noch was rausholen (kein Transaktionslog und mehr cachen?).

    Jedoch überlege ich natürlich schon, ob ich da noch was beschleunigen könnte. Beispielsweise könnte ich den Zeitstempel der Quelldatensätze prüfen (wird mitgeführt) und nur die Zeilen selektieren, die neu (also nach dem Exportzeitpunkt) sind und ausschließlich diese übertragen. Wobei dann das gewohnte Spiel los geht: INSERT oder UPDATE und zudem extra überprüfen was ggf. DELETEd werden muss...

    Wegen External Tables: Wie sieht es da mit der Abfrageperformance aus, wenn die nicht rein geladen werden? Werden dann extra Indices aufgebaut?

  2. #12
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.283

    Standard

    Zitat Zitat von Wursel Beitrag anzeigen
    Wegen External Tables: Wie sieht es da mit der Abfrageperformance aus, wenn die nicht rein geladen werden? Werden dann extra Indices aufgebaut?
    Das ist ein direkter Zugriff auf die CSV oder was auch immer, meines Wissens nach, gibt es da keine Indizierung.
    Aber apropos Indizierung: Du solltest die auf den Zieltabellen erst nach dem Befüllen der Tabellen aktivieren. Das spart die Indexverwaltung während des Ladens.

    Ich würde nur einmal auf die CSV zugreifen, eben zum Laden. Wenn Du auf PHP verzichtest, kannst Du auch den Oracle Loader einsetzen. Ich weiß allerdings nicht, wieviel das bringt im Vergleich zu CSV external Tables.
    Gruß, defo

  3. #13
    Stammgast
    Registriert seit
    24.05.2008
    Beiträge
    1.292

    Standard

    Zitat Zitat von Wursel Beitrag anzeigen
    (Holzhammer: DELETE FROM tableX und dann mit INSERT INTO tableX alles neu rein).
    Statt DELETE FROM ein TRUNCATE TABLE xyz verwenden. Den Insert als direct path load durchführen: INSERT /*+APPEND*/ INTO ...
    Dann brauchst du dir auch keine Gedanken wegen der Indices zu machen, die werden beim direct path load separat aufgebaut und dann hinzugefügt.

    Die Tabelle mit NOLOGGING definieren: alter table xyz nologging; Damit werden beim direct path load keine Redo Logs geschrieben.

    Externe Tabellen sollten nur zum Laden von echten Tabellen verwendet werden, für normale ad hoc Abfragen ist das viel zu langsam.

    @defo: SQLLoader und external tables sind gleichwertig zu sehen. Jedes Tool hat Vor- und Nachteile bei der Benutzung, die Performance ist identisch.
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

  4. #14
    Stammgast
    Registriert seit
    24.10.2011
    Beiträge
    1.283

    Standard

    Zitat Zitat von dimitri Beitrag anzeigen
    Den Insert als direct path load durchführen: INSERT /*+APPEND*/ INTO ...
    Dann brauchst du dir auch keine Gedanken wegen der Indices zu machen, die werden beim direct path load separat aufgebaut und dann hinzugefügt.

    Die Tabelle mit NOLOGGING definieren: alter table xyz nologging; Damit werden beim direct path load keine Redo Logs geschrieben.

    @defo: SQLLoader und external tables sind gleichwertig zu sehen. ..die Performance ist identisch.
    Direct path mit auto indexing, das wusste ich nicht, prima.
    Ist für nologging nicht auch ein extra nologging tablespace notwendig?

    Ich hab immer "das Gefühl", dass die External Tables eh über den Loader realisiert sind. Also andere Feature, gleiche Engine.
    Gruß, defo

  5. #15
    Stammgast
    Registriert seit
    24.05.2008
    Beiträge
    1.292

    Standard

    Zitat Zitat von defo Beitrag anzeigen
    Ist für nologging nicht auch ein extra nologging tablespace notwendig?
    Nein brauchst nicht. Ein TS der mit NOLOGGING angelegt wird, vererbt diesen Parameter an "seine" Tabellen.
    Wichtig ist zu wissen, dass solche Tabellen nicht durch ein RMAN Backup wiederherstellbar sind, wenn nicht nach dem Direct Load mit NOLOGGING ein Full Backup gefahren wird.

    Zitat Zitat von defo Beitrag anzeigen
    Ich hab immer "das Gefühl", dass die External Tables eh über den Loader realisiert sind. Also andere Feature, gleiche Engine.
    Das ist vermutlich auch so. :-)
    Geändert von dimitri (21.12.2015 um 10:15 Uhr)
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

 

 
Seite 2 von 2 ErsteErste 1 2

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •