BDE 4.0 on LAN -- Major Slowdown!

BDE 4.0 on LAN -- Major Slowdown!

Post by Ron Nibbelin » Sun, 31 Dec 1899 09:00:00

I have written numerous apps under Delphi 1 and the 16-bit BDE, using
dBase files on a LAN.  Speed is impressive, even when several users are
accessing the data at the same time.

  However, when I use the 32-bit BDE under Delphi 2 or 3, the database
accesses slow to a crawl when the data is stored on a LAN shared area.
Operations which take .5 seconds when I'm using data stored on my PC
take 40 - 60 seconds when the same .exe is using an identical copy of
the data on a LAN shared area.  I even tried setting up my PC's C: drive
as sharable and connecting another PC -- same dismal results.

  Help??? Please.


1. Major major MAJOR bug in BDE

I have (unfortunately) discovered a rather severe bug in the Borland Database
Engine.  To be brief: passthrough (RequestLive = TRUE) SQL queries cause a memory
leak in IDQRY01.DLL.

It may be specific to my SQL-LINK (ORACLE) but every TQuery.Open and every Master
Query DataChange in a Master-Detail Query causes a leak of about 5k from the
IDQRY01.DLL memory allocation (for EVERY TQUERY).  After 1700 of these leaks,
IDQRY01.DLL reports an EOutOfMemory exception, and must be unloaded and reloaded
to continue.

1700 sound like a lot?  Not if you have 10 detail queries, like I do.  That's
right kiddies, hit the (Master query TDBNavigator) Prior or Next buttons 170 times
and your program will crash.  And so will Paradox and every other BDE program you
have running.

What did Borland say when I reported it?  "Call our 1-900 line for help."  I am
going to pay Borland to let me help them debug a program I just got done paying
them $1700 for?  How nice of me!

I have been able to reproduce it on every machine I have tried (rather, I haven't
been able to not produce it, which really was the effect I was after.)  You can
watch it too: grab HeapWalker or whatever memory leak debugger you like to use and
watch IDQRY01.DLL's private allocations: when they reach 8.5 megs watch what
happens.  Neeto!  This is an especially nifty side effect when your project is
due, and Borland won't return your calls.

This can be demonstrated without a single line of code, just slap down two
TQuery's in a Master-Detail relationship, hook a TDBNavigator up to the master
DataSource, make sure the Detail TQuery is set up with RequestLive = TRUE.  Run.  
Hit the Navigator buttons about 1700 times.  (The preferred demo uses a TTimer to
automate the process, but that would require a single line of code ;-)

It does not happen with TTables or Local-SQL TQuerys.  (But I NEED to use
passthrough TQuerys!)


        Brian Badger
        MCI Telecommunications

Brian Badger, Registered Telepath; P -3 (I can't even read my own thoughts...)
My opinions are my own, and do not reflect the views of the Psi Cop who
implanted my personality.

2. cant create DSN with Intersolve

3. Multiple connections to SQL 7.0 from IIS cause major slowdown

4. Hot Backup

5. paradox + lan slowdowns

6. Description of OS process architecture of Oracle on Novell Netware

7. Installing BDE 4.0 without removing BDE 2.5

8. Identifier CASE problem

9. ODBC 4.0: incredible slowdown after 80 open recordsets

10. How to overcome a major IDAPI (BDE) flaw?


12. Poor 32-bit BDE Performance on LAN Shared Areas