SQL$HELP_OLD72.HLB  —  CREATE  CACHE
                                   NOTE

       You cannot issue CREATE CACHE as an independent statement.
       It is a clause allowed only as part of a CREATE DATABASE or
       IMPORT statement.

       You can also create a row cache using the ADD CACHE clause
       of the ALTER DATABASE statement.

    Creates a row cache that allows frequently referenced rows
    to remain in memory even when the associated page has been
    transferred back to disk. This saves in memory usage because
    only the more recently referenced rows are cached versus caching
    the entire buffer.

    See the ALTER DATABASE statement and the CREATE DATABASE
    statement for more information regarding the row cache areas.

1  –  Environment

    You can use the CREATE CACHE clause only within a CREATE DATABASE
    or IMPORT statement. You can use the ADD CACHE clause only within
    the ALTER DATABASE statement.

2  –  Format

  CREATE CACHE <row-cache-name> -+-+----------------------+-+->
                                 | +-> row-cache-params1 -+ |
                                 | +-> row-cache-params2 -+ |
                                 +------------ <------------+

  add-row-cache-clause =

  ---> ADD CACHE <row-cache-name> -+-+----------------------+-+->
                                   | +-> row-cache-params1 -+ |
                                   | +-> row-cache-params2 -+ |
                                   +-------------<------------+

  row-cache-params1 =

  --+-> ALLOCATION IS <n> -+--+-----------+----------------+->
    +-> EXTENT IS <n> -----+  +-> BLOCK --+                |
    |                         +-> BLOCKS -+                |
    +-> CACHE SIZE IS <n> -+----> ROW --+------------------+
    |                      +----> ROWS -+                  |
    +-> CHECKPOINT -+> UPDATED ROWS TO -+> BACKING FILE -+-+
    |               |                   +> DATABASE -----+ |
    |               +> ALL ROWS TO BACKING FILE ---------+ |
    +-> LARGE MEMORY IS ----+-+-> ENABLED --+--------------+
    +-> ROW REPLACEMENT IS -+ +-> DISABLED -+              |
    +-> LOCATION IS --> <directory-spec> ------------------+
    +-> NO LOCATION ---------------------------------------+

  row-cache-params2 =

  --+-> NUMBER OF -+-> RESERVED -+-> ROWS IS <n> --------------+->
    |              +-> SWEEP ----+                             |
    +-> ROW LENGTH IS <n> -+-------------+---------------------+
    |                      +----> BYTE --+                     |
    |                      +----> BYTES -+                     |
    |                                                          |
    +-> ROW SNAPSHOT IS --+-> ENABLED rs-opt  -+---------------+
    |                     +-> DISABLED --------+               |
    |                                                          |
    +-> SHARED MEMORY IS --+----> SYSTEM -------------------+--+
                           +----> PROCESS --+-------------+-+
                                            |             |
                                            +-> RESIDENT -+

  rs-opt =
  --+-------------------------------+--->
    +-> (CACHE SIZE IS <n> ROWS) ---+

3  –  Arguments

3.1  –  ALLOCATION

    Syntax options:

    ALLOCATION IS n BLOCK | ALLOCATION IS n BLOCKS

    Specifies the initial allocation of the row cache file (.rdc) to
    which cached rows are written.

    If the ALLOCATION clause is not specified, the default allocation
    in blocks is approximately 40 percent of the CACHE SIZE for this
    cache.

    This clause is ignored if the row cache is defined to checkpoint
    to the database.

3.2  –  CACHE

    Creates a row cache.

3.3  –  CACHE_SIZE

    Syntax options:

    CACHE SIZE IS n ROW | CACHE SIZE IS n ROWS

    Specifies the number of rows allocated to the row cache. As the
    row cache fills, rows more recently referenced are retained in
    the row cache while those not referenced recently are discarded.
    Adjusting the allocation of the row cache helps to retain
    important rows in memory. If not specified, the default is 1000
    rows.

