Can you purge the Dictionary Cache?
Posted in 2000
Topics: Platform-Specific Issues, Versions, Editions & End-of-Life
Hi, Does anyone know if you can purge entries out of the dictionary cache. It seems that once a tablename gets in there, it will remain until forced out by another tablename, you drop the database or bounce the engine. I've got a number of databases with similar schema, so lots of the tablenames hash to the same slot. I've configured DD_HASHMAX and DD_HASHSIZE as best I can, but can't get the number of tablenames in each slot identical. So, some slots end up having tablenames for databases that no-one is currently accessing. It would be nice to be able to purge out these names, so reducing search times, and memory usage. I'm running IDS 7.31.UC4 on Solaris 2.6. Many thanks, Andy. Andrew Lennard andy@kontron.demon.co.uk
In article <DWcXZKAt5fS5Ewdn@kontron.demon.co.uk>, Andy Lennard <andy@kontron.demon.co.uk> writes >Hi, > >Does anyone know if you can purge entries out of the dictionary cache. >It seems that once a tablename gets in there, it will remain until >forced out by another tablename, you drop the database or bounce the >engine. > >I've got a number of databases with similar schema, so lots of the >tablenames hash to the same slot. I've configured DD_HASHMAX and >DD_HASHSIZE as best I can, but can't get the number of tablenames in >each slot identical. So, some slots end up having tablenames for >databases that no-one is currently accessing. It would be nice to be >able to purge out these names, so reducing search times, and memory >usage. > No you cannot! >I'm running IDS 7.31.UC4 on Solaris 2.6. > >Many thanks, >Andy. >Andrew Lennard andy@kontron.demon.co.uk -- David Williams
It is a hash table there should be no effect on search times of tables in buckets by themselves that noone is using. Only those crowded buckets will affect search time as on average 1/2 of the slots in that bucket must be searched, but there can't many entries in each bucket (what 30?) so search times should still be good. You cannot flush the cache manually, but do not worry about it. Art S. Kagel Andy Lennard wrote: > > Hi, > > Does anyone know if you can purge entries out of the dictionary cache. > It seems that once a tablename gets in there, it will remain until > forced out by another tablename, you drop the database or bounce the > engine. > > I've got a number of databases with similar schema, so lots of the > tablenames hash to the same slot. I've configured DD_HASHMAX and > DD_HASHSIZE as best I can, but can't get the number of tablenames in > each slot identical. So, some slots end up having tablenames for > databases that no-one is currently accessing. It would be nice to be > able to purge out these names, so reducing search times, and memory > usage. > > I'm running IDS 7.31.UC4 on Solaris 2.6. > > Many thanks, > Andy. > Andrew Lennard andy@kontron.demon.co.uk
But, I can't help thinking that for me the dictionary isn't helping as much as it could.... 1) the slot is determined by just tablename. I have the situation where I have many databases with the same tablenames, so every 'table1' from every database hashes to the same slot. 2) despite trying hard with DD_HASHSIZE, I cannot get to the situation where the slots fill equally, without changing my tablenames. This leads to slots filling at different rates. Of my many databases, a fixed number are 'current', and so I have sized DD_HASHMAX to <n_current_databases>*<max_n_tablenames_per_slot>. 3) The system creates databases at a rate of, say, 20 through the day. These ones (and some from previous days) are 'current' and others are no longer used. The 'unused' ones are dropped after, say, a month. So the slots that only hash to a single table name contain references to both the 'current' and the 'unused' databases. Slots seem to be filled in chronological order so searches through these 'single tablename' slots will always have to traverse almost all the entries before the correct database/tablename is found. With DD_HASHSIZE set to 547, I have got the the maximum number of tablenames per slot down to 2, and to cope with 25 'current' databases, DD_HASHMAX is 50. The majority of the slots are unused. Of the used ones the majority hash to a single tablename, and so contain references to 25 'unused' databases before the 'current' ones. Unfortunately (!) the system is 24x7 so I'm not able to take it off/online to re-initialise things. Thanks for your interest. Andy. In article <394FA142.784781A2@bloomberg.net>, "Art S. Kagel" <kagel@bloomberg.net> writes >It is a hash table there should be no effect on search times of tables in >buckets by themselves that noone is using. Only those crowded buckets will >affect search time as on average 1/2 of the slots in that bucket must be >searched, but there can't many entries in each bucket (what 30?) so search >times should still be good. > >You cannot flush the cache manually, but do not worry about it. > >Art S. Kagel > >Andy Lennard wrote: >> >> Hi, >> >> Does anyone know if you can purge entries out of the dictionary cache. >> It seems that once a tablename gets in there, it will remain until >> forced out by another tablename, you drop the database or bounce the >> engine. >> >> I've got a number of databases with similar schema, so lots of the >> tablenames hash to the same slot. I've configured DD_HASHMAX and >> DD_HASHSIZE as best I can, but can't get the number of tablenames in >> each slot identical. So, some slots end up having tablenames for >> databases that no-one is currently accessing. It would be nice to be >> able to purge out these names, so reducing search times, and memory >> usage. >> >> I'm running IDS 7.31.UC4 on Solaris 2.6. >> >> Many thanks, >> Andy. >> Andrew Lennard andy@kontron.demon.co.uk Andrew Lennard andy@kontron.demon.co.uk