[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference orarep::nomahs::repository

Title:Oracle CDD/Repositorynce
Notice:Current versions are V7.0-01 and V6.1-03eld Test 3
Moderator:8292::PJACOBN
Created:Thu Jan 21 1993
Last Modified:Fri Jun 06 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:1094
Total number of notes:4913

1049.0. "Excessive pagefaulting - integrating with 6.1-03" by UKVMS3::PJACKSON (Oracle UK Rdb Support) Thu Feb 13 1997 12:39

    A customer has found that integrate takes much longer since they
    installed ECO 3 for 6.1. She thinks she was running 6.1-1 previously.
    One database takes 10 times longer to integrate. The other did not
    complete despite being allowed to run overnight.
    
    I have copies of the database and have been trying the integrates. I am
    using an Alpha, though she is using a VAX 3100.
    
    The simpler one seemed reasonable. Control T after the integrate
    showed:
    UKAA19::Peter Jackson 09:55:08 SQL$61    CPU=00:04:20.08 PF=23326 IO=16696
    
    The other one is doing an unreasonable number of page faults.
    SQL> integrate database filename device_db
    cont> create pathname [.cdd]device_db;
    UKAA19::Peter Jackson 13:21:59 SQL$61    CPU=00:00:03.36 PF=2991
    IO=1652 MEM=590
    %CDD-I-MBLRSYNINFO, unsupported entity - marked Incomplete at mblr
    offset 50
       .
       .
       .
    %CDD-I-MBLRSYNINFO, unsupported entity - marked Incomplete at mblr
    offset 52
    UKAA19::Peter Jackson 13:38:59 SQL$61    CPU=00:07:45.08 PF=78898
    IO=17477 MEM=2048
    UKAA19::Peter Jackson 13:58:06 SQL$61    CPU=00:17:44.64 PF=592210
    IO=47246 MEM=2048
    UKAA19::Peter Jackson 14:23:27 SQL$61    CPU=00:30:41.83 PF=2895291
    IO=80291 MEM=2048
    UKAA19::Peter Jackson 14:35:41 SQL$61    CPU=00:34:35.89 PF=3705222
    IO=89717 MEM=2048
    
    I'll give it the rest of today to see if it completes, then try it with
    CDD V7.0 tomorrow.
    
    Peter
T.RTitleUserPersonal
Name
DateLines
1049.14.8 million page faults to integrateUKVMS3::PJACKSONOracle UK Rdb SupportThu Feb 13 1997 13:1411
    It finished.
    
    SQL>
    UKAA19::Peter Jackson 15:01:04 SQL$61    CPU=00:38:16.70 PF=4832274
    IO=99240 MEM=1545
    
    I suspect that some data structure that is being sequentially sacnned
    has grown too big for memory.
    
    Peter
    
1049.2UKVMS3::PJACKSONOracle UK Rdb SupportThu Feb 13 1997 15:0313
    It looks like it maybe a Rdb data structure. I tried a commit after the
    integrate. It is still running.
    
    UKAA19::Peter Jackson 15:01:04 SQL$61    CPU=00:38:16.70 PF=4832274
    IO=99240 MEM=1545
    SQL> commit;
    UKAA19::Peter Jackson 15:32:01 SQL$61    CPU=00:39:09.50 PF=5187014
    IO=105331 MEM=2048
    UKAA19::Peter Jackson 17:01:49 SQL$61    CPU=00:44:34.99 PF=7428302
    IO=146541 MEM=2048
    
    Peter
    
1049.3NOVA::SMITHIDon't understate or underestimate Rdb!Thu Feb 13 1997 15:563
Try defining CDD$WAIT as "EXCLUSIVE" before the INTEGRATE.

Ian
1049.4UKVMS3::PJACKSONOracle UK Rdb SupportFri Feb 14 1997 08:1915
    Much better with cdd$wait = exclusive
    
    SQL> integrate database filename device_db
    cont> create pathname [.cdd]device_db;
    UKAA19::Peter Jackson 08:58:55 SQL$61    CPU=00:00:01.94 PF=2087 IO=790
    MEM=712
    UKAA19::Peter Jackson 09:44:02 SQL$61    CPU=00:23:29.11 PF=179107
    IO=59147 MEM=2048
    SQL>
    UKAA19::Peter Jackson 10:16:35 SQL$61    CPU=00:34:52.38 PF=404807
    IO=86985 MEM=42
    
    But that does not explain why the ECO slowed it down so much.
    
    Peter
1049.5NOVA::SMITHIDon't understate or underestimate Rdb!Fri Feb 14 1997 09:5615
~    But that does not explain why the ECO slowed it down so much.

It might be something to do with the access strategy to the various databases. 
This would require a comparison of the STRATEGY output before and after
installing the ECO.

The page faulting is due to keeping DBKEY lists for ALG.  When you use
CDD$WAIT EXCLUSIVE it means all the tables updated in the CDD/Repository are
reserved for exclusive access so these lists do not need to be maintained. 
Thus less memory is used.

It might be that more rows are read (sequential scan?  less selective index
usage?) and so the accumulated DBKEY list is larger.

Ian
1049.6UKVMS3::PJACKSONOracle UK Rdb SupportFri Feb 14 1997 11:156
    The customer is using a VAX 3100. I was using an Alphaserver 1000. Even
    with cdd$wait = exclusive it may be too slow for her.
    
    I will try on V7 to see if that is better.
    
    Peter
1049.7v7UKVMS3::PJACKSONOracle UK Rdb SupportFri Feb 14 1997 13:0957
    On a VAX 6000-330 with cdd$wait = exclusive and double the working set
    I was using on the Alpha, using Rdb 6.1A and CDD 7.0, it still seems to
    be doing an excessive number of page faults. I had rdms$debug_flags =
    tps.
    
    UKVMS3> define cdd$wait exclusive
    UKVMS3> define rdms$debug_flags tps
    UKVMS3> sql
    SQL>
    UKVMS3::_RTA6: 14:27:57 SQL$61    CPU=00:00:15.87 PF=6106 IO=629
    MEM=2104
    SQL> integrate database filename device_db
    cont>  create pathname [.cdd]device_db;
       .
       .
       .
    Get     Retrieval sequentially of relation RDB$CONSTRAINTS
    Get     Retrieval by index of relation RDB$RELATION_CONSTRAINTS
      Index name  RDB$RLC_CONSTRAINT_NAME_NDX [1:1]  Direct lookup
    UKVMS3::_RTA6: 14:37:34 SQL$61    CPU=00:08:41.11 PF=137948 IO=2356
    MEM=65500
    UKVMS3::_RTA6: 14:40:56 SQL$61    CPU=00:10:31.06 PF=163604 IO=2378
    MEM=65500
    UKVMS3::_RTA6: 14:50:04 SQL$61    CPU=00:17:04.17 PF=229466 IO=2380
    MEM=65500
    Conjunct
    Match
      Outer loop
        Get     Retrieval by index of relation RDB$RELATIONS
          Index name  RDB$REL_REL_NAME_NDX [0:0]
      Inner loop      (zig-zag)
        Get     Retrieval by index of relation RDB$INDICES
          Index name  RDB$NDX_REL_NAME_NDX [0:0]
    Leaf#01 FFirst RDB$INDEX_SEGMENTS Card=32
      BgrNdx1 RDB$NDX_SEG_NAM_FLD_POS_NDX [1:1] Fan=8
    %CDD-I-MBLRSYNINFO, unsupported entity - marked Incomplete at mblr
    offset 50
       .
       .
       .
    %CDD-I-MBLRSYNINFO, unsupported entity - marked Incomplete at mblr
    offset 52
    Get     Retrieval by DBK of relation CDD$$O_RECFLD_REL_S
       .
       .
       .
    Conjunct        Get     Retrieval by index of relation
    CDD$$O_FILE_REL_S
      Index name  CDD$$X_FILE_REL_S_2 [2:2]
    Leaf#01 FFirst CDD$$O_4GL_REL Card=0
      BgrNdx1 CDD$$X_4GL_REL_2 [2:2] Fan=49
    UKVMS3::_RTA6: 15:04:51 SQL$61    CPU=00:26:14.16 PF=258989 IO=3411
    MEM=65500
    UKVMS3::_RTA6: 15:08:07 SQL$61    CPU=00:29:17.01 PF=259486 IO=3770
    MEM=65500
    
    Peter
1049.8UKVMS3::PJACKSONOracle UK Rdb SupportMon Feb 17 1997 07:2811
    Apart from one stage the page faulting was reasonable, though it still
    took a long time (VAX 6000, CDD V7, WS 65500).
    
    Conjunct        Firstn  Get     Retrieval by DBK of relation
    CDD$$O_RELATION
    SQL>
    UKVMS3::_RTA6: 09:04:03 SQL$61    CPU=05:18:02.02 PF=329129 IO=113083
    MEM=65500
    
    Peter
    
1049.9Commit is slow, but no constraintsUKVMS3::PJACKSONOracle UK Rdb SupportMon Feb 17 1997 08:5533
    What is the commit doing? I thought it might be checking deffered
    constraints, but show table (constaints) * shows that there are no
    constraints in the CDD database.
    
    SQL> commit;
    Conjunct        Firstn  Get     Retrieval by DBK of relation
    CDD$$O_DATABASE
    UKVMS3::_RTA6: 09:26:58 SQL$61    CPU=05:18:03.05 PF=331107 IO=113104
    MEM=65500
     Commit_transaction on db: X00000001
     Prepare_transaction on db: X00000001
    UKVMS3::_RTA6: 09:27:19 SQL$61    CPU=05:18:06.06 PF=331622 IO=113107
    MEM=65500
    Conjunct        Firstn  Get
    Retrieval by DBK of relation CDD$$O_RECFLD_REL_S
    Conjunct        Firstn  Get
    Retrieval by DBK of relation CDD$$O_DATABASE_REL
    UKVMS3::_RTA6: 09:28:32 SQL$61    CPU=05:18:34.10 PF=338385 IO=113251
    MEM=65500
    Conjunct        Firstn  Get     Retrieval by DBK of relation
    CDD$$O_RECFLD
    UKVMS3::_RTA6: 09:29:48 SQL$61    CPU=05:18:48.43 PF=343837 IO=113502
    MEM=65500
    UKVMS3::_RTA6: 09:31:46 SQL$61    CPU=05:19:47.03 PF=345601 IO=114493
    MEM=65500
    UKVMS3::_RTA6: 09:41:01 SQL$61    CPU=05:26:05.91 PF=363230 IO=119841
    MEM=65500
    UKVMS3::_RTA6: 10:27:19 SQL$61    CPU=06:03:15.81 PF=418197 IO=151048
    MEM=65500
    UKVMS3::_RTA6: 10:51:55 SQL$61    CPU=06:20:51.32 PF=443284 IO=167169
    MEM=65499
    
    Peter
1049.10UKVMS3::PJACKSONOracle UK Rdb SupportTue Feb 18 1997 13:2936
    A test on an Alpha 3000-500 with CDD 6.1-03 and a WSextent of 65536,
    gave these results.
    
    UKAA34> define cdd$wait exclusive
    UKAA34> sql
    SQL>
    UKAA34::PJACKSON 11:57:35 SQL$61    CPU=00:00:03.63 PF=2469 IO=1148
    MEM=455
    SQL> integrate database filename device_db
    cont> create pathname [.cdd]device_db;
    %CDD-I-MBLRSYNINFO, unsupported entity - marked Incomplete at mblr
    offset 50
       .
       .
       .
    %CDD-I-MBLRSYNINFO, unsupported entity - marked Incomplete at mblr
    offset 52
    SQL>
    UKAA34::PJACKSON 13:02:24 SQL$61    CPU=00:45:53.03 PF=51931 IO=150914
    MEM=4096
    SQL> commit;
    SQL>
    UKAA34::PJACKSON 14:22:09 SQL$61    CPU=01:05:11.04 PF=444570 IO=366285
    MEM=4096
    SQL>
    
    This was with a repository create special for this integrate.
    
    It looks like it is not going to be feasable for the customer to
    integrate her databases on her 32Mbyte VAX 3100.
    
    Can anyone suggest a way to speed this up without using extra
    resources?
    
    Peter
    
1049.11NOVA::SMITHIDon't understate or underestimate Rdb!Tue Feb 18 1997 14:427
You must make sure that WSQUOTA and WSEXTENT remain close in value to avoid
SORT page faulting.

Also have they thought about using the INTEGRATE DOMAIN and INTEGRATE TABLE
commands to do just a few objects at a time?

Ian
1049.12UKVMS3::PJACKSONOracle UK Rdb SupportTue Feb 18 1997 15:2922
>You must make sure that WSQUOTA and WSEXTENT remain close in value to avoid
>SORT page faulting.

    Doubling WSEXTENT whilst leaving WSQUOTA alone reduced the page
    faulting by a factor of around 3 so that does not seem to be the
    problem here. My WSEXTENT for the latest test equalled the total memory
    on her system, but she has not be receptive to suggestions that her
    system needs upgrading.
    
>Also have they thought about using the INTEGRATE DOMAIN and INTEGRATE TABLE
>commands to do just a few objects at a time?
    
    According to the syntax diagram in HELP and the manual those options
    can't be used with CREATE PATHNAME.
    
    The integrate is done as part of installing the customer's product.
    They restore the database, create a repository and integrate into the
    repository. So this is not a one off operation for them. In fact the
    installation integrates several databases. Device_db is the slowest to
    integrate.
    
    Peter
1049.13NOVA::SMITHIDon't understate or underestimate Rdb!Tue Feb 18 1997 16:144
Did you give any thought to my suggestion in .5?  Maybe you can create query
outlines to improve the queries on the CDD tables.

Ian
1049.14UKVMS3::PJACKSONOracle UK Rdb SupportWed Feb 19 1997 08:1816
>Did you give any thought to my suggestion in .5?  Maybe you can create query
>outlines to improve the queries on the CDD tables.
    
    Looking at RMU/SHOW STAT during the pauses in the debug flag output,
    it seemed that a lot of the time little Rdb work is being done, though a
    lot of CPU was being used and pagefaults were occurring. It seems that
    much of the time is spent on actual CDD activity.
    
    The customer is a bit unclear as to which version of CDD it last worked
    on. I tried it on 6.1-02 and it fell over with the error we supplied
    ECO3 to fix (NOLINK).
    
    The strategies that appear just before the long pauses are retrievals
    via DBKEY on single tables, so I don't think they can be improved.
    
    Peter
1049.15UKVMS3::PJACKSONOracle UK Rdb SupportWed Feb 19 1997 09:4027
    I am running the integrate again. This time with Rdb7 and CDD 6.1-03.
    
    The strategies just before pauses in the output are:
    
    Get     Retrieval sequentially of relation RDB$CONSTRAINTS
    Get     Retrieval by index of relation RDB$RELATION_CONSTRAINTS
      Index name  RDB$RLC_CONSTRAINT_NAME_NDX [1:1]  Direct lookup
    
    Conjunct        Get     Retrieval by index of relation CDD$$O_FILE_REL_S
      Index name  CDD$$X_FILE_REL_S_2 [2:2]
    Leaf#01 FFirst CDD$$O_4GL_REL Card=0
      BgrNdx1 CDD$$X_4GL_REL_2 [2:2] Fan=49
    
    Conjunct        Firstn  Get
    Retrieval by DBK of relation CDD$$O_RECFLD_REL_S
    Conjunct        Firstn  Get     Retrieval by DBK of relation CDD$$O_RECFLD
    
    Conjunct        Firstn  Get     Retrieval by DBK of relation CDD$$O_RECFLD
    Conjunct        Firstn  Get     Retrieval by DBK of relation CDD$$O_RECFLD
    
    Conjunct        Firstn  Get
    Retrieval by DBK of relation CDD$$O_DATABASE_REL
    
    They look too simple for a query outline to have a chance of improving
    them.
    
    Peter
1049.16Could the constraints be the problemUKVMS3::PJACKSONOracle UK Rdb SupportWed Feb 19 1997 13:3013
    Rdb V& did not make much difference.
    
    RDB$RELATIONS has 75 rows, RDB$FIELDS has 837 rows, RDB$CONSTRAINTS has
    1301 rows.
    
    This seems to be a high number of constraints to me.
    
    Most are of the form
    
            CHECK( F_A_CHANGE_GIVING_COUNT BETWEEN 0 AND 255 )
            CHECK( F_COIN_VALUE_DENOM_A BETWEEN 0 AND 65535 )
    
    Peter
1049.17UKVMS3::PJACKSONOracle UK Rdb SupportWed Feb 19 1997 14:3423
    I dropped all the constraints and tried again.
    
    SQL>
    UKAA34::_RTA4: 16:25:56 SQL$      CPU=00:00:01.85 PF=1285 IO=644
    MEM=435
    SQL> integrate database filename device_db
    cont> create pathname [.cdd]device_db;
    UKAA34::_RTA4: 16:26:33 SQL$      CPU=00:00:02.34 PF=1566 IO=815
    MEM=790
    SQL>
    UKAA34::_RTA4: 16:27:30 SQL$      CPU=00:00:45.86 PF=3664 IO=3268
    MEM=2770
    SQL> commit;
    SQL>
    UKAA34::_RTA4: 16:27:49 SQL$      CPU=00:00:46.28 PF=3716 IO=3337
    MEM=2770
    
    So it is the constraints that are causing the problem. 
    I don't think the customer is interested in having the constraints
    integrated. She is doing it for DATATRIEVE.
    Is it worth asking for an option to ignore constraints on an integrate?
    
    Peter
1049.18UKVMS3::PJACKSONOracle UK Rdb SupportThu Feb 20 1997 07:1322
    I restored the database and dropped just the constraints with a blank
    rdb$field_name in rdb$relation_constraints (759 of them, approx 2/3 of
    the total). I'll show the strategies for the relation tables.
    
    SQL> integrate database filename device_db
    cont> create pathname [.cdd]device_db;
    UKAA34::_RTA4: 17:15:16 SQL$      CPU=00:00:01.99 PF=1297 IO=627
    MEM=588
    Get     Retrieval sequentially of relation RDB$CONSTRAINTS
    Get     Retrieval by index of relation RDB$RELATION_CONSTRAINTS
      Index name  RDB$RLC_CONSTRAINT_NAME_NDX [1:1]  Direct lookup
    UKAA34::_RTA4: 17:16:00 SQL$      CPU=00:00:38.00 PF=4607 IO=3009
    MEM=2923
    SQL>
    UKAA34::_RTA4: 17:30:48 SQL$      CPU=00:11:11.00 PF=15195 IO=29235
    MEM=4096
    SQL> commit;
    SQL>
    UKAA34::_RTA4: 08:59:33 SQL$      CPU=00:15:26.21 PF=19678 IO=72016
    MEM=4096
    
    Peter
1049.19BugNo:455963UKVMS3::PJACKSONOracle UK Rdb SupportFri Feb 21 1997 06:041
    
1049.20M5::LWILCOXChocolate in January!!Fri Feb 21 1997 12:298
        <<< Note 1049.16 by UKVMS3::PJACKSON "Oracle UK Rdb Support" >>>
                   -< Could the constraints be the problem >-

>>    Rdb V& did not make much difference.

Must be some "special" version.

:-).    
1049.21UKVMS3::PJACKSONOracle UK Rdb SupportThu Apr 17 1997 08:2118
    We are still trying to find a workaround that the customer will accept.
    
    We have suggested two so far.
    
    1) Drop the constraints. Do the integrate, Add the constraints back in.
    This is faster, but still too slow.
    
    2) Restore and integrate a copy of the database with no  constraints.
    Delete it without letting CDD know. Restore the full database without
    integrating.
    The customer considers this too complicated for her customer.
    
    They only use CDD for Datatrieve. They only other workaround I can
    think off is to get rid of CDD.
    
    Any other ideas would be welcomed.
    
    Peter