Q137039: New Features in Microsoft Jet Version 3.0
Article: Q137039
Product(s): Microsoft Visual Basic for Windows
Version(s): 4.0
Operating System(s):
Keyword(s): kbref
Last Modified: 02-NOV-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Visual Basic Standard Edition, 32-bit, for Windows, version 4.0
- Microsoft Visual Basic Professional Edition, 16-bit, for Windows, version 4.0
- Microsoft Visual Basic Professional Edition, 32-bit, for Windows, version 4.0
- Microsoft Visual Basic Enterprise Edition, 16-bit, for Windows, version 4.0
- Microsoft Visual Basic Enterprise Edition, 32-bit, for Windows, version 4.0
-------------------------------------------------------------------------------
SUMMARY
=======
The Microsoft Jet 3.0 database engine used by Microsoft Visual Basic version 4.0
has many functional improvements over previous versions. This article briefly
describes some of these improvements and summarizes their effect in contrast
with previous versions.
MORE INFORMATION
================
Improvements in Microsoft Jet 3.0 database engine:
- New index structure. This results in substantial reduction in storage size
and significant reduction in time to create indices that are highly
duplicated.
- No more read locks on index pages. This will remove many locking conflict
issues and remove the need for users to call FreeLocks in Visual Basic.
- New mechanism for page reuse. In Microsoft Jet 2.x, if a user deleted a lot
of data, the last user out would pay a substantial time penalty while the
recycled page identifiers were being processed into available page
identifiers. In Microsoft Jet 3.0, this process is significantly faster.
- New compacting method. Compacting the database now results in the indices
being stored in a clustered-index format. While the clustered index isn't
maintained until the next compact, performance is still improved. This
differs from Microsoft Jet 2.x where rows of data were stored the way they
were entered. The new clustered-key compact method is based on the primary
key of the table. New data entered will be in time order.
- New mechanism for page allocation. In Microsoft Jet 2.X each page could
contain data from a different table, thus causing more disk activity. In
Microsoft Jet 3.0, each table typically maintains clusters of grouped
together pages (eight pages), thus eliminating the scenario of every other
page having data from different tables. This scenario also greatly enhances
Microsoft Jet's read-ahead capabilities because data pages are more
contiguous.
- Faster delete operations. In Microsoft Jet 2.x, pages were doubly linked,
thus causing a delete operation to visit every page when all rows were being
deleted. This operation can now be done by simply visiting the Space Map
object for that table and removing the bits that reference that table and
returning them to the recycle area.
- Multithreading. By default, Microsoft Jet uses three threads to perform read
ahead, write behind, and cache maintenance.
- Implicit transactions. Users are no longer forced to explicitly use
BEGINTRANS and COMMITTRANS to gain performance improvements. For example,
when walking through a recordset to do operations, Microsoft Jet groups a
series of commands into an internal transaction. Then as appropriate (that
is, in a specified time period or when the cache fills up) it starts
asynchronously flushing the transaction to disk. Still, if a user wants to
force a particular behavior in their application, then they should explicitly
use transactions. For users that don't explicitly use transactions and have
the database opened shared, they should encounter little if any behavioral
differences from Microsoft Jet 2.x. If a user opens the database exclusively,
then they could see some behavior differences relating to some types of error
trapping if they are not using explicit transactions.
- New sort engine. Many of the sort algorithms that are in FoxPro are now used
in Microsoft Jet.
- Long Values (such as memos or binary data types) are stored in separate
tables in Microsoft Jet 3.0. In Microsoft Jet 2.x, all long value columns
were stored in one hidden table, which resulted in a lot of contention issues
for users using Microsoft Jet in shared mode. Placing these values in
separate tables resolved manu contention issues. Also each Long Value table
is now indexed, whereas in Microsoft Jet 2.x, Long Value data was forward
linked only, thus making random positioning time-consuming.
- Dynamic buffering. Microsoft Jet 2.x supported a maximum cache size of 4 MB.
Microsoft Jet 3.0's cache is dynamically allocated at start up and has no
limit. Currently, the cache will be half the available memory upon start up.
This allows effective memory usage on computers that have large amounts of
RAM without changing registry settings. The buffer has also been redesigned
to use common buffering code. In Microsoft Jet 2.x, separate buffering code
could result in pages being needlessly flushed from the cache, thus causing
Jet to re-read the page. Microsoft Jet 2.x also used a FIFO (first in, first
out) buffer replacement policy, which also caused frequently-referenced pages
to be flushed from cache. Microsoft Jet 3.0 implements an LRU (least recently
used) replacement policy to help eliminate this problem.
Additional query words: 4.00 vb4win vb4all
======================================================================
Keywords : kbref
Technology : kbVBSearch kbAudDeveloper kbVB400Search kbVB400 kbVB16bitSearch
Version : :4.0
=============================================================================
THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.
Copyright Microsoft Corporation 1986-2002.