Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL Optimierung möglich ? (https://www.delphipraxis.net/161310-sql-optimierung-moeglich.html)

H3llsing 28. Jun 2011 14:30

Datenbank: SQL/ADO • Version: 5.5 / 9 • Zugriff über: PHP/NUSOAP

SQL Optimierung möglich ?
 
Hallo Dpler,

ich steh grad bei meiner gefundenen Lösung vor einem Performance Problem.

Hintergrund: ich arbeite an einer Website die mit PHP und NUSOAP von einem anderen Server aus der WAWI Artikel für einen Webshop anzeigen lassen soll.

Schnell erledigt bis ich gemerkt habe das es anscheinend eine Obergrenze für Datenmengen bei Nusoap gibt. Also kann ich mir nich 1000 Artikel anzeigen lassen.
Dann dachte ich an eine Lösung, wo man sich 30 Artikel pro Seite anzeigen lassen kann und habs ausprobiert.
Funktioniert auch soweit aber bei steigender Seitenanzahl dauert die anfrage auch schonmal 6 sekunden. Und nimmt mit jeder Seite zu!

hier mein SQL
Code:
select TOP 10 a.artikel,a.herstartikelnr,a.bezeichnung1,a.bezeichnung2,a.ean,a.einheit,a.normalVK,a.matchcode
from artikel a
where a.exportieren = true and upper(a.typ) = 'B' and a.artikel like 'Y%'
and a.artikel not in (select top 300 artikel from artikel where exportieren = true and upper(typ) = 'B' and artikel like 'Y%' order by artikel )
order by a.artikel
Diese "select top 300 artikel" schließen also die ersten 10 Seiten aus! d.H ich lasse mir grade Artikel von Seite 11 anzeigen.

Hat jemand ne idee wie man die Performance verbessern könnte ? Oder vielleicht einen ganz anderen Lösungsansatz auch ohne Nusoap wenns für den Kunden schneller ist ?
Bislang wird mehrmals täglich ein Update vom Wawi auf die Online DB gemacht per Dienst was allerdings auch eine Ewigkeit braucht ! Deshalb der Gedanke mit Nusoap und direkt anzeigen lassen!

Viele Grüße
Helge

mischerr 28. Jun 2011 14:40

AW: SQL Optimierung möglich ?
 
MySQL? Arbeite zwar mehr mit FB, aber versuch mal:

SELECT ... FROM ... LIMIT 30 OFFSET 300

H3llsing 28. Jun 2011 14:52

AW: SQL Optimierung möglich ?
 
Arghs kann ich irgendwo das Thema nochmal bearbeiten ?

Die wawi Datenbank läuft mit Advanced Data Server und so wies aussieht gibts keine select TOP OFFSET Funktion

mischerr 28. Jun 2011 15:05

AW: SQL Optimierung möglich ?
 
Advantage? Ich glaube ab der 10'er geht:

SELECT TOP 30 START AT 300 FROM ... WHERE ...

DeddyH 28. Jun 2011 15:06

AW: SQL Optimierung möglich ?
 
Du meinst Advantage? Dann frag doch mal joachimd.

H3llsing 28. Jun 2011 15:16

AW: SQL Optimierung möglich ?
 
ups natürlich mein ich Advantage Database Server ADS :D
Bin wieder vollkommen woanders mit meinen Gedanken ;)

EDIT:
Der Start at befehl liefert schon ne deutliche Verbesserung mit der ich leben kann.
Nun benötigt die abfrage gestartet bei 550 knapp unter 600ms.

Vielen Dank!

H3llsing 29. Jun 2011 09:11

AW: SQL Optimierung möglich ?
 
Es würde mich stark interessieren obs vielleicht noch bessere Lösungen gibt!
Wir nutzen ein internes WAWI-System, dessen Artikel aber auch auf einem externen Webserver / Onlineportal angezeigt werden sollen.
Das Update erfolgt durch 2 Dienste mehrmals am Tag und dauert ca 10 minuten.

Wie würdet ihr eine solche Synchronisation verwirklichen?

joachimd 29. Jun 2011 09:58

AW: SQL Optimierung möglich ?
 
Zitat:

Zitat von H3llsing (Beitrag 1108788)
Es würde mich stark interessieren obs vielleicht noch bessere Lösungen gibt!
Wir nutzen ein internes WAWI-System, dessen Artikel aber auch auf einem externen Webserver / Onlineportal angezeigt werden sollen.
Das Update erfolgt durch 2 Dienste mehrmals am Tag und dauert ca 10 minuten.

Wie würdet ihr eine solche Synchronisation verwirklichen?

Wenn das Online-Portal auch auf ADS läuft: Replikation
Falls nicht: eventuell den ADS nach außen öffnen und vom Online-Portal den Zugriff direkt machen

Ansonsten bleibt nur noch die Möglichkeit, per Trigger jedem Datensatz bei INSERT und UPDATE einen Zeitstempel mitzugeben und dann zur Synchronisation diesen vergleichen - bei DELETE die gelöschten Datensätze in eine Schatten bzw Sync-Tabelle eintragen und entsprechend abarbeiten.

H3llsing 29. Jun 2011 11:16

AW: SQL Optimierung möglich ?
 
Das OnlinePortal besitzt eine MySQL Datenbank
Server Version: 5.0.51a-community-nt
MySQL-Client-Version: 5.0.22

Zitat:

