我在cmd命令行里运行一个查询数据库的程序,开机第一次运行大概1秒多,第二次就1秒以下了,我用数据库命令清除了数据库缓存,但处理时间再也没有回到1秒以上(但也保持一个恒定的值,并没有越来越少,可见清理数据库缓存起效了),但为什么再也没有回到1秒以上,是因为处理器缓存吗?如果是应当如何清理处理器缓存?处理器缓存会存储程序连接数据库的信息?

解决方案 »

  1.   

    可能是某次恰巧碰到了锁并发、io或者cpu瓶颈之类的。
      

  2.   

    sqlserver的缓存机制是相当复杂的.请问下怎么清除的.
    还有memory buffer优化 大容量数据优化 还有数据先读等各种机制存在
    就拿存储过程来说第一次是预编译比较慢 第二次就快多了
      

  3.   

    DBCC FREEPROCCACHE; 
    DBCC DROPCLEANBUFFERS 
    DBCC FREESYSTEMCACHE ( 'ALL' ) 
    我用这三条命令清除数据库中对之前查询结果的缓存,如果不用,时间会越来越少。我也猜想是恰巧碰到CPU瓶颈,但是这样的说法没有说服力啊,有没高手详细解释下,呵呵。我是新手,在做多线程查询优化的测试。