3.4  –  CHECKPOINT

    Syntax options:

       CHECKPOINT ALL ROWS TO BACKING FILE
       CHECKPOINT UPDATED ROWS TO BACKING FILE
       CHECKPOINT UPDATED ROWS TO DATABASE

    Specifies the source records and target for checkpoint operations
    for the row cache. If ALL ROWS is specified, then the records
    written during each checkpoint operation are both the modified
    and the unmodified rows in the row cache. If UPDATED ROWS is
    specified, then just the modified rows in the row cache are
    checkpointed each time.

    If the target of the checkpoint operation is BACKING FILE, then
    the row cache server (RCS) process writes the row cache entries
    to the backing (.rdc) files. The row cache LOCATION, ALLOCATION,
    and EXTENT clauses are used to create the backing files. Upon
    recovery from a node failure, the database recovery process is
    able to repopulate the row caches in memory from the rows found
    in the backing files.

    If the target is DATABASE, then the updated rows (only UPDATED
    ROWS is allowed) are written back to the database. The row
    cache LOCATION, ALLOCATION, and EXTENT clauses are ignored. Upon
    recovery from a node failure, the database recovery process has
    no data on the contents of the row cache. Therefore, it does not
    repopulate the row caches in memory.

    This CHECKPOINT clause overrides the database-level CHECKPOINT
    clause.

3.5  –  EXTENT

    Syntax options:

    EXTENT IS n BLOCK | EXTENT IS n BLOCKS

    Specifies the file extent size for the row cache file (.rdc).

    If the EXTENT clause is not specified, the default number of
    blocks is CACHE SIZE * 127 for this cache.

    This clause is ignored if the row cache is defined to checkpoint
    to the database.

3.6  –  LOCATION

    Syntax options:

    LOCATION IS directory-spec

    Specifies the name of the directory to which row cache
    information is written. The database system generates a file
    name (row-cache-name.rdc) automatically for each row cache at
    checkpoint time. Specify a device name and directory name only,
    enclosed within single quotation marks. By default, the location
    is the directory of the database root file. These .rdc files are
    permanent database files.

    This LOCATION clause overrides a previously specified location at
    the database level.

    This clause is ignored if the row cache is defined to checkpoint
    to the database.

3.7  –  NO_LOCATION

    Removes the location previously specified in a LOCATION IS clause
    for the row cache. If you specify NO LOCATION, the row cache
    location becomes the directory of the database root file.

    This clause is ignored if the row cache is defined to checkpoint
    to the database.

3.8  –  NUMBER_OF_RESERVED_ROWS

    Syntax options:

    NUMBER OF RESERVED ROWS IS n

    Specifies the maximum number of cache rows that each user can
    reserve for insertion into the cache. Processes reserve, or
    allocate, entries in a cache to be used when inserting rows into
    the cache. To improve efficiency, multiple entries are reserved
    at one once. Once a user's reserved list becomes depleted, Oracle
    Rdb attempts to reserve another group of entries. The default is
    20 rows.

    This value is also used when searching for available slots in a
    row cache. The entire row cache is not searched on the initial
    pass. This value specifies the maximum number of rows that are
    searched for a free slot. If at least one free slot is found, the
    insert operation can proceed. If no free slots are found in this
    initial search, Oracle Rdb continues searching through the cache
    until it finds a free slot.

3.9  –  NUMBER_OF_SWEEP_ROWS

    Syntax options:

    NUMBER OF SWEEP ROWS IS n

    Specifies the number of modified rows that will be written from
    the row cache back to the database by the row cache server (RCS)
    process during a sweep operation. When the RCS is notified that
    a cache is "full" of modified data, the RCS starts a sweep to
    make space available in the cache for subsequent transactions
    to be able to insert rows into the cache. Oracle Corporation
    recommends that you initially specify the number of sweep rows
    to be approximately 5 percent of the total number of rows in
    the cache. Then monitor performance and adjust the number of
    sweep rows, if necessary. Allowable values must be in the range 2
    through 524288. If not specified, the default is 3,000 rows.

3.10  –  ROW_LENGTH

    Syntax options:

    ROW LENGTH IS n BYTES

    Specifies the length of each row allocated to the row cache. Rows
    are not cached if they are too large for the row cache. area. The
    ROW LENGTH is an aligned longword rounded up to the next multiple
    of 4 bytes.

    The maximum row length in a row cache is 65535 bytes.

    When the name of the cache matches the name of an existing
    logical area, ADD CACHE will calculate ROW LENGTH from the size
    of the table row, or the size of the index node (for SORTED
    RANKED, or UNIQUE SORTED indices). This cache is known as a
    logical area cache.

