  We prove that no fully transactional system can provide fast read
transactions (including read-only ones that are considered the most frequent in
practice). Specifically, to achieve fast read transactions, the system has to
give up support of transactions that write more than one object. We prove this
impossibility result for distributed storage systems that are causally
consistent, i.e., they do not require to ensure any strong form of consistency.
Therefore, our result holds also for any system that ensures a consistency
level stronger than causal consistency, e.g., strict serializability. The
impossibility result holds even for systems that store only two objects (and
support at least two servers and at least four clients). It also holds for
systems that are partially replicated. Our result justifies the design choices
of state-of-the-art distributed transactional systems and insists that system
designers should not put more effort to design fully-functional systems that
support both fast read transactions and ensure causal or any stronger form of
consistency.
