Mirroring and the Log File

  • 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.

  • 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

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • 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?

  • 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

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • Thank you.

  • 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