4 Comments to “Results of In-Depth Testing of Visual Foxpro vs. Advantage Database Server”

  1. Andy Bach

    Nov 20th, 2009

    Hmm, about the packet size – seems that’d be a different layer than db/app, so maybe ODBC vs whatever VFP uses and, probably, tunafishable, er, tunable somewhere. I know those small packets can kill the network if they get too numerous too quickly. Maybe another plus to Advantage if there is a way to change that.

  2. Eric Selje

    Nov 20th, 2009

    Good point! VFP does have settings you can tweak when you set up your ODBC connection, and I thought increasing the packet size would lead to an increase in overall speed; I set SQLSETPROP(0,”PacketSize”) to everything from the default (4096) to the max (2^16), and it seemed like the larger packet size settings actually slowed it down slightly, though the avg packet size didn’t change much if at all which made me wonder if the setting did anything at all. I even tried setting the packetsize to 2k, with no perceived difference. I poked around on the server size to see if, eg, the TCP Receive Window could be changed but couldn’t find the setting. I recall in the old Netware Client all of those settings were configurable, but now it’s not easy to change. Registry perhaps?

    Thanks for the feedback!

  3. JD Mullin

    Nov 25th, 2009

    (via email, reposted here)
    Hi Eric,

    To really see the power of Advantage your test needs to do some write operations (and writes that change key values), preferably at the same time it is doing reads. This will show Advantage’s read-through locking algorithm, which FoxPro can not match as it doesn’t distinguish between a client that is reading and a client that is writing data. In a multi-user situation this has a big impact on performance. Using multiple physical machines is also a much better “real world” indicator, as it accentuates
    the benefit of less network traffic. If you used 5 individual PCs and ran a multiuser read/write test and compared ADS to FoxPro I think you would be quite impressed.

    We didn’t mention the packet size and data throughput in our last reply, but I wanted to mention that in your post you failed to account for how much “true” record data the client should have been receiving in each case.

    Advantage uses an optimized streaming protocol built on UDP, and as such we have MUCH lower overhead in each burst we send. No TCP headers, netbios headers, etc. Just a thin layer around the actual record data the client requested. Just because Advantage sent smaller packets doesn’t mean it didn’t efficiently deliver the requested record data. One other nice thing about Advantage is that we can also use TCP. If there where routing or throughput issues clients can switch to using TCP for a more “standard” transport layer.

    Thanks again for the blog post and for requesting our feedback,

    J.D. Mullin
    Advantage R&D Manager

    P.S. One more note on the indexes. Just seeing the indexes in the table browser in ARC doesn’t always mean that the queries you use will utilize them. A better approach is to run the query in the query utility using the “show plan” button. This will display a graphical query execution plan, which will include a little red warning dot around any operation that could use an index, but was unable to find one. Hover your cursor over each item in the query plan to see details about that operation.

    J.D.

  4. […] of VFP data into MySql in order to test the speed, similar to what I did a few posts back with Advantage Database Server. Since MySql can’t just use VFP tables the way Advantage can, I created a script to manually […]


Leave a Reply