Chapter 14. Performance Pack

14.1. SQL Batching
14.2. Eager Fetching
14.2.1. Configuring Eager Fetching
14.2.2. Eager Fetching Considerations
14.3. Datastore Cache
14.3.1. Overview of Kodo JDO Datastore Caching
14.3.2. Kodo JDO Cache Usage
14.3.3. Query Caching
14.3.4. DataCache Integrations
14.3.5. Cache Extension
14.3.6. Important Notes
14.3.7. Known Issues and Limitations
14.4. Remote Event Notification Framework
14.4.1. Remote Commit Provider Configuration
14.4.2. Customization
14.5. Fetch Groups
14.5.1. Normal Default Fetch Group Behavior
14.5.2. Kodo JDO Fetch Group Behavior
14.5.3. Custom Fetch Group Configuration
14.5.4. Per-field Fetch Configuration
14.6. Lock Groups
14.6.1. Lock Groups and Subclasses
14.6.2. Lock Group Mapping
14.7. Profiling
14.7.1. Profiling in an embedded GUI
14.7.2. Dumping profiling data to disk from a batch process
14.7.3. Controlling how the profiler obtains context information

The Kodo JDO Performance Pack is a suite of features that enhance the speed and functionality of the Kodo runtime. The Performance Pack is included in all Enterprise Edition licenses, or can be purchased separately. Contact sales@solarmetric.com for details.

14.1. SQL Batching

In addition to connection pooling and prepared statement caching, Kodo can be configured to employ SQL batching to speed up JDBC updates. By default, SQL batching is enabled for any JDBC driver that supports it. When batching is on, Kodo JDO automatically orders its SQL statements to maximize the size of each batch. This can result in large performance gains for transactions that modify a lot of data.

SQL batching is configured through the system DBDictionary, which is controlled by the kodo.jdbc.DBDictionary configuration property. The example below shows how to enable and disable SQL batching via the configuration properties file.

Example 14.1. Configuring SQL Batching

The batch limit is the maximum number of statements Kodo will ever batch together. A value of -1 means "no limit" (this is the default for most dictionaries). A value of 0 disables batching.

kodo.jdbc.DBDictionary: BatchLimit=25