Subject RE: [firebird-support] RE: Stored Proc optimisation advice
Author Maya Opperman
>> >Get the statistics on the various runs of the sub-procedure- reads,
>> writes, fetches, and marks.
>> No writes. 47 000 indexed reads.


>Lets try that one again. I'd like both reads and fetches, with statistics
>for a run of the subquery that's fast and one that's slow. Did you mean
>that computing one account balance involved forty-seven thousand indexed
>reads? That's some account!

Yup. BUT, the weird thing is, it's that SAME account that is sometimes fast and sometimes slow. It just depends on what other table/account you've queried beforehand.


>Gstat will tell you how deep your indexes are. Firebird indexes are very broad based triangles, with a single page at the top, lots of pages on the >next level down, and enormous numbers of pages on the level below that.
>The taller (or deeper) the triangle, the slower it is. The height and width are determined by page size and key size. An index with four or more >levels is an indication that you should increase the page size for your database. Run gstat and search for the indexes used by this sub-procedure.

Max depth in the whole database is 3 ;-)

>I'm sure you mentioned it somewhere, but what is the database page size?
> And the cache size?

Generation 1311
Page size 8192
ODS version 11.2
Oldest transaction 1292
Oldest active 1293
Oldest snapshot 1293
Next transaction 1294
Bumped transaction 1
Sequence number 0
Next attachment ID 9
Implementation ID 16
Shadow count 0
Page buffers 1000 <<<< was 150, but I tried increasing to see if it would make a difference - it didn't seem to have any effect
Next header page 0
Database dialect 3
Creation date Sep 11, 2012 11:43:22
Attributes force write, no reserve
Sweep interval: 200000