AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Geschwindigkeit von Views verbessern
Thema durchsuchen
Ansicht
Themen-Optionen

Geschwindigkeit von Views verbessern

Ein Thema von Errraddicator · begonnen am 11. Nov 2009 · letzter Beitrag vom 13. Nov 2009
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#1

Geschwindigkeit von Views verbessern

  Alt 11. Nov 2009, 09:53
Datenbank: PostgreSQL • Version: 8.4.1 • Zugriff über: PHP / pgAdmin direkt
Hiho!

Ich habe eine Datenbank welche unter anderem folgende Tabellen ethält:
o Mandantenstamm
o Zugriffsteuerung (Benutzer -> Mandant)
o Datentabelle

...

Nun habe ich eine View für die Datentabelle erstellt, welche nur noch die Daten anzeigt,
welche mich (also "current_user") auch betreffen (passend zu der Tabelle Zugriffssteuerung)
und das Ganze funktioniert an sich auch einwandfrei.

Das Problem dabei ist aber, dass die Datentabelle div. Millionen Datensätze beinhaltet.
Dadurch dauert das Öffnen der View bestimmt 1 Minute, was natürlich absolut untauglich ist.

Sinngemäßes SELECT Kommando, welches hinter der View liegt:
SELECT d.* FROM datentabelle d, zugrifftabelle z WHERE d.mandant = z.mandant ...

Wie gesagt: logisch ist das vollkommen richtig so.
Nur von der Geschwindigkeit her absolut inakzeptablel.

Hat einer von Euch ne Idee, wie man so eine Lösung schneller regeln kann, als über so eine WHERE-Abfrage?


Danke im Voraus

Patrick
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
427 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Geschwindigkeit von Views verbessern

  Alt 11. Nov 2009, 09:59
Hast Du die Spalte Mandant in der Datentabelle indiziert? Wenn nicht, mach's mal.

Uli
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Geschwindigkeit von Views verbessern

  Alt 11. Nov 2009, 10:02
Indizes vorhanden?
Hat der Server genügend Speicher zur verfügung das diese Indizes auch komplett im Speicher gehalten werden können?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Geschwindigkeit von Views verbessern

  Alt 11. Nov 2009, 10:10
Indizes sind 2 Stück vorhanden.

1x auf die Mandanten-Spalte alleine
und 1x noch etwas genauer (mit Zeitraum und Co.)

...

Das mit dem Speicher ist aber nen guter Tipp, da hat mich auch ein Kollege gerade drauf gebracht!

Weil das ist eine neu aufgesetzte Datenbank und da hab ich noch nix an den Einstellungen von Postgres selbst gedreht.
Vielleicht bringt das was, wenn ich da mal die Speicherbereiche vergößer.

Ich probier es mal aus.
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.351 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Geschwindigkeit von Views verbessern

  Alt 11. Nov 2009, 10:17
Hi,

ich tippe eher auf das Statement. Die Indexe werden ja scheinbar nicht benutzt.
Möglicherweise hilft ja schon eine Umstellung von dem where auf ein left join.

Frank
Frank Reim
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Geschwindigkeit von Views verbessern

  Alt 11. Nov 2009, 10:20
Brauchst du zudem alle Felder?
Markus Kinzler
  Mit Zitat antworten Zitat
Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Geschwindigkeit von Views verbessern

  Alt 11. Nov 2009, 10:32
Wenn ich die Abfrage via pgAdmin analysieren lasse scheint er den Index in der Tat nicht zu nutzen.

Das macht er nur, wenn ich die Mandantennummer direkt eintrage.
Sobald ich diese aber aus der anderen Tabelle mit einbeziehe scheint er den zu übergehen.

Hm... Ich probier mal rum, wie ich das umgehen kann.

...

Felder brauche ich übrigens alle, denn diese View weiß nicht wofür sie gebraucht wird.

Die ist nur dafür da, dass ich selbst als DB-Benutzer nur das sehen kann, was mich auch zu interessieren hat, völlig unabhängig davon, welches Programm es nacher wie nutzen wird.

Ich möchte so gesehen die Sicherheitslogik / Datentrennung schon auf Datenbankebene haben und nicht erst auf Applikationsebene.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Geschwindigkeit von Views verbessern

  Alt 11. Nov 2009, 10:33
Ach ja, nochwas: Mio. Datensätze? Schon mal ausgerechnet wieviel MB hier über Netz geschaufelt werden müssen (Clientseitiger Curse vorrausgesetzt) oder wieviel Speicher der Server für den serverseitigen Curser reservieren muss?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Errraddicator

Registriert seit: 26. Jun 2008
161 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Geschwindigkeit von Views verbessern

  Alt 11. Nov 2009, 10:44
Zitat von Bernhard Geyer:
Ach ja, nochwas: Mio. Datensätze? Schon mal ausgerechnet wieviel MB hier über Netz geschaufelt werden müssen (Clientseitiger Curse vorrausgesetzt) oder wieviel Speicher der Server für den serverseitigen Curser reservieren muss?
Also Clientseitig mache ich ja hier auch noch mal eine Filterung durch die Applikation selbst.
Die kompletten Daten werden also niemals gebraucht.

Das geht hierbei wirklich um eine reine Datensicherheits / -Berechtigungsgeschichte.
Wir wollen nicht, dass es ÜBERHAUPT irgendeinem Datenbankbenutzer möglich ist SELECT Abfragen direkt auf die Tabellen zu starten.
Dies soll immer nur über Views geschehen, die per se nur das anzeigen, was den Benutzer zu interessieren hat.

Abfragen auf die Tabellen selbst darf nur der Admin und der ist so eingestellt,
dass sich dieser nur von Managementsystemen verbinden darf und nicht von den eigentlichen Produktivsystemen.
(Später auch noch nicht mal mehr vom Localhost).

...

Von daher muss ich das Grundprinzip schon so lassen und da führt auch (meines Wissens nach) kein Weg dran vorbei.

Bei allen anderen Datentabellen funzt das auch einwandfrei, auch vom Tempo her.
Aber die haben auch nur ein paar Hundert bis evt. Zehntausend Datenzeilen und nicht wie diese eine div. Millionen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Geschwindigkeit von Views verbessern

  Alt 11. Nov 2009, 10:59
Benötigst du wirklich alle Rechte aller Benutzer?
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 21:22 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