在高插入量MSSQL数据库上做大规模全文搜索的思路

在高插入量MSSQL数据库上做大规模全文搜索的思路

我有一个相当大的 MSSQL 数据库,其中的表大约有 600 万行,每天插入约 5 万条数据。我开始遇到的一个问题是全文搜索,因为我要求表中的其中一列进行全文索引。

我最初使用的是 MSSQL 2008 R2 内置全文索引,与数据库引擎在同一主机上运行,​​但最近遇到了性能和可靠性问题。我经常看到 CPU 被固定在 100%,并假设这是全文索引在运行。我还看到我的前端在使用全文索引的搜索结果中返回不准确或不是最新的数据。

我有什么选择?我隐约知道可以在单独的服务器上运行全文处理,但我不确定如何实现,或者我是否愿意这样做。我也知道其他选项,例如 Lucene.NET,但不知道这是否是正确的方法。

我的要求只是考虑到数据库的插入率,使这个表的全文搜索尽可能保持最新。

人们会提出什么建议?

答案1

我有一个相当大的 MSSQL 数据库,其中的表大约有 600 万行,每天插入大约 50,000 条数据。

又名小而不繁忙。

我经常看到 CPU 占用率高达 100%,并认为这是全文索引在运行。我还看到我的前端在使用全文索引的搜索结果中返回不准确或不是最新的数据。

你用的是什么 CPU?换个好点的。另外全文索引总是会滞后——它不是实时的。即使不固定 CPU,它也会落后。因为它在设计上就不是同步的。

我们需要更多信息。此时,我建议购买一台不属于 100 美元 ebay 二手部件范畴的数据库服务器。您不会说它看起来怎么样,但除非您插入 2gb 文件,否则 CPU 不应该落后太多(并且短暂的延迟是快速插入的代价 - 或者使用 Lucene .NET 并等待全文索引处理完成后再插入,这也不会让您满意,因为插入可能需要一些时间)。

一般来说,现代服务器(即 6-12 个真实处理器核心)应该完全能够满足每天 50k 次插入的需求,除非它们不是在一天内发生,而是在 10 分钟左右的时间内发生。当然,这取决于大小(50.000 个 2gb 文本 blob 很多)。

相关内容