3.11  –  ROW_REPLACEMENT

    Syntax options:

    ROW REPLACEMENT IS ENABLED | ROW REPLACEMENT IS DISABLED

    Specifies whether or not Oracle Rdb replaces rows in the cache.
    When ROW REPLACEMENT IS ENABLED, rows are replaced when the
    row cache becomes full. When ROW REPLACEMENT IS DISABLED, rows
    are not replaced when the row cache is full. The type of row
    replacement policy depends upon the application requirements for
    each cache.

    The default is ENABLED.

3.12  –  ROW_SNAPSHOT_IS_DISABLED

    Disables storing snapshot copies of rows within the cache.

3.13  –  ROW_SNAPSHOT_IS_ENABLED

    The ROW SNAPSHOT IS ENABLED (CACHE SIZE IS n ROWS) option enables
    storage of snapshot copies of rows within the cache and specifies
    the number of snapshot "slots" to allocate for the cache.

    The default for new caches, and existing caches is to have this
    feature disabled.

    If you do not specify the CACHE SIZE clause for the ROW SNAPSHOT
    IS ENABLED option, Oracle Rdb creates a cache that can contain up
    to 1000 snapshot rows.

3.14  –  SHARED_MEMORY

    Syntax options:

    SHARED MEMORY IS SYSTEM | SHARED MEMORY IS PROCESS

    Determines whether cache global sections are created in system
    space or process space. The default is SHARED MEMORY IS PROCESS.

    When you use cache global sections created in the process
    space, you and other users share physical memory and the OpenVMS
    operating system maps a row cache to a private address space for
    each user. As a result, all users are limited by the free virtual
    address range and each use a percentage of memory in overhead. If
    many users are accessing the database, the overhead can be high.

    When many users are accessing the database, consider using the
    SHARED MEMORY IS SYSTEM clause. This gives users more physical
    memory because they share the system space of memory and there is
    none of the overhead associated with the process space of memory.

3.15  –  SHARED_MEMORY_IS_PROCESS_RESIDENT

    The SHARED MEMORY clause determines whether database root global
    sections (including global buffers when enabled) or whether the
    cache global sections are created in system space or process
    space. The RESIDENT option extends the PROCESS option by making
    the global section memory resident.

