Short version: I am trying to determine which is the best transaction isolation level for the SQL server in our premises.
Long version: I am extracting data from API calls and loading it into staging tables which then are incrementally loaded into destination tables. These destination tables are used in multiple ways, some of which are mentioned below:
Due to the large datasets, the issues I am facing are:
Given that:
What isolation level is suitable for this occasion? Or would it be better to set individual isolation levels through table hints?
Note1 : My employer and I would not mind if we had some dirty reads in the report refreshes as long as this means the reports refresh in a consequent manner and the tables can be used in other stored procedures (both read and update) without having to wait.
Note2 : The is_read_committed_snapshot_on is 0 in our SQL server.
READ COMMITTED with READ COMMITTED SNAPSHOT ISOLATION set for the database will enable readers to read without getting blocked by writers, prevent the writers from being blocked by the readers, and it doesn’t cause dirty reads.
So that’s the obvious first step.