Browse Prior Art Database

Concurrent Access of the Table Object Location Linked List

IP.com Disclosure Number: IPCOM000104480D
Original Publication Date: 1993-Apr-01
Included in the Prior Art Database: 2005-Mar-19
Document File: 4 page(s) / 154K

Publishing Venue

IBM

Related People

Bullock, GR: AUTHOR [+5]

Abstract

Disclosed is a method of controlling concurrent access of the Table Object Location Linked List (TOLLL).

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 37% of the total text.

Concurrent Access of the Table Object Location Linked List

      Disclosed is a method of controlling concurrent access of the
Table Object Location Linked List (TOLLL).

      The OS/2* Database Manager creates the Object Relocation File
(ORF) during "Create Database".  This flat file contains an entry for
each table object in the database.  Each entry defines the location
of the object's physical files or parts.  The Database Manager reads
the contents of this file into memory during database initialization
and builds the set of linked lists that are collectively called the
Table Object Location Linked List or TOLLL.  Below is an illustration
of the TOLLL.

      The Database Manager accesses the TOLLL anytime a page of any
table object is read or written to or from disk.   The TOLLL contains
the information needed to physically locate the page on disk.
Therefore the TOLLL is accessed frequently and by multiple processes
concurrently.  Whenever a table object is created, deleted or
spanned, the TOLLL is updated.  These updates must be managed such
that processes reading the TOLLL are not adversely affected.

      The Database Manager uses several latches to manage access to
the TOLLL.  Latches are held exclusively (X-latched) or shared
(S-latched).  A process that holds a latch exclusively locks out any
other process from obtaining the latch.  A process that holds a latch
shared allows other processes to also hold the latch shared, but
locks out any process attempting to hold that latch exclusively.
Database Manager uses the following latches to control access to the
TOLLL:

1.  Table Object Location Linked List Latch - Defined in the Buffer
    Pool Services (BPS) Resident Linked List Control Block.  Used to
    latch the entire TOLLL structure while it is being written to the
    Object Relocation File (ORF) on disk.  If more than one process

    updated the ORF on disk at the same time, it would be difficult
    to recover the ORF if the system crashed during the updates.

2.  Hash Entry Latch - Defined in each Hash Table Entry.  This latch
    is used to serialize any updates to the Table Level Entries or
    Object Level Entries in that particular hash chain.  It is
    X-latched during any updates and is S-latched while entries in
    that hash chain are being read.

3.  Directory Name Array Latch - Defined in the BPS Resident Linked
    List Control Block.  This latch is used to serialize any updates
    to the Directory Name Array.  It is X-latched during any updates
    to entries and is S-latched while entries are being read.

      Since the index into the Directory Name Array is stored in the
Object Level Entry, the Directory Name Array is always updated prior
to a table level entry or object level entry being updated.
Therefore in all of the scenarios described below, the Directory Name
Array is always latched before a Hash Table Entry is latched.  All
...