Shallow dictionary cache for ER? 
Author Message
 Shallow dictionary cache for ER?

Hello,

We're running 9.20.FC1 on Irix 6.5. We also have update anywhere replication with two other instances that are running the same version of IDS and Irix.

We once ran into bug 123374 which caused our production instance to assert fail. Tech support advised us to triple our dictionary cache by setting:

DD_HASHSIZE     51
DD_HASHMAX      20

We made a mistake and set our parameters to:

DD_HASHSIZE     511
DD_HASHMAX      20

So instead of tripling our dictionary cache, we increased it 33 times. Plus 511 isn't a prime number like it should be (73*7=511). But it worked: no more assert failures (caused by this bug, anyway).

'onstat -g dic' shows 1275 entries on an instance that can support 10220. We want to decrease DD_HASHMAX, but somewhere on this newsgroup I remember someone reading that if one is running ER it's better to have the dictionary cache shallow, i.e. DD_HASHSIZE should be much larger than DD_HASHMAX. I looked in the c.d.i archive and on google but didn't find anything. Anyone? Or was I hallucinating again?

Brice Avila
Wam!Net
Eagan, Minnesota
(651) 256-5015



Wed, 02 Jun 2004 05:28:28 GMT
 Shallow dictionary cache for ER?

Opps....

No big deal.   DD_HASHSIZE is used to calculate the size of the head of a cache array It's basically just the head of a whole bunch of linked lists.  By sizing DD_HASHSIZE to 511 all you've done is to set the number of chains to 511.

Now, we don't actually allocate 20 entries for each of these chains.  All the 20 means is that the heads of those chains have been allocated.  We actually allow more than 20 entries in each of the chains if they are referenced.  However, if the dictionary entry is not referenced, then we would remove an entry when the 'in-use' count reaches zero and there are more than 20 entries on the chain.  So I
wouldn't worry too much about the impact of having increased the width of the hash array to 511.

Now why would anyone say that ER prefers a shallow cache?  Doesn't make sense to me.

One of the characteristics of ER is that there is always an open statement for any replicated table.  This is necessary to evalutate the row by the grouper and to apply the row by the DataSync.  Since there is always an open statement for the replicated table, then the dictionary information for that table is always in the dictionary cache. This would create a problem for ER sites because it becomes more
probable that the dictionary chain will be full.  That would mean that there would be thrashing of the non-replicated table that happens to hash to the full chain.

So I would question the wisdom of making the dictionary cache shallow for an ER system.

Quote:

> Hello,

> We're running 9.20.FC1 on Irix 6.5. We also have update anywhere replication with two other instances that are running the same version of IDS and Irix.

> We once ran into bug 123374 which caused our production instance to assert fail. Tech support advised us to triple our dictionary cache by setting:

> DD_HASHSIZE     51
> DD_HASHMAX      20

> We made a mistake and set our parameters to:

> DD_HASHSIZE     511
> DD_HASHMAX      20

> So instead of tripling our dictionary cache, we increased it 33 times. Plus 511 isn't a prime number like it should be (73*7=511). But it worked: no more assert failures (caused by this bug, anyway).

> 'onstat -g dic' shows 1275 entries on an instance that can support 10220. We want to decrease DD_HASHMAX, but somewhere on this newsgroup I remember someone reading that if one is running ER it's better to have the dictionary cache shallow, i.e. DD_HASHSIZE should be much larger than DD_HASHMAX. I looked in the c.d.i archive and on google but didn't find anything. Anyone? Or was I hallucinating again?

> Brice Avila
> Wam!Net
> Eagan, Minnesota
> (651) 256-5015


--
---------------------------------------------------------
Madison Pruet
Enterprise Replication Product Development
IBM Informix Dynamic Server


Wed, 02 Jun 2004 06:55:37 GMT
 
 [ 2 post ] 

 Relevant Pages 

1. Library Cache and Dictionary Cache Tuning - Help

2. Initializing Dictionary Cache and Stored Procedure Cache

3. ER-diagram of the Data Dictionary available ?

4. ER/Data Dictionary Tools

5. Can you flush the dictionary cache?

6. TUNING THE DATA DICTIONARY CACHE

7. Data Dictionary Cache - DC_HISTOGRAM_DEFS ??

8. Help: libaray cache and dictionary tunning

9. Data dictionary cache

10. Dictionary Cache

11. Can you purge the Dictionary Cache?

12. dictionary cache parameters


 
Powered by phpBB® Forum Software