Configure parameters for large return sets.
In the <server> section of your sbd.sbconf you can add:
<ac:default-parameter>xml</ac:default-parameter>
<param name="disk-querytable-lock-objects" value="100000"/>
<param name="disk-querytable-locks" value="100000"/>
Other possible causes of this problem:
- The file or directory in which the disk-based-query-table resides has become unreadable to the current user due to permissions.
- The disk is near full.
- The DBQT has run out of lock. The default setting for table locks, when nothing is configured in the sbd.sbconf file, is 10000.
Set the following in the sbd.sbconf to these or larger values:
<ac:default-parameter>xml</ac:default-parameter>
<param name="disk-querytable-lock-objects" value="100000"/>
<param name="disk-querytable-locks" value="100000"/>
- You can try increasing the number of locks to 1000000 (1 million), but be aware that as you increase the size of your disk based query table, the buffer size and flush interval may need to be modified as well to ensure optimal performance.
- The sbclient.jar file found by the server is the incorrect version (a different maintenance release of the same major version). Check with the output of sbhealth.
Additional Information
StreamBase CEP uses the Berkeley DB subsystem for disk-based Query Table elements.
See the
Berkeley DB reference for estimating the number of locks.
The Query Table implementation has these attributes:
- It is a Berkeley DB Transactional Data Store using Queued access.
- Transaction mode is configured in the sbd.sbconf. All modes are supported.
- The typical implementation is Btree although StreamBase supports Hash as well, as configured in the Table Indexes.
- The default number of lock-table partitions is the number of CPU cores reported by the operating system times ten.