On 02.02.2012 11:14, Kristian Waagan wrote:
On 01.02.2012 14:51, Rick Hillegas wrote:
< snip>
On 2/1/12 4:07 AM, Simon Chatelain wrote:
< snip>
You may want to set derby.storage.indexStats.log=true, and more importantly, derby.storage.indexStats.debug.trace=true. Run you app for a while, then grep for "{istat}" in derby.log.
This will tell you if automatic calculation is being triggered.

Although strongly discouraged for production environments, you can try to set lndiffThreshold to zero, or a very small value, to schedule an update on every occasion, i.e. when you compile a statement like "select ... from tbl where indexed_column = ?".

If you want to test this manually, you will appreciate setting derby.storage.indexStats.debug.absdiffThreshold, and possibly derby.storage.indexStats.debug.createThreshold, to a lower value (both express number of rows, defaults are 1000 and 250 respectively).

Just for reference, testing stuff like this in ij can be done along these lines: select * from sys.sysstatistics (note creationtimestamp / statistics, may want a join to get table name)
insert into ... (or delete from ...)
prepare q as 'select * from <table> where <indexed_column> = ?'
select * from sys.sysstatistics


--
Kristian


Note that the istat daemon will only be triggered when the table changes in size. If you do updates that changes the index key distribution significantly you'll want to generate new statistics manually/periodically.


Regards,

Reply via email to