SQL Server 2005全文检索技术
2007-12-25 22:50
459 查看
5.3 磁盘IO
如果平均磁盘等待队列长度多于磁盘头数量的两倍,则磁盘成为瓶颈。主要的解决方法是创建独立于 SQL Server 数据库文件和日志的全文目录。将日志、数据库文件和全文目录分别放在不同的磁盘上。购买运行速度更快的磁盘和使用 RAID 也能帮助改善索引性能。
表7:判断磁盘IO瓶颈的主要指标
5.4 网络IO
由于上文设计中,很多的采用了基于链接服务器的查询,因此网络IO也可能成为系统的瓶颈。
表8:判断网络IO瓶颈的主要指标
根据全文检索的应用经验,处理上主要可以采取如下办法:
(1)采用磁盘换网络的方法,将异地数据多个节点间冗余的保存。
(2)把当前Session的多个请求打包,一次性的提交到同一远程数据库。
(3)配置SQL Job,把长时间挂起或者工作时间没有必要的过大查询的session清理。
(4)优化检索语句。
(5)尽量精确限制条件,减少反馈的数据量。
(6)根据用户需要,使用TOP_<N>_BY_RANK,而不是把所有符合条件的内容全部提取,减少反馈的数据量。
5.5 其他说明
此外,官方文档还提供了如下的建议:
(1)使用 ALTER INDEX REORGANIZE 对基表的索引进行碎片整理。
(2)使用 ALTER FULLTEXT CATALOG REORGANIZE 重新组织全文目录。请务必在性能测试之前执行此操作,因为它会导致该目录中全文索引的主合并。
(3)仅选择较小的列作为全文键列。即使支持 900 字节的列,我们也不建议您使用这么大的键列来创建全文索引。
(4)将多个 CONTAINS 谓词合并为一个 CONTAINS 谓词。在 SQL Server 中,您可以在 CONTAINS 查询中指定一个包含若干列的列表。
(5)如果只需要全文键或排名的信息,请分别使用 CONTAINSTABLE 或 FREETEXTTABLE,而不要使用 CONTAINS 或 FREETEXT。
(6)若要限制结果数并提高性能,请使用 FREETEXTTABLE 和 CONTAINSTABLE 语法的 TOP_N_BY_RANK 选项。如果您不是对可能查询到的所有信息都感兴趣,可使用此选项。
(7)检查全文查询计划以确保选择了适当的联接计划。若有必要,可使用一个联接提示或查询提示。如果全文查询中使用了参数,则该参数的第一时间值决定查询计划。可使用 OPTIMIZE FOR 查询提示来强制使用所需值编写查询。这有助于获得确定性查询和更好的性能。
如果平均磁盘等待队列长度多于磁盘头数量的两倍,则磁盘成为瓶颈。主要的解决方法是创建独立于 SQL Server 数据库文件和日志的全文目录。将日志、数据库文件和全文目录分别放在不同的磁盘上。购买运行速度更快的磁盘和使用 RAID 也能帮助改善索引性能。
Catalog | Counter |
PhysicalDisk | Avg. Disk Queue Length Avg. Disk Read Queue Length Avg. Disk Write Queue Length Avg. Disk sec/Read Avg. Disk sec/Transfer Disk Writes/sec |
5.4 网络IO
由于上文设计中,很多的采用了基于链接服务器的查询,因此网络IO也可能成为系统的瓶颈。
Catalog | Counter |
Network Interface | Bytes Total/sec Bytes Received/sec Bytes Sent/sec |
Server | Bytes Total/sec |
Protocol | Protocol_Object\Segments Received/sec Protocol_Object\Segments Sent/sec |
Processor | % Interrupt Time |
根据全文检索的应用经验,处理上主要可以采取如下办法:
(1)采用磁盘换网络的方法,将异地数据多个节点间冗余的保存。
(2)把当前Session的多个请求打包,一次性的提交到同一远程数据库。
(3)配置SQL Job,把长时间挂起或者工作时间没有必要的过大查询的session清理。
(4)优化检索语句。
(5)尽量精确限制条件,减少反馈的数据量。
(6)根据用户需要,使用TOP_<N>_BY_RANK,而不是把所有符合条件的内容全部提取,减少反馈的数据量。
5.5 其他说明
此外,官方文档还提供了如下的建议:
(1)使用 ALTER INDEX REORGANIZE 对基表的索引进行碎片整理。
(2)使用 ALTER FULLTEXT CATALOG REORGANIZE 重新组织全文目录。请务必在性能测试之前执行此操作,因为它会导致该目录中全文索引的主合并。
(3)仅选择较小的列作为全文键列。即使支持 900 字节的列,我们也不建议您使用这么大的键列来创建全文索引。
(4)将多个 CONTAINS 谓词合并为一个 CONTAINS 谓词。在 SQL Server 中,您可以在 CONTAINS 查询中指定一个包含若干列的列表。
(5)如果只需要全文键或排名的信息,请分别使用 CONTAINSTABLE 或 FREETEXTTABLE,而不要使用 CONTAINS 或 FREETEXT。
(6)若要限制结果数并提高性能,请使用 FREETEXTTABLE 和 CONTAINSTABLE 语法的 TOP_N_BY_RANK 选项。如果您不是对可能查询到的所有信息都感兴趣,可使用此选项。
(7)检查全文查询计划以确保选择了适当的联接计划。若有必要,可使用一个联接提示或查询提示。如果全文查询中使用了参数,则该参数的第一时间值决定查询计划。可使用 OPTIMIZE FOR 查询提示来强制使用所需值编写查询。这有助于获得确定性查询和更好的性能。
相关文章推荐
- SQL Server 2005全文检索技术在网站上的应用实录
- SQL Server 2005全文检索技术在网站上的应用实录 索引
- SQL Server 2005全文检索技术
- SQL Server 2005全文检索技术在网站上的应用实录(一)
- SQL Server 2005全文检索技术
- SQL Server 2005全文检索技术
- SQL Server 2005全文检索技术在网站上的应用实录(二)
- SQL Server 2005全文检索技术在网站上的应用实录
- SQL Server 2005全文检索技术
- SQL Server 2005全文检索技术
- SQL Server 2005全文检索技术在网站上的应用实录
- SQL Server 2005全文检索技术
- SQL Server 2005全文检索技术
- SQL Server 2005全文检索技术在网站上的应用实录
- SQL Server 2005全文检索技术
- SQL Server 2005全文检索技术
- SQL Server 2005全文检索技术
- SQL Server 2005全文检索技术
- 【ZT】SQL Server 2005全文检索技术在网站上的应用实录
- SQL Server 2005全文检索技术