Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запросы с предикатом CONTAINS возвращают пустые результаты под нагрузкой  [new]
AVC13
Member

Откуда:
Сообщений: 1
Вопрос по компоненту полнотекстового поиска в MS SQL Server 2012 SP1.
Запросы с предикатом CONTAINS периодически возвращают пустые результаты, если выполняются одновременно из нескольких сессий.

Например, есть таблица:
CREATE TABLE files (
id bigint not null,
text nvarchar(max) null,
encoding nvarchar(50) null,
hash nvarchar(50) null,
constraint PK_files primary key (id)
);

В таблице 1500000 записей, общий объем данных 40 гигабайт.

Создан полнотекстовый каталог:
CREATE FULLTEXT CATALOG [FTCAT] WITH ACCENT_SENSITIVITY = ON
AUTHORIZATION [dbo]

По столбцу “text” построен полнотекстовый индекс:
CREATE FULLTEXT INDEX ON [files]([text] LANGUAGE [Russian])
KEY INDEX [PK_files]ON ([FTCAT], FILEGROUP [PRIMARY])
WITH (CHANGE_TRACKING = AUTO, STOPLIST = OFF)

Проблемный запрос:
SELECT count(*) FROM files WHERE contains([text],'1')

Когда этот запрос выполняется в одной сессии, он возвращает значение 437134.
Если же запустить 32 параллельных сессий, каждая из которых в цикле выполняет этот запрос с задержкой 5 секунд (выявлено в ходе нагрузочного тестирования), сервер периодически начинает возвращать 0 результатов, причем без каких-либо сообщений об ошибках.

Существуют ли в MS SQL 2012 SP1 параметры конфигурации, позволяющие изменить это поведение MS SQL?
Если нет, хотя бы как узнать, что запрос по каком-то внутренним для MS SQL причинам вернул неверные результаты?

Продукт: Microsoft SQL Server Standard (64-bit)
Версия: 11.0.3000.0
Операционная система: Microsoft Windows NT 6.1 (7601)
16 мар 14, 21:55    [15734526]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить