Configurable EDB Volume Options (Windows CE 5.0)
EDB allows you to set various options on each EDB volume. These options are set using the CEVOLUMEOPTIONS structure and the CeMountDBVolEx function.
Once a volume has been mounted, you cannot change the volume options. Therefore, the volume options are considered only once, when the volume is first mounted.
The following table shows the settings you can adjust on an EDB volume. The paragraphs that follow the table provide further information on each of the settings.
EDB volume setting | Description | Default value (and range) |
---|---|---|
BufferPoolSize | Specifies the size, in bytes, of the buffer pool. | 640 KB |
AutoShrinkPercent | Specifies the amount of free space (an integer from 0 to 100) to allow before automatically shrinking the database. | 60
(0-100) |
FlushInterval | Specifies the interval (in seconds) in which the dirty pages in a volume are flushed to disk. | 10 seconds
(1-1000 seconds) |
MaxNotifyChanges | Specifies the maximum number of changes to queue during a transaction. | 1000 |
DefaultTimeout | Specifies the number of milliseconds a transaction waits before abandoning the wait on a lock. | 2000 |
Password | Password-protects and encrypts the volume. | (no password) |
BufferPoolSize
The buffer pool is used to cache pages and to manage transactions. The larger the buffer pool size, the better performance becomes, but the buffer pool consumes memory and so you need to adjust the BufferPoolSize setting for your specific needs.
AutoShrinkPercent
The value assigned to AutoShrinkPercent represents the percentage of the database that is free space. For example, a setting of 70 causes EDB to shrink the database automatically when the free space exceeds 70% of the database size. A value of 0 disables automatic shrinking.
Note Automatic shrinking does not affect the OIDs of the database.
FlushInterval
You can change the FlushInterval setting to determine how often EDB writes changes to disk. The shorter you set the flush interval, the more often EDB writes to disk. The longer you set the flush interval, the fewer the disk writes. However, if the application crashes before changes have been flushed, the changes are lost (but no corruption occurs).
Note A flush occurs only if the data in the volume has changed.
MaxNotifyChanges
You use this setting to improve performance during long-running transactions. When the MaxNotifyChanges threshold is exceeded, notification clients do not receive insert, update, and delete notifications. Instead, they receive only DB_NOTIFY_VOLUME_CHANGED notifications.
For more information on notifications, see Using Notifications with EDB.
DefaultTimeout
This setting specifies the time (in milliseconds) that a transaction will wait for another transaction to release a lock. If the timeout time elapses, the transaction fails. When choosing a setting for DefaultTimeout, consider your concurrency scenario on the volume. If your application requires data to be flushed immediately, you should set DefaultTimeout to a low value or call the CeFlushDBVol function. However, flushing is a resource-intensive operation and may affect performance.
Note EDB flushes data only after modifications have occurred.
Password
In addition to providing password protection, this setting also encrypts the data in the volume. The maximum password length is 40 characters.
Note EDB does not support a shared volume.
See Also
CEVOLUMEOPTIONS | CeMountDBVolEx | Using Notifications with EDB
Send Feedback on this topic to the authors