AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Speicherverbrauch Zeoslib auf Postgres
Thema durchsuchen
Ansicht
Themen-Optionen

Speicherverbrauch Zeoslib auf Postgres

Ein Thema von Starsky911 · begonnen am 10. Mai 2008 · letzter Beitrag vom 15. Mai 2008
Antwort Antwort
Seite 1 von 3  1 23      
Starsky911

Registriert seit: 8. Feb 2008
Ort: Bremen
96 Beiträge
 
Delphi 11 Alexandria
 
#1

Speicherverbrauch Zeoslib auf Postgres

  Alt 10. Mai 2008, 00:53
Datenbank: PostgreSQL • Version: 8.3 • Zugriff über: Zeos
Hallo zusammen,

ich teste den Zugriff über Zeos auf Postgres.
Dabei habe ich bei einer ganz einfachen Anwendung
(ZConnection, ZQuery, Datasource, DBGrid)
festgestellt das der Speicherverbrauch ungewöhnlich
hoch ist.
Bei einer Tabelle mit 7000 Datensätze (3,5MB)
hat die Testanwendung einen Speicherverbrauch von
234MB nach dem Daten laden!
Wenn ich bei der ZQuery-Komponente die Eigenschaft
ReadOnly=false setze braucht die Anwendung nach dem
Daten laden 5MB, was ich bei einer Tabellengröße
von 3,5MB absolut in Ordnung finde.
Bin für jede Hilfe oder Tipp sehr dankbar.

Starsky
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Speicherverbrauch Zeoslib auf Postgres

  Alt 10. Mai 2008, 01:44
Wie gehabt : ohne Quelltext keine Hilfsmöglichkeit !
Gruß
Hansa
  Mit Zitat antworten Zitat
Starsky911

Registriert seit: 8. Feb 2008
Ort: Bremen
96 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Speicherverbrauch Zeoslib auf Postgres

  Alt 10. Mai 2008, 02:00
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset, ZConnection,
  Grids, DBGrids, ZAbstractTable;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    ZConnection1: TZConnection;
    DataSource1: TDataSource;
    ZQuery1: TZQuery;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
Hallo Hansa,

wie oben schon beschrieben, eine ganz einfache Anwendung.
Es ist alles nur zusammengeklickt und dann mit dem
Taskmanager beobachtet mit den beschriebenen Speicherverhalten.
Einmal mit der Einstellung
ZQuery1.Readonly:=false // 234MB
einmal mit
ZQuery1.Readonly:=true // 5MB

Starsky
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Speicherverbrauch Zeoslib auf Postgres

  Alt 10. Mai 2008, 08:37
Wie sieht den die Abfrage aus?
Läuft der Server lokal oder remote?
Markus Kinzler
  Mit Zitat antworten Zitat
Starsky911

Registriert seit: 8. Feb 2008
Ort: Bremen
96 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Speicherverbrauch Zeoslib auf Postgres

  Alt 10. Mai 2008, 10:51
Delphi-Quellcode:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 236
  ClientWidth = 383
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object DBGrid1: TDBGrid
    Left = 0
    Top = 0
    Width = 383
    Height = 236
    Align = alClient
    DataSource = DataSource1
    TabOrder = 0
    TitleFont.Charset = DEFAULT_CHARSET
    TitleFont.Color = clWindowText
    TitleFont.Height = -11
    TitleFont.Name = 'Tahoma'
    TitleFont.Style = []
  end
  object ZConnection1: TZConnection
    Protocol = 'postgresql-8'
    HostName = 'localhost'
    Database = 'testdb'
    User = 'postgres'
    Password = 'postgres'
    Connected = True
    DesignConnection = True
    Left = 16
    Top = 48
  end
  object DataSource1: TDataSource
    DataSet = ZQuery1
    Left = 16
    Top = 144
  end
  object ZQuery1: TZQuery
    Connection = ZConnection1
    Active = True
    ReadOnly = True
    SQL.Strings = (
      'select * from kunde')
    Params = <>
    Left = 16
    Top = 96
  end
end
Die Datenbank läuft lokal.
Dieses verhalten ist aber auch mit
allen anderen Tabellen festzustellen.
Die Testtabelle hat keine übergroßen
Felder (keine BLOBS oder TEXT Felder)

Starsky
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#6

Re: Speicherverbrauch Zeoslib auf Postgres

  Alt 10. Mai 2008, 11:00
Soweit ich das bei mir Beobachten konnte,
ist dieser Speicherverbrauch normal. Steigt aber bei komplexeren Abfragen nicht wesentlich an.

// Grüße Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Starsky911

Registriert seit: 8. Feb 2008
Ort: Bremen
96 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Speicherverbrauch Zeoslib auf Postgres

  Alt 10. Mai 2008, 12:05
Wenn ich die Zeos Komponenten
durch ADO (AdoConnection, AdoDataset) über
OLE-ODBC teste braucht die Anwendung auch
nur 5MB um die Kundentabelle zu laden.
Ich habe das mit einer noch größeren
Tabelle (72000 Datensätze) getestet.
Da schmiert mir die komplette IDE ab
nachdem der Speicherverbrauch auf über 2GB
angewachsen war.
Ich nutze die Zeos Version 6.6.2-RC.
Gibt es da vielleicht irgendein Patch
von dem ich nicht weiß?

Starsky
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Speicherverbrauch Zeoslib auf Postgres

  Alt 10. Mai 2008, 12:54
Hallo,

kompilier das doch mal mit fastmm4 oder memcheck.


Heiko
Heiko
  Mit Zitat antworten Zitat
Starsky911

Registriert seit: 8. Feb 2008
Ort: Bremen
96 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Speicherverbrauch Zeoslib auf Postgres

  Alt 10. Mai 2008, 22:14
Ich habe festgestellt das der hohe Speicherverbrauch
durch die Verbindung vom Datasource zum DBGrid ensteht.
Wenn ich die Zuordnung vom Datasource zum DBGrid
entferne, ist der Speicherverbrauch normal.
Wenn ich die Verbindung wieder herstelle steigt
der Speicherverbrauch um das 50-fache.
Liegt das jetzt an der Zeos-Komponente?

Starsky
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: Speicherverbrauch Zeoslib auf Postgres

  Alt 10. Mai 2008, 23:50
Zitat von Starsky911:
Liegt das jetzt an der Zeos-Komponente?
Sieht so aus, als ob es tatsächlich an dem ZQuery1 liegt. Ist das zumindest ein Nachfahr vom TDataset oder von was sonst ? Vorstellen könnte ich mir auch noch, dass es an der mangelhaften Zeos-Transaktionssteuerung liegt.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 20:51 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