AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Was ist der effektivere Zugriff auf eine Tabelle
Thema durchsuchen
Ansicht
Themen-Optionen

Was ist der effektivere Zugriff auf eine Tabelle

Ein Thema von Jumpy · begonnen am 18. Nov 2013 · letzter Beitrag vom 21. Nov 2013
Antwort Antwort
Jumpy
Online

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#1

Was ist der effektivere Zugriff auf eine Tabelle

  Alt 18. Nov 2013, 13:14
Datenbank: SQLServer • Version: ? • Zugriff über: ?
Hallo,

ich mach gerade eine Mini-Web-CGI, bei der gewisse Textbausteine aus einer Datenbank geladen werde sollen. Dabei benutze ich Standard PageProducer und in deren OnTag Behandlung hole ich zum Tag den passenden Text aus der Datenbank. Die Frage ist nun, wie das am effizientesten geht.

Ich könnte eine globale Query im Datenmodul nutzen, die ich beim starten der CGI öffne (oder wenn ich es das erste mal brauche) und dann den benötigten Datensatz via Locate suchen oder ich öffne jedesmal eine Query, die mir nur den Datensatz den ich suche von der DB liefert.

Ich kann noch keine genauen Zahlen geben, aber ich denke es wird so ca. 1000 Textbausteine geben, in derzeit 3 Sprachen. Auf einer vom PageProducer gelieferten Seite werden sich denk ich zwischen 5 und 25 Tags finden die durch die DB-Textbausteine gefüllt werden müssen.
Ralph
  Mit Zitat antworten Zitat
delfox

Registriert seit: 18. Nov 2013
8 Beiträge
 
#2

AW: Was ist der effektivere Zugriff auf eine Tabelle

  Alt 20. Nov 2013, 18:01
Hallo!

Du kannst doch auch einfach einmal die Zeiten messen ?! Wenn sich wenig ändern, dann eventuell einen Cache bauen. Man kann auch einen bauen, der sich aktualisiert, sobald sich in der Datenbank etwas ändern. Einfach paar Sachen testen (z.B. 1000 mal) und dann den Mittelwert in (Milli)Sekunden ausgeben lassen.
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Was ist der effektivere Zugriff auf eine Tabelle

  Alt 20. Nov 2013, 18:38
Wenn du CGI verwendest dann wird für jede Browseranfrage deine CGI-Exe neu gestartet.
Also würde das Cachen der Datensätze gar nichts bringen.
Bei FastCGI, NSAPI oder ISAPI wäre das anderst da nicht jedesmal ein neuer Prozess gestartet wird.
fork me on Github
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Was ist der effektivere Zugriff auf eine Tabelle

  Alt 21. Nov 2013, 05:16
Ich hab mit CGI nichts am Hut.
Wenn möglich würde ich dafür sorgen, dass die DB Buffer so dimensioniert sind, dass die Daten vollständig dort im RAM liegen. 3000 Sätze insgesamt ist nicht viel, es sei denn, die Textbausteine bestehen aus den einzelnen Brockhausbänden.
Der Zugriff ist dann so oder so Kopfrechnen für das System.
Locate setzt vollständige Datasets am Client voraus, das wäre im Grunde schon der 2. "Cache". Ich würde zu gezielten Queries tendieren, kommt auch drauf an, ob Webserver und DB auf einem System sind.
Gruß, Jo
  Mit Zitat antworten Zitat
Jumpy
Online

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Was ist der effektivere Zugriff auf eine Tabelle

  Alt 21. Nov 2013, 08:11
Hallo,

und danke für die Antworten.

Die CGI.exe wird ja bei jedem Webrequest neu gestartet, es geht also nicht darum die Daten länger zu cachen oder so. Es geht darum, dass eine Seite angefordert wird. Ein PageProducer liefert diese und darin sind halt sog. Tags, die mit Textbausteinen gefüllt werden.

Ich habe das jetzt so gelöst, das ich eine globale Query habe, deren SQL-Statement so eingeschränkt ist, das es nur Textbausteine liefert, die für die gerade angeforderte Seite relevant sind oder aber die allgemeinen Textbausteine, die in mehreren Seiten vorkommen. Dadurch schränke ich die zu übertragene Datenmenge ein.
Danach nutze ich dann Locate um den passenden Textbaustein in der "eingeschränkten" Datenmenge zu finden. Das reicht für mich derzeit an Geschwindigkeit.

Ach ja: Webserver und Datenbankserver sind getrennte Systeme.
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 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