4  –  Examples

    Example 1: Creating a row cache

    This example creates a database, creates a row cache, and assigns
    the row cache to a storage area.

    SQL> CREATE DATABASE FILENAME test_db
    cont> ROW CACHE IS ENABLED
    cont> CREATE CACHE test1
    cont>    CACHE SIZE IS 100 ROWS
    cont> CREATE STORAGE AREA area1
    cont>    CACHE USING test1;
    SQL> SHOW CACHE
    Cache Objects in database with filename test_db
            TEST1
    SQL> SHOW CACHE test1

         TEST1
            Cache Size:            100 rows
            Row Length:            256 bytes
            Row Replacement:       Enabled
            Shared Memory:         Process
            Large Memory:          Disabled
            Window Count:          100
            Reserved Rows:         20
            Sweep Rows:            3000
            No Sweep Thresholds
            Allocation:            100 blocks
            Extent:                100 blocks
    SQL> SHOW STORAGE AREA area1

         AREA1
             Access is:      Read write
             Page Format:    Uniform
             Page Size:      2 blocks
             Area File:      SQL_USER1:[DAY.V70]AREA1.RDA;1
             Area Allocation:          402 pages
             Area Extent Minimum:      99 pages
             Area Extent Maximum:      9999 pages
             Area Extent Percent:      20 percent
             Snapshot File:  SQL_USER1:[DAY.V70]AREA1.SNP;1
             Snapshot Allocation:      100 pages
             Snapshot Extent Minimum:  99 pages
             Snapshot Extent Maximum:  9999 pages
             Snapshot Extent Percent:  20 percent
             Extent :       Enabled
             Locking is Row Level
             Using Cache TEST1
    No database objects use Storage Area AREA1

    Example 2: Creating and modifying various caches

    1  The cache named CUSTOMER_STATUS is created with a row length
       of 577 bytes with 88000 cache "slots" for storage of live
       database rows and 7000 slots for storage of snapshot copies of
       rows. This cache is also configured to be memory- resident.

    2  The cache named MACHINE_FLOW_IDX_1 is created with a row
       length of 430 bytes with 5000 cache slots for storage of live
       database rows and 12000 slots for storage of snapshot copies
       of rows. This cache is set to disallow replacement of rows in
       the cache.

    3  The cache named SALES_CALLS is created with a row length of
       160 bytes with 3000 cache "slots" for storage of live database
       rows and, using the default because an explicit count was not
       specified, 1000 slots for storage of snapshot copies of rows.

    4  The cache named CUSTOMER_ORDER does not specify "ROW SNAPSHOT
       IS ENABLED" so no snapshot row copies will be stored in this
       cache.

    5  The cache named "SALES" is modified to disable storage of
       snapshot rows in cache.

    6  The cache named "CLEARING" is modified to enable storage
       of snapshot rows in the cache with a snapshot cache size of
       12,345 rows.

    SQL> ALTER DATABASE FILENAME HDB_DB
    1 ADD CACHE CUSTOMER_STATUS
                    ROW LENGTH IS 577 BYTES
                    CACHE SIZE IS 88000 ROWS
                    ROW SNAPSHOT IS ENABLED (CACHE SIZE IS 7000 ROWS)
                    SHARED MEMORY IS PROCESS RESIDENT

    2 ADD CACHE MACHINE_FLOW_IDX_1
                    ROW LENGTH IS 430 BYTES
                    CACHE SIZE IS 5000 ROWS
                    ROW REPLACEMENT IS DISABLED
                    ROW SNAPSHOT IS ENABLED (CACHE SIZE IS 12000 ROWS)

    3 ADD CACHE SALES_CALLS
                    ROW LENGTH IS 160 BYTES
                    CACHE SIZE IS 3000 ROWS
                    ROW SNAPSHOT IS ENABLED

    4 ADD CACHE CUSTOMER_ORDER
                    ROW LENGTH IS 760 BYTES
                    CACHE SIZE IS 9000 ROWS
                    CHECKPOINT UPDATED ROWS TO DATABASE

    5 ALTER CACHE SALES
                    ROW SNAPSHOT IS DISABLED

    6 ALTER CACHE CLEARING
                    ROW SNAPSHOT IS ENABLED (CACHE SIZE IS 12345 ROWS);
    SQL> SHOW CACHE CUSTOMER_STATUS

         CUSTOMER_STATUS
            Cache Size:            88000 rows
            Row Length:            580 bytes
            Row Replacement:       Enabled
            Shared Memory:         Process Resident
            Large Memory:          Disabled
            Window Count:          100
            Working Set Count:     10
            Reserved Rows:         20
            Allocation:            100 blocks
            Extent:                100 blocks
            Snapshot in Cache:     Enabled
            Snapshot Cache Size:   7000 rows

    SQL> SHOW CACHE MACHINE_FLOW_IDX_1

         MACHINE_FLOW_IDX_1
            Cache Size:            5000 rows
            Row Length:            432 bytes
            Row Replacement:       Disabled
            Shared Memory:         Process
            Large Memory:          Disabled
            Window Count:          100
            Working Set Count:     10
            Reserved Rows:         20
            Allocation:            100 blocks
            Extent:                100 blocks
            Snapshot in Cache:     Enabled
            Snapshot Cache Size:   12000 rows

    SQL> SHOW CACHE SALES_CALLS

         SALES_CALLS
            Cache Size:            3000 rows
            Row Length:            160 bytes
            Row Replacement:       Enabled
            Shared Memory:         Process
            Large Memory:          Disabled
            Window Count:          100
            Working Set Count:     10
            Reserved Rows:         20
            Allocation:            100 blocks
            Extent:                100 blocks
            Snapshot in Cache:     Enabled
            Snapshot Cache Size:   1000 rows

    SQL> SHOW CACHE CUSTOMER_ORDER

         CUSTOMER_ORDER
            Cache Size:            9000 rows
            Row Length:            760 bytes
            Row Replacement:       Enabled
            Shared Memory:         Process
            Large Memory:          Disabled
            Window Count:          100
            Working Set Count:     10
            Reserved Rows:         20
            Allocation:            100 blocks
            Extent:                100 blocks
            Row cache: checkpoint updated rows to database
Close Help