性能问题损伤SQL Server 2008的全文检索

php中文网
发布: 2016-06-07 15:07:29
原创
1600人浏览过

首先,一些不熟悉 全文 检索 背景的人。一般来说,计算机科学术语 全文 检索 只是意味着你在文档中搜索所有的文本。对付 全文 检索 的另一种选择是查找元数据,例如标题和关键字。 对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以后需要在这方面进行彻底的测试。

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号