Cache settings priority.
Database cache size can be determined by (in the order of importance):
- IB server built-in default.
- ibconfig file (server wide).
- Attachment level (per connection setting).
- Database wide cache size.
Notes:
1) IB server built-in default:
There are different values depending on IB version, e.g.
IB6 classic (Linux) - 75
IB6 superserver (Windows) - 2048
IB5 superserver (Windows) - 256
2) ibconfig file (server wide):
Do not forget to uncomment proper line (i.e. remove # from DATABASE_CACHE_PAGES line) and restart IB (superserver) to take change into account.
3) Attachment level:
It is set by isc_dpb_num_buffers in DPB block, of -c flag on isql command line. The behavior is different for Classic and for Superserver:
Because in classic IB each user runs its own copy of IB server, each user has its own buffers (i.e. changing number of buffers does not affect other users/processes), and thus user can set whichever value he/she wants (well, in given boundaries, which is 50 to 64K)
In superserver IB, buffers are shared among all users; it means
- first connection can change the cache size without restrictions.
- all subsequent (secondary) connections can only increase current value.
4) Database wide size:
It has highest priority, so it can't be changed even at attachment level! It is set usually by gfix (e.g. gfix -buffers 1234) and stored on gdb header page.
For anybody who wish to play with these settings: to check current cache size in isql and WISQL, use commands
SET STAT;
COMMIT;
(This article was contributed by Ivan Prenosil.)
|