AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [FB 2.1] Schnelle Alternative zu Count(*) ?
Thema durchsuchen
Ansicht
Themen-Optionen

[FB 2.1] Schnelle Alternative zu Count(*) ?

Ein Thema von alzaimar · begonnen am 11. Mai 2009 · letzter Beitrag vom 14. Mai 2009
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
Benutzerbild von dataspider
dataspider

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

Re: [FB 2.1] Schnelle Alternative zu Count(*) ?

  Alt 11. Mai 2009, 17:30
Hi,

ob man die Verwendung eines Index erzwingt oder nicht, macht IMHO keinen Unterschied.
Ein Count von 1.000.000 Datensätzen erzeugt mit und ohne Index 1.000.000 Reads.

Ich denke, die Variante mit den Triggern ist die wohl einzig machbare.

Cu, Frank
Frank Reim
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: [FB 2.1] Schnelle Alternative zu Count(*) ?

  Alt 11. Mai 2009, 17:58
Hi Leute,

ich hab das jetzt mit den Triggern so umgesetzt. Mich wundert es nur ein wenig, denn Firebird selbst sollte doch wissen, wie viele Zeilen denn nun in der Tabelle sind bzw. Blätter im B-Baum des PK.

Die Trigger-Lösung ist leider nicht ganz so hübsch, weil ich mir dadurch eigentlich überflüssige Deadlock-Kandidaten einhandle bzw. unnötige Locks.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#13

Re: [FB 2.1] Schnelle Alternative zu Count(*) ?

  Alt 11. Mai 2009, 17:59
Zitat von dataspider:
Ich denke, die Variante mit den Triggern ist die wohl einzig machbare.
Könnte es bei vielen gleichzeitigen Inserts dabei nicht Probleme geben, auch wenn die Anwendungen mit Transaktionen arbeiten?
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [FB 2.1] Schnelle Alternative zu Count(*) ?

  Alt 11. Mai 2009, 18:27
Dann müssen es aber verdammt viele sein.
Markus Kinzler
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#15

Re: [FB 2.1] Schnelle Alternative zu Count(*) ?

  Alt 11. Mai 2009, 18:42
Zitat von alzaimar:
Hi Leute,

ich hab das jetzt mit den Triggern so umgesetzt. Mich wundert es nur ein wenig, denn Firebird selbst sollte doch wissen, wie viele Zeilen denn nun in der Tabelle sind bzw. Blätter im B-Baum des PK.
Dann müsste FB das aber für jede Transaktion getrennt wissen - eine Repeatable Read Transaktion, die drei Tage läuft, müsste am Ende noch immer die ursprüngliche Anzahl vom Transaktionsstart sehen.

Zitat von alzaimar:
Die Trigger-Lösung ist leider nicht ganz so hübsch, weil ich mir dadurch eigentlich überflüssige Deadlock-Kandidaten einhandle bzw. unnötige Locks.
Zielkonflikt: entweder eine genaue Anzahl, oder eine skalierbare / deadlockfreie Lösung
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#16

Re: [FB 2.1] Schnelle Alternative zu Count(*) ?

  Alt 11. Mai 2009, 18:44
Zitat von mkinzler:
Dann müssen es aber verdammt viele sein.
Zwei Clients sind manchmal schon einer zuviel
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#17

Re: [FB 2.1] Schnelle Alternative zu Count(*) ?

  Alt 11. Mai 2009, 19:19
Zitat von alzaimar:
Hi Markus und Elvis,

Danke für den Tipp. Klappt nur leider nicht, d.h. es ist immer noch genauso lahm.
das entscheidende ist doch, dass ein index auf dem feld liegt


Gruss Kh
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [FB 2.1] Schnelle Alternative zu Count(*) ?

  Alt 11. Mai 2009, 19:25
Zitat:
Zwei Clients sind manchmal schon einer zuviel Smile
das sollte nicht das Problem sein sondern eher, wenn sehr vile Insert/Deletes innerhalb kurzer Zeit passieren
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

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

Re: [FB 2.1] Schnelle Alternative zu Count(*) ?

  Alt 11. Mai 2009, 19:32
Zitat von khh:
das entscheidende ist doch, dass ein index auf dem feld liegt
Überleg doch mal...
Wie soll ein Index beim Zählen aller Datensätze behilflich sein?

Erst bei einer Einschränkung der Ergebnismenge mit Where oder beim Sort wird ein Index benötigt.

Frank
Frank Reim
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: [FB 2.1] Schnelle Alternative zu Count(*) ?

  Alt 11. Mai 2009, 19:35
Zitat:
Wie soll ein Index beim Zählen aller Datensätze behilflich sein?
Es müssen nur die Einträge im Index gezählt werden, was etwas schneller sein sollte
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     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 18:08 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