In recent years,the number of cores on a chip has been growing
exponentially, enabling an ever-increasing number of processes to
execute in parallel. Having been developed originally for single-core processors,
database (DB) management systems (DBMSs) running on multicore
processors suffer from cache conflicts as the number of concurrently
executing DB processes (DBPs) increases. In this paper, we propose
CARIC-DA, middleware for achieving higher performance in DBMSs on
multicore processors by reducing cache misses with a new cache-conscious
dispatcher for concurrent queries. CARIC-DA logically range-partitions
the data set into multiple subsets. This enables different processor cores
to access different subsets by ensuring that different DBPs are pinned
to different cores and by dispatching queries to DBPs according to the
data partitioning information. In this way, CARIC-DA is expected to
achieve better performance via a higher cache hit rate for each core’s
private cache. It can also balance the loads between cores by changing
the range of each subset. Note that CARIC-DA is pure middleware,
which avoids any modification to existing operating systems (OSs) and
DBMSs, thereby making it more practical. We implemented a prototype
that uses unmodified existing Linux and PostgreSQL environments. The
performance evaluation against benchmarks revealed that CARIC-DA
achieved improved cache hit rates and higher performance.