我使用vb连接本机的SQL Server 2005
vb的程序是:
Option ExplicitDim rst(10) As New ADODB.RecordsetDim conn As New ADODB.Connection'按钮单击事件
Private Sub Command1_Click()
  Static j As Integer
  rst(j).Open "select * from users", conn, 1,3
  j=j+1
End Sub
Private Sub Form_Load()
  conn.Open "Driver={SQL Server};Server=.;Database=Demo;Uid=sa;Pwd=;"
End Sub我在SQL Server 服务器属性中把"最大服务器内存"设置为200mb
当我运行上面的代码后连续点击按钮,刚开始点击几次后查看“任务管理器”中"Sqlservr.exe"的内存使用情况,发现内存增加的很快,可我继续点击,内存应该得跟着增加才对,可我后面几次点击,内存没有继续增加,这是为什么呢?

解决方案 »

  1.   

    SQL Server的内存使用不是线性增长的(如果真这样那岂不是很容易崩溃?),当连续点击Command1时,其实已经不需要再从磁盘读数据页到内存了.
      

  2.   

    缓存了.
    后面同样的sql直接在缓存里就有了.
      

  3.   

    大家说是缓存,这应该没有错,但我发现一个现象就是我如果不把“SQL Server 服务器属性中最大服务器内存值设置为200mb”,我保持原来的值2147483647MB,这个值就是原来服务器的默认值,我的操作和原来一样,继续点击按钮,这个时候任务管理器”中"Sqlservr.exe"的内存使用情况就一直增加,点一次增加一次,这是为什么呢?
      

  4.   

    请执行 sp_spaceused users, 把结果贴出来看看?每次内存增长的应该刚好是结果里的reserved-unused吗?
      

  5.   

    sp_spaceused users运行的结果:
    name    rows       reserved   data      index_size  unused
    users   1000016    36680KB   36480KB    144 KB      56 KBsqlservr.exe内存情况我点击第一次前是53192kb,点击后是113272kb,点击第二次前是113272kb,点击第二次后134444kb,点击第三次后是155680kb