Serializable provides the highest transaction isolation. This level follows serial transaction execution, as if transactions had been executed one after another serially rather than concurrently. However, applications using this level must be prepared to retry transactions due to serialization failures.
When a transaction is on the serializable level, a SELECT query sees the data committed before the transaction began and never gets a view of either uncommitted data or changes committed during transaction execution by concurrent transactions. This is different from Read Committed in the sense that SELECT statement view a snapshot as of the start of the transaction not as of the start of the current query within the transaction.
Users shall keep in view that serializable transactions cannot modify rows changed by other transactions after the serializable transaction began.
Transaction isolation level does not affect a transaction's ability to see its own changes. Trnsactions can always see any changes made by it. For Example, a transaction consists of two UPDATE statements, but it succeeds as a single transaction only because the second UPDATE statement can see the results of the first.