eventuell den ADS nach außen öffnen und vom Online-Portal den Zugriff direkt machen
Ist das nicht etwas unsicher ?

Hinzu kommt die schwierigkeit dass unser Wawi-Server keine direkte Internetverbindung besitzt.
Man kommt aber über einen weiteren Internen Server an den Wawi-Server.

WAWI --> INTERNER SERVER ---> INTERNET --> WEBSERVER

und eine Replikation wenn ich mich recht erinnere funktionierte bei freien Tabellen nicht oder lieg ich da falsch?
Leider ist die Infrastruktur schon 20 Jahre alt so dass hier immer weiter mit den freien Tabellen gearbeitet wurde. Und nur neuere Projekte oder meine Projekte auf Data-Dictionarys aufgebaut werden.

joachimd 29. Jun 2011 12:52

AW: SQL Optimierung möglich ?
 
Zitat:

Zitat von H3llsing (Beitrag 1108835)
Ist das nicht etwas unsicher ?

nicht unbedingt. Du kannst ein Dictionary einrichten, welches den AIS-Zugriff (in ADS 10.1 sogar hoch verschlüsselt) regelt. Es ist nicht notwendig, die Tabellen auch in dieses Dictionary aufzunehmen.

Zitat:

Hinzu kommt die schwierigkeit dass unser Wawi-Server keine direkte Internetverbindung besitzt.
Man kommt aber über einen weiteren Internen Server an den Wawi-Server.
WAWI --> INTERNER SERVER ---> INTERNET --> WEBSERVER
und anders herum?
Web Server [php mit ads-php extension] -> Firmen-Router -> ADS WAWI Server

H3llsing 29. Jun 2011 13:35

AW: SQL Optimierung möglich ?
 
Web Server [php mit ads-php extension] -> Interner Server -> Über ODBC - Advantage Streamline SQL Driver --> ADS WAWI Server

Der Weg wird per Nusoap auch genutzt.
Aber ich muss gestehen dass ich da kein Experte auf diesem Gebiet bin, aber mich gern in alle Sachen reinlese bis ich eine Lösung habe =)

Ist es möglich eine ODBC verbindungsweiterleitung einzurichten? Also
Webserver -> ODBC -> interner Server -> ODBC -> WAWI-Server ?

EDIT:
ADS 10.10.06 haben wir sogar drauf und wird heute oder morgen auf die Beta 07 umgestellt da die 06 zu einem Absturz führte.

joachimd 29. Jun 2011 15:08

AW: SQL Optimierung möglich ?
 
Zitat:

Zitat von H3llsing (Beitrag 1108889)
Ist es möglich eine ODBC verbindungsweiterleitung einzurichten? Also
Webserver -> ODBC -> interner Server -> ODBC -> WAWI-Server ?

nein - aber warum denn? Wenn der Webserver ODBC nehmen kann, warum dann nicht direkt (über Port-Weiterleitung) auf den richtigen Server gehen?

Zitat:

ADS 10.10.06 haben wir sogar drauf und wird heute oder morgen auf die Beta 07 umgestellt da die 06 zu einem Absturz führte.
Beta? EBF=Express Bug Fix ... nix Beta ...

H3llsing 29. Jun 2011 15:55

AW: SQL Optimierung möglich ?
 
Zitat:

nein - aber warum denn? Wenn der Webserver ODBC nehmen kann, warum dann nicht direkt (über Port-Weiterleitung) auf den richtigen Server gehen?
Da hab ich noch nicht dran gedacht.
Bin auch erst seid letzten Mittwoch Fachinformatiker AE ;)
Hab also noch einiges aufzuholen :D

Zitat:

Beta? EBF=Express Bug Fix ... nix Beta ...
Wurd mir leider wohl eine Fehlinfo mitgeteilt, dass es sich um eine handeln würde!

Werd mich dann mal an der Portweiterleitung versuchen.
Muss die Verbindung in der System-DNS des webservers einfach nur "\\IP:port\PFAD zum dictionary" enthalten ?

Die Weiterleitung in der Firewall müsste dann wohl unser Admin vornehmen der so beschäftigt ist dass ers erst in 2 wochen macht.
Also dauerts erstmal bis ich das ganze ausprobieren kann.

Aber schonmal vielen Dank! Hast mir erneut unter die Arme gegriffen ;)

joachimd 30. Jun 2011 08:30

AW: SQL Optimierung möglich ?
 
Zitat:

Zitat von H3llsing (Beitrag 1108941)
Muss die Verbindung in der System-DNS des webservers einfach nur "\\IP:port\PFAD zum dictionary" enthalten ?

im Prinzip ja. Bei der IP aber nicht die Server-IP verwenden, sondern die, unter welcher das Firmennetzwerk von außen erreichbar ist. Falls die wechselt -DSL- geht auch eine dynamische URL zB über dyndns.org, bsp: \\meinserver.dyndns.org:2001\meine_Freigabe_oder_s erverseitiger_alias\meineDatenbank.ADD.

H3llsing 11. Jul 2011 15:48

AW: SQL Optimierung möglich ?
 
Problem hat sich aufgelöst ;D
hab mal mit unseren Admins gesprochen und nu bekommen wir gleich n eigenen Webserver ins Hausgestellt ;)
Das löst dann gleich mehrere Probleme auf einmal =)
Ansonsten hätten wir das AIS Prinzip vollzogen!

Vielen Dank an alle =)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz