Ale*_*y F 9 sql-server full-text-search sql-server-2014
我们对 SQL Server 2014 进行了测试,当时我们有 10 个数据库,每个数据库中有 100 个不同的架构,每个架构中有 10 个小(约 50 行)表(总共 10K 个表),我们在所有这些上创建了全文索引所有这些数据库中的表同时存在。
几分钟后,我们发现 SQL Server 停止接受任何连接(ADMIN:.
连接除外)。如果我们重新启动服务器,我们可以连接,但过一段时间它又挂了。经过一番调查,我们发现它是由于消耗了所有工作线程引起的,dm_os_tasks
并且dm_os_waiting_tasks
向我们展示了状态中有很多FT_MASTER_MERGE
等待SUSPENDED
。我们在谷歌上搜索“全文正在等待主合并操作”,但没有找到更多关于它的实际信息。
我们尝试了不同的全文目录配置:每个数据库一个目录,每个模式一个目录,每个索引一个目录。无论如何,服务器挂起所有这些挂起的任务。
等待的根本原因是什么,如何修复/缓解?
在如此大量的表格上启用全文的推荐方法是什么?
您需要错开操作而不是一次完成所有操作。连接项不谈论接受新连接。但由于这个等待线程没有被释放(在你的情况下)并且新的连接是不可能的。
参考:
这是 SQL Server 的一个已知问题。从连接项:
这是由于我们当前的作业调度程序的设置方式导致多个主合并操作排队但从未发出信号。需要明确的是,只有同时调用多个索引/重组操作时才会发生这种情况 - 索引操作完成得很好并且结果是可查询的。只有主合并超时并被重新安排到稍后的时间段。
由于修复的复杂性,我们决定等到下一个主要版本再对其进行分类。目前,建议 错开索引数量,以免导致此类超时问题。如果您还有任何疑问,请告诉我。