Toon posts:

[DELPHI] Performace Delphi 6 t.o.v. 3 m.b.t Oracle

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik heb de taak om uit te zoeken of delphi 6 kwa performace beters is als 3.
Het gaat om een koppeling naar een Oracle DB (met tot 20.000 records en Autojoins e.d.)
In de 3 versie word momenteel gebruik gemaakt van TQuery en BDE.

Ook worden er veel berekening uitgevoerd in de code met o.a. Query1.Next en dan berekeningen met die Query waarden.

Nu is de vraag dus of je met delphi 6 performance wint d.m.v. het gebruik van ADO, Stored Procedure's(wordt nog niet gebruikt maar zou misschien een optie zijn om berekeningen hierin te doen) en nog op andere mannieren waarmee je performace kan winnen(die ik dus nog niet ken en op jullie ideeen steun :P )

Vast bedankt

Verwijderd

D6 op zich is qua performance niet zoveel beter dan D3, en vaak zelfs wat langzamer, omdat intern veel meer dingen via interfaces gaan ipv via inheritance. Flexibeler, maar vaak ietsje trager.
Maar ADO is wel een stuk sneller dan de BDE, mits je een goede ADO driver voor je database hebt (en bij Oracle heb je die). Zo niet dan moet 't via ODBC, en dat schiet niet echt op...
Let er echter bij 't gebruik van TADOQueries echter wel op dat ze default CursorLocation clUseClient gebruiken. Bij een volwassen DBMS is clUseServer efficienter. Hetzelfde geldt voor het CursorType: standaard is ctKeySet, maar wanneer je een query alleen maar doorloopt (die .Next van jou), dan is ctOpenForwardOnly de moeite waard.

Maar of je nou ADO of BDE gebruikt, stored procs blijven in bepaalde gevallen niet te overtreffen. Dat kan soms een snelheidswinst van 1000% of meer opleveren... :) Nadeel is wel, dat 't je bindt aan 1 database, of dat je voor iedere database een eigen versie van die stored procs moet schrijven. En PL/SQL is een heel andere taal dan bv. Transact SQL van MSSQL/Sybase of dan Interbase's SQL...

Verwijderd

Topicstarter
Die ADO op welk gebied is die vooral sneller als de BDE??

bedankt alvast voor de bovenstaande goede uitleg :)

Verwijderd

Op dinsdag 06 november 2001 22:04 schreef turbop het volgende:
Die ADO op welk gebied is die vooral sneller als de BDE??
Waar 't 't meest op zal vallen is in bv. een Web-omgeving, waar veel connecties tot stand moeten worden gebracht en na korte tijd weer worden afgebroken. Bij de BDE is dat nogal een probleem, omdat 'ie eigenlijk bedoeld is voor "KeepConnection := True". ADO heeft een connection pooling mechanisme dat ideaal is voor korte verbindingen met de database.

Voor verbindingen die de connectie met de database wel open houden, is 't vooral een driver kwestie: de ADO drivers voor MSSQL en Oracle zijn gewoon sneller dan hun BDE tegenhangers. Ik heb het thuis getimed, en bij gewone select queries op een Oracle 9i database op Win2K server was ADO 10 tot 15 procent sneller dan BDE 5.01. Bij MSDE (de gratis 5-user versie van MSSQL) viel 't nog iets dramatischer uit, maar ja, MS heeft ADO dan ook uitgevonden. :)

Bij InterBase is dat ietsje anders: de BDE is naast Paradox nogal geoptimaliseerd voor InterBase, en daar blijven MSSQL en Oracle een tikkie achter. Maar ja, goeie ADO InterBase drivers zijn er nog niet...