  This paper presents a concurrency control mechanism that does not follow a
'one concurrency control mechanism fits all needs' strategy. With the presented
mechanism a transaction runs under several concurrency control mechanisms and
the appropriate one is chosen based on the accessed data. For this purpose, the
data is divided into four classes based on its access type and usage
(semantics). Class $O$ (the optimistic class) implements a first-committer-wins
strategy, class $R$ (the reconciliation class) implements a
first-n-committers-win strategy, class $P$ (the pessimistic class) implements a
first-reader-wins strategy, and class $E$ (the escrow class) implements a
first-n-readers-win strategy. Accordingly, the model is called \PeFS. The
selected concurrency control mechanism may be automatically adapted at run-time
according to the current load or a known usage profile. This run-time
adaptation allows \Pe to balance the commit rate and the response time even
under changing conditions. \Pe outperforms the Snapshot Isolation concurrency
control in terms of response time by a factor of approximately 4.5 under heavy
transactional load (4000 concurrent transactions). As consequence, the degree
of concurrency is 3.2 times higher.
