I read that I can have different isolation levels per connection and in the server.
The default isolation level is REPEATABLE-READ.
So if I have a transaction that issues a SERIALIZED
to the client connection, how does it interact with other transactions from other client connections? Do they all end up being serialized? From set transaction seems not:
With the SESSION keyword, the statement sets the default transaction
level for all subsequent transactions performed within the current
session.
But this seems useless to me. I mean if I set serialized to a client connection then I would want all currently running transactions to be sequential, right? Otherwise what's the point?
Best Answer
Every connection will work with its own transaction isolation level. Setting SERIALIZABLE level for one connection doesn't change isolation level of other connections (new or existing).
However interactions between transactions performed on different isolation level are quite complicated. Everything depends on many factors:
If you have to work with SERIALIZABLE level for some connections in your app you should know answers for above questions.
For example. If you have database with pessimistics locking (e.g. IBM DB2) and you have long running transactions with SERIALIZABLE level it is very probable that your system would hang (or slow down).