Lock Mode:
https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms175519(v=sql.105)
Isolation Level:
https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms189122(v%3dsql.105)
Troubleshooter for replication
https://docs.microsoft.com/en-us/sql/relational-databases/replication/troubleshoot-tran-repl-errors?view=sql-server-2017
Dirty reads: read UNCOMMITED data from another transaction
Non-repeatable reads: read COMMITTED data from an UPDATE query from anouther transaction
Phantom reads: read COMMITTED data from an INSERT or DELETE query from another transaction
Benefits of different isolation levels READ_UNCOMMITTED prevents nothing. It’s the zero isolation level
READ_COMMITTED prevents just one, i.e. Dirty reads
REPEATABLE_READ prevents two anomalies: Dirty reads and Non-repeatable reads SERIALIZABLE prevents all three anomalies: Dirty reads, Non-repeatable reads and Phantom reads
In fact transaction time consumption is in the following rate:
SERIALIZABLE > REPEATABLE_READ > READ_COMMITTED > READ_UNCOMMITTED
So READ_UNCOMMITTED setting is the fastest. READ_COMMITTED is the default