We have proposed a new correctness criterion for the concurrent execution of a set of transactions. Roughly speaking, a schedule is semantically correct if the execution of each transaction in the schedule causes the result described in its specification. Semantic correctness is weaker than the serializability correctness criterion: since we take the semantics of the transactions into account we can afford to allow certain interleavings that cannot be allowed in a serializable schedule. Using transaction semantics we decompose transactions into atomic, isolated steps and allow steps of concurrent transactions to be interleaved at run time. Not all interleavings are consistent with maintaining transaction specifications, so a new concurrency control is required to restrict step interleaving. We call this control an Assertional Concurrency Control (ACC). We have implemented an ACC in the Ingres database system (provided to us by Computer Associates International) and tested its performance using benchmark transactions. We have demonstrated significant performance improvement when the load is heavy and the transaction mix contains long running transactions and/or the database has hotspots. A paper describing this work can be found here.