Many applications, such as e-commerce, rou¬tinely use copies of data that are not in sync with the database due to heuristic caching strategies used to enhance perform¬ance. We study concurrency control for a transactional model that allows update transactions to read out-of-date copies. Each read operation carries a “fresh¬ness constraint” that specifies how fresh a copy must be in order to be read. We offer a defini¬tion of correctness for this model and present algorithms to ensure several of the most interesting fresh¬ness constraints. We outline a serializability-theoretic correctness proof and present the results of a detailed performance study. This is an extended version of a paper with the same title that appeared in SIGMOD 2006.