【IT168 技术文档】
5. 优化SQL Server 2005的全文检索
对于一个企业级的全文检索系统,尤其是笔者上文所设计的多数据中心、异构数据源的全文检索系统,如何在运维过程不断优化系统的执行效率也是很有挑战的工作。由于全文检索过程中不仅涉及大量的IO操作,也存在执行过程中频繁的CPU计算工作,因此这里笔者提供几个关键指标,用于粗略判断系统的关键性能瓶颈。
5.1 CPU
如果由 MSFTESQL 服务和 SQL Server 所占用的 CPU 使用率接近百分之百,则 CPU 成为瓶颈。
Catalog | Counter |
Processor | % Processor Time % Privileged Time |
System | Processor Queue Length Context Switches/sec |
表5:判断CPU瓶颈的主要指标
下面对于一台单纯进行全文检索的服务器而言,是一个典型的内存瓶颈结果。
图10:CPU成为系统瓶颈
根据全文检索的应用经验,处理上主要可以采取如下办法:
(1)减少应用的并发。
(2)对于大量用户频繁访问的固定内容的全文检索,可以通过Reporting Service把结果内容固定下来,减少用户普遍关心但是结果固定的全文检索查询。
(3)通过SQL Server Cluster,借助Scale out或者Scale up分担负载。
5.2 内存
由于全文检索的过程需要在内容临时存放大量的中间结果,因此内存也很容易成为应用的瓶颈。
Catalog | Counter |
Memory | Available MBytes Page Reads/sec Pages/sec Cache Bytes Cache Faults/sec |
Server | Pool Nonpaged Failures Pool Nonpaged Peak |
Cache | MDL Read Hits % |
表6:判断内存瓶颈的主要指标
下面对于一台单纯进行全文检索的服务器而言,是一个典型的内存瓶颈结果。
图11:内存成为系统瓶颈
根据全文检索的应用经验,处理上主要可以采取如下办法:
(1)减少应用的并发。
(2)配置SQL Job,把长时间挂起或者工作时间没有必要的过大查询的session清理。
(3)优化检索语句。
(4)尽量精确限制条件,可能的话尽量在尺寸较小的列上定义全文检索索引。
(5)适当增加内存。
(6)根据用户需要,使用TOP_<N>_BY_RANK,而不是把所有符合条件的内容全部提取。