Question

We have crm-2015 on-prem, inplace and running and causing lot of deadlocks when someone tries to update anything in batch and same time if multiple users are reading those activities.

We are planning to turn on RCSI. I already did on DEV. server and tested and didn't get any locks, but I know that's not the right and only test.

My questions to all experts here is,

  1. Current size of DB is 40 GB, how hard is to turn that option now to ON.
  2. Once we turn on, can we turn back off using the same procedure stopping all the services making DB with one active transaction only and then execute ALTER DB command with set option to OFF.
  3. I also read that some code changes requires but in existing application what to inform our developers about changing the code, or it is best to do all operations which we are performing and see if anything breaks.
  4. last but I guess this most important once we turn on does tempdb database version store cleanup happens by itself or do we have to turn on, if we have to from where?

Please help.

Thanks.

Was it helpful?

Solution

It's critical that you do not enable RCSI on a database without the application vendor and your own developers certifying that they support it. The reason is that the behaviour of all your read queries will change, but not actually break in such a way that replaying your workload will detect. Read section 3 at https://www.brentozar.com/archive/2013/01/implementing-snapshot-or-read-committed-snapshot-isolation-in-sql-server-a-guide/.

To answer your specific questions:

  1. Switching on will be near-instantaneous (assuming only one DB connection).
  2. Yes, switching off is just as painless.
  3. See above.
  4. Cleanup happens by itself. Section 2 of the post above has some things to consider.
Licensed under: CC-BY-SA with attribution
Not affiliated with dba.stackexchange
scroll top