none
master数据库 transactions/sec 很高是什么原因 RRS feed

  • 问题

  • 压力测试,一个业务数据库,一压上来,业务数据库的transactions/sec一千多,master数据库也1千多,而且master数据库只多不少,压力程序没有任何调用master数据的语句。环境也是干净的,只有压力程序在调用 sp_lock也有什么master的进程。为什么 master事务会那么高?
    2009年11月5日 8:58

答案

全部回复

  • Trace it in profiler to find out why.
    2009年11月5日 15:08
  • 但是profiler 没有记录到频繁master的事务记录,基本上没有,都是业务数据库的事务。
    2009年11月6日 1:48
  • 压力测试,一个业务数据库,一压上来,业务数据库的transactions/sec一千多,master数据库也1千多,而且master数据库只多不少,压力程序没有任何调用master数据的语句。环境也是干净的,只有压力程序在调用 sp_lock也有什么master的进程。为什么 master事务会那么高?

    首先理解Master数据库的作用:

    MSDN:master
    数据库记录 SQL Server 系统的所有系统级信息。这包括实例范围的元数据(例如登录帐户)、端点、链接服务器和系统配置设置。此外,master 数据库还记录了所有其他数据库的存在、数据库文件的位置以及 SQL Server 的初始化信息。

    问题原因:
    1. 检查是不是有大量的业务数据库内置对象的变更(你的问题基本上不属于这一类)
    2. 检查是不是大量的使用了 SP_ 开头的存储过程(当SQL执行SP时如果SP名称前3位是 SP_ 的话,会优先到Master中进行所有的系统存储过程检索,如果没有找到才会回到业务数据库检查用户SP),检索的过程中会导致一定的共享锁,也就说明了为什么在完全没有使用Master的时候也会出现 Master 的锁。(通常不推荐用户存储过程名使用 SP_ 开头,甚至于在企业应用编码规范中明确指出禁止使用此字符来作为SP的前缀)
    • 已建议为答案 JACKY TANG 2009年11月6日 3:17
    • 取消建议作为答案 zhangjiong81 2009年11月6日 6:07
    2009年11月6日 3:17
  • How did you set trace in profiler?
    2009年11月6日 3:56
  • 有遇到过这样的情况, 一般重启 server 就好了
    2009年11月6日 4:02
  • 您好,谢谢你的回答

    我的存储过程是P_为前缀的
    =======================

    1.另外我试了一下,即使把存储过程里面的内容全部注释掉,就是一个空的存储过程,业务数据库的transactions/sec降到0,而master数据库的这个值依然没有降下来。

    2009年11月6日 6:03
  • 您好,谢谢你的回答

    默认的 tuning 模板,什么都没有改
    =======================

    1.另外我试了一下,即使把存储过程里面的内容全部注释掉,就是一个空的存储过程,业务数据库的transactions/sec降到0,而master数据库的这个值依然没有降下来。
    2009年11月6日 6:04
  • 您好,谢谢你的回答

    重启了服务器,再压的时候情况依旧
    =======================

    1.另外我试了一下,即使把存储过程里面的内容全部注释掉,就是一个空的存储过程,业务数据库的transactions/sec降到0,而master数据库的这个值依然没有降下来。
    2009年11月6日 6:05
  • 这个问题。我找人问到了。master的事务数是 logins引起的。

    2009年11月6日 7:01
  • Why so many logins then?
    2009年11月6日 14:20