To gain better performance and to aid data recovery, the transactional interface includes one or more committed operations (both transactional and non-transactional) into a bundle of operations called a system transaction. The transactional database engine creates a system transaction bundle for each file. A system transaction can contain operations and user transactions from one or more clients running on the same engine.
Pervasive PSQL guarantees transaction durability for all loggable files except those opened in Accelerated mode. (A file can be logged if it contains at least one unique, or non-duplicatable, key. The key can be system-defined.) Transaction durability is the assurance that before the transactional database engine returns a successful status code to the client for an End Transaction it finishes writing to the transaction log. When you open a file in Accelerated mode, the transactional interface does not log the file; therefore, the transactional database engine does not log entries to the file. Therefore, the transactional database engine cannot guarantee transaction durability for that file.
When the transactional database engine initiates system transactions less often, dirty pages, or pages that need to be written, stay in memory longer. If the application is doing a lot of change operations, these pages might get updated multiple times before being written to disk. This means fewer disk writes. In fact, the most efficient engine is one that writes only when it must.
The cache is an area of memory the transactional database engine reserves for buffering the pages that it reads. When an application requests a record, the transactional database engine first checks the cache to see if the page containing that record is already in memory. If so, the transactional database engine transfers the record from the cache to the application’s data buffer. If the page is not in the cache, the transactional database engine reads the page from the disk into a cache buffer before transferring the requested record to the application. The transactional database engine cache is shared by local clients and used across multiple operations.
See Multi-Record Operations for detailed information on these operations.