写点什么

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

  • 2008-11-17
  • 本文字数:971 字

    阅读完需:约 3 分钟

首先,一些不熟悉全文检索背景的人。一般来说,计算机科学术语全文检索只是意味着你在文档中搜索所有的文本。对付全文检索的另一种选择是查找元数据,例如标题和关键字。

对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 以后需要在这方面进行彻底的测试。

查看英文原文: Performance Problems Mar SQL Server 2008 Full Text Search

2008-11-17 08:442746
用户头像

发布了 45 篇内容, 共 94186 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

Go 中如何使用结构体标签

baiyutang

golang 10月月更

在 pygame 中好好玩玩精灵,滚雪球学 Python 游戏番

梦想橡皮擦

10月月更

Apache APISIX 助力有赞云原生 PaaS 平台,实现全面微服务治理

API7.ai 技术团队

云原生 PaaS API网关 Apache APISIX

DeFi智能合约DAPP系统开发公司(现成)

2021年Android大厂面试分享,实战篇

android 程序员 移动开发

央行数字货币已落地,来的太快,机遇在哪?

CECBC

架构实战营-模块一

瓜子葫芦侠

「架构实战营」

第 22 章 -《Linux 一学就会》- 跳出循环-shift参数左移-函数的使用

学神来啦

Linux linux运维 linux云计算 linux一学就会

2021年Android春招面试经历,阿里秋招面试真题解析

android 程序员 移动开发

在线字符串长度计算,字符串统计工具

入门小站

工具

谈 C++17 里的 Chain of Responsibility 模式

hedzr

设计模式 Design Patterns 职责链模式 c++17 消息分发

解密诡异并发问题的幕后黑手:可见性问题

华为云开发者联盟

并发编程 线程 并发 可见性 单核CPU

Groovy动态添加方法和属性及Spock单测

FunTester

Java 动态 spock Groovy FunTester

阿里云边缘云ENS再升级 产业数字化落地向何方?

阿里云Edge Plus

Java8 Lambda表达式与Stream

风翱

Lambda 10月月更

Zookeeper 客户端错误:Packet len8854970 is out of range!

看山

zookeeper 10月月更

2020-2021蚂蚁金服Android面试真题解析,使用指南

android 程序员 移动开发

2021年大厂程序员进阶宝典,Android开发基础面试题

android 程序员 移动开发

Vue进阶(幺肆肆):(window,parent,opener,top).location.reload方法分析

No Silver Bullet

Vue 页面刷新 10月月更

全球6G专利独占4成,中国能否借此“制霸”元宇宙?

海比研究院

看了CopyOnWriteArrayList后自己实现了一个CopyOnWriteHashMap

root

Java 程序员 CopyOnWrite;

Prometheus 内置函数(一)

耳东@Erdong

Prometheus 10月月更

你真的会 Prometheus 查询吗?--PromQL 合集

耳东@Erdong

Prometheus PromQL 10月月更

Vue进阶(幺肆伍):Vue-elementUI实现操作栏位更多效果

No Silver Bullet

Vue 10月月更

Defi挖矿系统开发简介(现成案例)

Python代码阅读(第43篇):构造组合函数

Felix

Python 编程 Code Programing 阅读代码

REST API 设计:过滤、排序和分页

devpoint

REST API 10月月更

linux之xargs使用技巧

入门小站

Linux

2021年GitHub上那些优秀Android开源库总结,花2万块买的教程

android 程序员 移动开发

2021年Android程序员职业规划,Android开发技巧

android 程序员 移动开发

2021年Android高级面试题,成功入职字节跳动

android 程序员 移动开发

性能问题损伤SQL Server 2008的全文检索_.NET_Jonathan Allen_InfoQ精选文章