Common Engine Settings

This section describes the settings that are common to two or more of the engines in the Engines key of the Windows registry. The following table describes the registry settings contained in the Engines key.

Note For Microsoft Jet 3.0, the two settings listed in the following table were repeated under the subkeys for each engine.

Setting Data type Default value Description
CompactByPKey Integer 1 Disables or enables compacting by primary keys. When the value of this setting is 1 and the user compacts a database, records will be sorted in primary key order. This creates a pseudo-clustered index effect that Microsoft Jet doesn’t maintain during normal use of the database. A value of 0 disables this feature.
SystemDB String “system.mdb” The path and name of the workgroup information file (also known as the SystemDB database) that is used. If no path is specified, the current directory is used.

The following table describes a registry setting that all installable ISAM drivers must provide in their subkey, located at \HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Jet\3.5\Engines\enginename. This setting is required.

Setting Data type Default value Description
win32 String varies, depending on the engine The path and name of the DLL that supplies the engine services.

The settings described in the following table are located in the \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Jet 2.x\ISAM key of the Windows registry. They apply to Microsoft Jet version 1.x and 2.x databases. This registry key is used by Microsoft Jet when a version 1.x or 2.x database is accessed.

Unlike Microsoft Jet 3.0, when either Microsoft Jet 3.5 or the Microsoft Jet 2.x installable ISAM driver is registered, default settings and values are created.

Note In Microsoft Jet 3.5, you can change the values of these settings at run time by using the SetOption method in DAO code. For more information on the SetOption method, see Chapter 13, “Optimizing Performance.”

Setting Data type Default value Description
PageTimeout Integer 5 The length of time between when data that is not read-locked is placed in an internal cache and when it is invalidated (expressed in tenths of a second).
LockedPageTimeout Integer 5 The length of time between when data that is read-locked is placed in an internal cache and when it is invalidated (expressed in tenths of a second).
LockRetry Integer 20 The number of times to repeat attempts to access a locked page. (Note that the LockRetry setting is related to the CommitLockRetry setting.)
CommitLockRetry Integer 20 The number of times Microsoft Jet attempts to get a lock on data to commit changes to that data. If it fails to get a commit lock, updates to the data will be unsuccessful. The number of attempts Microsoft Jet makes to get a commit lock is directly related the LockRetry setting. For each attempt made at getting a commit lock, Microsoft Jet will try LockRetry the same number of times to get a lock. For example, if the value of the CommitLockRetry setting is 20 and the value of the LockRetry setting is 20, Microsoft Jet will attempt to get a commit lock as many as 20 times; and for each of those times, it can try to get a lock as many as 20 times, for a total of 400 attempts at locking.
CursorTimeout Integer 5 This value is applicable only to version 1.x of Microsoft Jet. The CursorTimeout setting controls the amount of time a reference to a page (a cursor) will remain on that page. If a cursor times out, the internal reference to the page it was referring to is removed. A page can be freed only if all cursors have timed out. The cursor timeout value is measured in tenths of a second and can have a value from 0 to approximately 65,000.
IdleFrequency Integer 10 Number of internal operations before causing an Idle call internally.
ForceOSFlush Integer 0 Any setting other than 0 means a commit or a write will force flushing the operating system cache to disk. A setting of 0 means no force flush occurs.

Setting Data type Default value Description
MaxBufferSize Integer 512 The size of the Microsoft Jet internal cache, measured in kilobytes (K). The value of the MaxBufferSize setting must be between 9 and 4096, inclusive.
ReadAheadPages Integer 8 Number of pages, measured in kilobytes (K), that Microsoft Jet attempts to read ahead for long value objects. The default value is 8K, which corresponds to four data pages.

The registry settings described in the following table are located in the \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Jet 3.5 key of the Windows registry. They control access to Microsoft Jet data. None of these keys are automatically created.

Setting Data type Default value Description
ExclusiveAsyncDelay Integer 2000 Maximum time before asynchronous changes will be written when the database is opened exclusively.
FlushTransactionTimeout Integer 500 The amount of time of inactivity before the asynchronous write cache is flushed to disk. This registry setting causes the ExclusiveAsyncDelay and SharedAsyncDelay registry settings to be ignored.
ImplicitCommitSync String No A value of Yes indicates that Microsoft Jet will wait for commits to finish. A value other than Yes means that Microsoft Jet will perform commits asynchronously.
LockDelay Integer 100 Depending on the network operating system, Microsoft Jet can cause short bursts of network traffic when attempting to retry for a lock. In order to prevent these short bursts of network traffic that could cause performance problems for the network administrator, this registry setting works in conjunction with the LockRetry registry setting and places a delay of the specified number of milliseconds between every lock retry. Besides eliminating the short burst of lock retries that could occur on certain network operating systems, this setting provides a more consistent feel to users when they encounter locking conflicts.
LockRetry Integer 20 The number of times to repeat attempts to access a locked page.

Setting Data type Default value Description
MaxBufferSize Integer calculated The size of the Microsoft Jet internal memory cache, measured in kilobytes (K). The value of the MaxBufferSize setting can be a minimum of 512 or the maximum that is limited by available memory. The MaxBufferSize setting should never be set to a value larger than half the total memory. The default is calculated by the following formula: ((Total RAM in MB - 12)/4) + 512K. For example, on a system with 32 MB of RAM, the default buffer size is ((32 MB - 12 MB) / 4) + 512K, or 5632K. If the default value of zero is used, the maximum that Microsoft Jet will allocate is 13,824K.
MaxLocksPerFile Integer 9500 Maximum number of accumulated locks allowed before an explicit transaction will automatically partially commit. While this setting is primarily for NetWare users, it is also useful to users of Windows NT Server or Workstation 3.5x because performance will start to degrade when Windows NT Server or Workstation has to manage more than 9500 locks. Windows NT Server and Workstation version 4.0 address many of those performance issues, but still runs optimally with the MaxLocksPerFile registry setting at its default value.
PageTimeout Integer 5000 The length of time between when data is placed in an internal cache and when it is checked to be potentially invalidated, expressed in milliseconds. In general, you shouldn’t change the value of the PageTimeout setting. If the cache is not being updated quickly enough to see other users’ changes, you can override the PageTimeout setting and refresh the cache by using the dbRefreshCache argument of the Idle method in DAO code. This allows users to see other users’ changes immediately. For more information, search the Help Index for ”Idle method.”

Setting Data type Default value Description
RecycleLVs Integer 0 The RecycleLVs setting determines when discarded long value (LV) pages become available for reuse. When the setting has a value of 0, discarded LV pages continue to occupy space in the database and only become available for reuse after the last user closes the database. You can change the RecycleLVs setting to 1 so that discarded LV pages become available for reuse after Microsoft Jet determines that there’s only one user in the database in shared mode and that new LV data has been added to the database.

Note Setting RecycleLVs to 1 slows down performance somewhat when manipulating long value data types. Microsoft Access will dynamically turn this feature on immediately before manipulating any of its objects that utilize LV data and will turn it off when those objects are no longer being manipulated. This provides the user with optimal performance while minimizing database bloat.

SharedAsyncDelay Integer 50 Maximum time before asynchronous changes will be written when the database is opened in shared mode.
Threads Integer 3 Number of background threads for the engine to use.
UserCommitSync String Yes When the setting has a value of Yes, Microsoft Jet will wait for commits to finish. Any other value means that Microsoft Jet will perform commits asynchronously.

See Also For more information on how these registry settings affect transactions and performance, see Chapter 13, “Optimizing Performance.”