February 22, 2013 at 8:04 am
How does SQL get the logs that it will transfer to mirrored server? Does SQL "scrape" the log files for unsent logs? Are the unsent logs marked or stored seperately?
We have 30 databases that we want to mirror. Over the past few weeks, we have been mirroring these databases, all in asynchronous mode. One day, we mirrored the 10 remaining databases, some of the smallest and least transactional databases we have. At that point, we started seeing odd performance. We are getting timeouts from stored procedures that never timeout. We are experiencing higher than normal signal wait times; however, we are not experiencing higher than normal blocking. The only thing we have noticed is that before the signal wait times jump, our writelog waits increase. We are wondering if the log file is being locked while SQL is checking for logs that need to be sent to the mirror.
February 22, 2013 at 8:11 am
No to scraping the log file, no to separate locations.
The log records are written to the log file and sent to the mirror at the time they're created. No file reading, no file locks.
30 DBs is quite a lot to be mirroring on a single instance, that's going to be a fair bit of overhead on the principal.
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability
February 22, 2013 at 8:26 am
Thank you. Do you have any thoughts on why we would be seeing higher writelogs waits just before the signal waits get high, even though there is little to no blocking happening?
February 22, 2013 at 9:15 am
Check your IO subsystem? Could also be that CPU is being used elsewhere and the writing to the log file is getting delayed because the CPU is trying to process something else, probably the mirroring transmissions
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability
February 22, 2013 at 10:01 am
Thank you.
February 26, 2013 at 9:00 pm
If you had a large CPU workload in the first place the worker threads used by the additional mirroring sessions (not negotiable) could have pushed you beyond a tipping point on your instance. I agree, 30 databases is quite a few to mirror from one instance, but there are some things you can do to tune your instance besides adding more CPUs.
Mirroring a Large Number of Databases in a Single SQL Server Instance
There are no special teachers of virtue, because virtue is taught by the whole community.
--Plato
Viewing 6 posts - 1 through 5 (of 5 total)
You must be logged in to reply to this topic. Login to reply