Browse Prior Art Database

Original Publication Date: 2001-Jun-16
Included in the Prior Art Database: 2003-Jun-20

Publishing Venue



Disclosed is a method for increasing concurrency in a distributed database environment where authorizations are cached at each database node. This method increases concurrency be eliminating artificial cache deadlocks that may occur when authorizations are cached, but would not occur in a non-cached environment. In a distributed (MPP Massively Parallel Processor) database environment, it is desirable to cache authorizations at local/coordinator nodes to increase performance and to reduce the need to communicate with the catalog node. In an environment where authorizations are not cached, each time an application is required to check authorities/privileges, it is necessary to perform a table or index lookup at the catalog node. This results in the catalog node becoming a source of contention. Caching authorizations in a distributed cache allows applications to avoid contacting the catalog node and performing a table lookup to find authorizations. Instead, the applications can access cached authorizations at the local node (i.e. the node where the database connection exists). Caching database authorities in a distributed (MPP) environment poses the following problem: If authorizations are requested on a non-catalog node and a cache entry for these authorizations does not exist at this node, it is desirable to have only one application go to the catalog node to retrieve these authorizations. If multiple agents/applications are allowed to retrieve the same authorizations from the catalog node, there would be an increase of unnecessary inter node communication (i.e. multiple requests for the same information). In order to prevent multiple applications from loading the same cache entry, an exclusive serialization lock (loading lock) is used. Using an exclusive loading lock on a cache entry may cause deadlock scenarios in the catalog cache that would not occur if the same catalog table was not cached. Consider the following example: