A transaction has ACID properties, where "I" stands for isolation:
Transactions are often executed concurrently (e.g., multiple transactions reading and writing to a table at the same time). Isolation ensures that concurrent execution of transactions leaves the database in the same state that would have been obtained if the transactions were executed sequentially. Isolation is the main goal of concurrency control; depending on the method used, the effects of an incomplete transaction might not even be visible to other transactions.
Is it correct that isolation is about concurrent execution of multiple transactions by different processes/threads? (e.g. process/thread P1 executes transaction T1, and P2 executes T2, concurrently.)
Does isolation cover concurrent execution of the same transaction by multiple processes/threads? (e.g. processes/threads P1 and P2 execute the same transaction T concurrently.)
If yes, does isolation require that concurrent execution of the same transaction by multiple processes/threads should have the same effect as only one process/thread is allowed to execute the transaction at a time (i.e. the transaction is treated as a critical section with requirement of mutual exclusive access?)
I am unsure about the relation and difference between transaction and critical section, after reading book *Operating System Concepts" which says
a transactional memory system can identify which statements in atomic blocks can be executed concurrently, such as concurrent read access to a shared variable. It is, of course, possible for a programmer to identify these situations and use reader–writer locks, but the task becomes increasingly difficult as the number of threads within an application grows.
Does the quote refer to the isolation property of a transaction?
Thanks.