Effective caching is an important method to reduce the latency and improve the throughput of I/O operations of a storage server. Although the file caching and database caching have been studied extensively during the past decades, it is not well understood how to effectively manage the cache memory of a storage server in a multi-tier storage infrastructure where there are three levels of caches: client cache, file or database cache and storage server cache. Our research studied the access patterns to storage server caches with several commercial workloads. Based on our analysis of access patterns, we derived a multi-queue algorithm for storage server caching. Our experimental results with simulation and implementation show that this algorithm is quite effective. For several OLTP database workloads, this method can achieve the same hit ratios as the commonly-used LRU algorithm with a twice large storage cache.
Minimizing I/O-related host overheads is a key to improve the performance of a network attached storage server. Recent studies have shown that storage I/Os have very high overheads on database servers, especially for OLTP workloads. To alleviate these overheads, we have studied the effects and design issues of using user-level communication to connect a database system with a storage server. Our results with OLTP workloads show that substantial enhancements are required to effectively use user level communication as a storage area network. We have developed a direct storage access API to fully exploit the benefits of user level communication. This method can reduce the I/O related overheads by 40% and improve the database transaction rate by 18% for OLTP workloads.