Transaction-processing systems usually allow multiple transactions to run concurrently.
Allowing multiple transactions to update data concurrently causes
several complications with consistency of the data, as we saw earlier. Ensuring
consistency in spite of concurrent execution of transactions requires extra work;
it is far easier to insist that transactions run serially—that is, one at a time, each
starting only after the previous one has completed. However, there are two good
reasons for allowing concurrency: