视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001 知道1 知道21 知道41 知道61 知道81 知道101 知道121 知道141 知道161 知道181 知道201 知道221 知道241 知道261 知道281
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
性能问题损伤SQLServer2008的全文检索
2020-11-09 15:58:10 责编:小采
文档

首先,一些不熟悉 全文 检索 背景的人。一般来说,计算机科学术语 全文 检索 只是意味着你在文档中搜索所有的文本。对付 全文 检索 的另一种选择是查找元数据,例如标题和关键字。 对SQL Server而言, 全文 检索 提供了存储在关系数据库或者是文件系统上的文

首先,一些不熟悉全文检索背景的人。一般来说,计算机科学术语全文检索只是意味着你在文档中搜索所有的文本。对付全文检索的另一种选择是查找元数据,例如标题和关键字。
对SQL Server而言,全文检索提供了存储在关系数据库或者是文件系统上的文本的高级搜索能力。搜索并不局限于字符串,应用程序所能理解的例如词干分析。这使得搜索“swim”,也返回“swims”, “swimming”,和“swam”。 它也可以支持权重搜索,即某些词比其他的词更重要,并可以搜索两个彼此相邻的词语。根据搜索条件的结果可以进行一个排名。
之前版本的全文检索是一个外部服务,和SQL Server并排运行的服务。这样设计,参与索引的表和列的数据不得不从SQL Server运送到全文检索服务。全文检索编目不能与其他的数据库一起备份,而且两个服务不能轻松的共享内存和CPU资源。
为了处理这些和其他的问题,SQL Server 2008把全文检索移到数据库中。现在SQL Server自身可以动态管理服务器资源,为服务自动管理改变内存和CPU资源配额。不幸的是,开发人员遇到了这种设计的一些意外结果。
他们依然会碰到的特定问题是事务。在一个事务性的数据库中,SQL Server要时刻遵守ACID的规则。这意味着在搜索的时候行、页或甚至整个表都被锁定。通常情况下不会太坏,但是Brent Ozar解释说,错误的搜索会让事情变得复杂。
如果你在修正版(Revisions)上进行全文检索并且包含一些常见的关键字,像SQL滞留,则需要匹配数以万计的记录。当我们查看一下查询计划的时候,我们看到有50-100k的读操作。在表里面做这样的事情,也会获得沉重的表插入,事务性的灾难。
Jeff Attwodd继续说道,
我们的stackoverflow.com很大程度上依赖于全文检索, 在SQL Server 2005下面工作得很好。不幸的是在SQL Server 2008下的情况则不同。
Brent正在和SQL Server团队跟进这件事,他们用我们的数据库拷贝进行测试。[…] 根据目前为止出奇的差的SQL Server 2008全文检索和明显的体系结构更改,我对SQL团队能够为我们做些什么感到悲观。
他们所指的网站StackOverflow将计划不再长期使用全文索引。他们已经规划出迁移到竞争的搜索引擎Lucene.Net上。但是那些计划继续使用全文检索的人,在 SQL Server 2005升级到2008以后需要在这方面进行彻底的测试。

下载本文
显示全文
专题