none
关于性能计数器的Memory\Pages/sec 和MSSQLSERVER\Buffer Manager\page Reads\sec和MSSQLSERVER\Buffer Manager\page Wirte\sec之间的关系,有图 RRS feed

  • 问题

  • 我所理解的是Memory\Pages/sec是整个windows的pages/sec信息,应该是包括了sqlserver的MSSQLSERVER\Buffer Manager\page Reads\sec和MSSQLSERVER\Buffer Manager\page Wirte\sec,其中后者只是前者的一部分

    但是我在验证的时候,

    只有一个数据库服务的机器上,没有任何其他应用,对数据库进行一个大的查询操作,收集这三个性能计数器之间值

    发现后者远远大于前者,如截图,这两者之间的关系怎么计算?

    如果我停止查询,发现Memory\Pages/sec和MSSQLSERVER\Buffer Manager\page Reads\sec都接近于0,也就是说,Memory\Pages/sec的增长肯定是跟数据库查询有关,也就是Memory\Pages/sec受MSSQLSERVER\Buffer Manager\page Reads\sec的影响

    但是数据又呈现严重的不一致行,怎么解释?

    谢谢各路大神

    2016年5月21日 12:10

答案

  • 1.操作系统的page跟数据库的page大小不相同,操作系统的page4KB到2MB(64bit),默认4KB,数据库的page是8KB;

    2.两者的概念不一样,所以没有一个比例关系,但是,当buffer page reads\sec增加,意味着数据库会把更多的页面放到内存中,占用操作系统的内存,会导致操作系统给其他应用或者自身的内存不足,因此会增加访问磁盘的次数,也就会导致Memory Pages/sec 提高;

    Memory Pages/sec counter:操作系统从磁盘读取|写入的页面数量
    Pages/sec is the number of pages read from the disk or written to the disk to resolve memory references to pages that were not in memory at the time of the reference.

    buffer page reads\sec:sql server每秒从内存中读取页面的数量


    chenl



    • 已编辑 i6first 2016年5月23日 10:32
    • 已标记为答案 X_PICK 2016年9月29日 2:13
    2016年5月23日 10:30

全部回复

  • They are not related in fact, sql buffer page reads/writes is different from OS memory paging.
    2016年5月21日 16:47
  • They are not related in fact, sql buffer page reads/writes is different from OS memory paging.

    没有包含关系吗?我测试来看,

    平静的操作系统下,如果Sql Server没有任何负载,操作系统的Memory\Pages/sec几乎是0,

    如果给Sql Server加压,比如做一个大批量的查询之类的,Memory\Pages/sec也会伴随着有一个明显的提升

    关系是肯定有的,但是我无法确定两者是一个什么样的关系,怎么换算。

    2016年5月22日 1:59
  • How much memory does the server have? How much did you allocate to sql? Dedicated sql server shouldn't have much paging if configured properly.
    2016年5月22日 3:01
  • 我就是在本机测试的,本机仅仅随机启动了一个SQLSERVER数据库服务,

    待机器启动完成之后,处于平静状态下

    然后观察Memory\Pages/sec以及sqlserver的MSSQLSERVER\Buffer Manager\page Reads\sec和MSSQLSERVER\Buffer Manager\page Wirte\sec

    没有进行任何操作的时候,这三者都基本上为0,好吧,就不说MSSQLSERVER\Buffer Manager\page Wirte\sec这个了

    只说Memory\Pages/sec和MSSQLSERVER\Buffer Manager\page Reads\sec吧

    你自己在本机观察一下就能发现

    然后我开始对一个大表进行查询,模拟一个较大的IO操作,Memory\Pages/sec和MSSQLSERVER\Buffer Manager\page Reads\sec随即开始明显的上升,

    至少可以证明,这两者不是没有关系的,

    但是,Memory\Pages/sec计数器上观测到的值远远没有MSSQLSERVER\Buffer Manager\page Reads\sec这个值大就是截图了

    所以,我的问题就是想知道Memory\Pages/sec和MSSQLSERVER\Buffer Manager\page Reads\sec+MSSQLSERVER\Buffer Manager\page Writes\sec之间的关系。

    我觉得不可能是各自独立的,Memory\Pages/sec只负责操作系统的IO,而MSSQLSERVER\Buffer Manager\page Reads\sec+MSSQLSERVER\Buffer Manager\page Writes\sec是sqlserter的IO

    从测试看,Memory\Pages/sec是肯定受sqlserver IO影响的。但是不明确他们之间的关系

    2016年5月22日 12:28
  • All depends on amount of memory on the machine and how you configure sql as I asked above.
    2016年5月22日 17:25
  • 同一个机器上,当然不能说完全没关系。但是至少没有直接的关系。

    想不想时已是想,不如不想都不想。

    2016年5月23日 7:46
    版主
  • 1.操作系统的page跟数据库的page大小不相同,操作系统的page4KB到2MB(64bit),默认4KB,数据库的page是8KB;

    2.两者的概念不一样,所以没有一个比例关系,但是,当buffer page reads\sec增加,意味着数据库会把更多的页面放到内存中,占用操作系统的内存,会导致操作系统给其他应用或者自身的内存不足,因此会增加访问磁盘的次数,也就会导致Memory Pages/sec 提高;

    Memory Pages/sec counter:操作系统从磁盘读取|写入的页面数量
    Pages/sec is the number of pages read from the disk or written to the disk to resolve memory references to pages that were not in memory at the time of the reference.

    buffer page reads\sec:sql server每秒从内存中读取页面的数量


    chenl



    • 已编辑 i6first 2016年5月23日 10:32
    • 已标记为答案 X_PICK 2016年9月29日 2:13
    2016年5月23日 10:30
  • 机器是12G内存的个人电脑,windows7系统,sqlserver 2014的版本,分配给Sqlserver的max server memory是4GB

    机器是上没有其他大的应用的,重启之后观察的,没有随机启动的应用

    2016年5月24日 1:11
  • 测试 系统计数器 page reads 注意不要 在本机开管理工具  我有过测试管理工具导致系统page reads  变化
    2016年5月24日 4:11