有2个数据库,数据量10万和100万级的,已填充好.
现在问题时数据库服务启动后首次用sql语句或存储过程进行全文查询,或者长时间没有全文查询(其他一般查询有),
速度就会很慢,耗时至少10秒以上,一般都在30秒左右,但是有了一次查询再进行第二次查询时耗时都不会超过一秒(同样的查询语句).
在两台机器上试过,一台服务器,本机I3+4G都是这样,本机状况稍好一些但是也存在这个问题
不知道有没有人碰过这样的问题

解决方案 »

  1.   

    这个是缓存问题,你服务器内存多少,设置是否合理,一般有全文检索的服务器,sql server不要占用太多内存,需要给操作系统和全文服务流些内存
      

  2.   

    晕,你这么对待服务器,还开虚拟机总是首次慢说明缓存不能长久保存,也就是内存不足你内存空闲多说明没有好好利用内存,你的服务器是否32位的,启动选项是不是没有增加/PAE,你的
    SQL server的最大内存是否没有设置,是不是没有勾选AWE?
      

  3.   

    吃了个饭
    虚拟机是自己机器上开的不是服务器,服务器是64位 WIN2008R2 Enterprise,最大内存已设
      

  4.   

    服务器上的内存使用量在95%左右,6G内存,处理器Intel Xeon E5620 2.4G 2处理器
      

  5.   

    那要搞明白,
    1.第一次执行db都干了些什么:编译查询(并存于内存),执行,把数据从硬盘加载进缓存,显示数据。
    2.在第一次之后你接着执行时,只要做执行,把数据从内存中读出来,显示数据。
    3.很久不用,db又干了什么:把你的查询计划和缓存的数据清理掉了。
    你看是不是这个理?
      

  6.   

    理是这么个理,但是没有用全文检索语句查询的速度也并不会因为长时间空闲而导致再次查询时速度明显减慢的情况;而且全文检索就是解决用like模糊查询时速度慢的问题,数据库设计人员也肯定应该有考虑这个问题,不应该把全文查询从内存中清掉了吧?
      

  7.   

    全文检索不仅是为了解决LIKE查询问题,更是为了解决lob字段查询而生。如果LOB内容一直存在于内存中,那得要多少内存。当内存非常充裕时,会不清除缓存数据,但是有内存压力时必然会清除,不管他是全文查询还是正常查询。