Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 оптимизация full text search  [new]
guset
Guest
Добрый день!

Имеется таблица размером 1,6Гб, 200к строк, в таблице на одно поле навешен полнотекстовый индекс, идет примерно 5-9 запросов в секунду, результаты отдаются в среднем за 3-5 секунд, но иногда бывает и больше 10 секунд, подскажите есть ли какие то приемы оптимизации стандартного механизма full text search? или он сам по себе из коробки и там ничего не сделаешь и не настроишь?
3 фев 16, 21:26    [18770081]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
guset
или он сам по себе из коробки и там ничего не сделаешь и не настроишь?
По скорости выполнения запросов "не настроишь", да. Но можно менять сами запросы.
4 фев 16, 00:50    [18770657]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
Crimean
Member

Откуда:
Сообщений: 13147
версия сервера? 3-5 секунд - слишком дофига. ерунда какая-то. и 200к строк - не объем ни разу.
особо там ничего не настроишь, можно индексы перестроить
но сдается мне у вас дело НЕ в ФТС
4 фев 16, 02:00    [18770703]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8826
Как ищете, Like '%aaa%' ? :D
4 фев 16, 11:27    [18771689]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Владислав Колосов
Как ищете, Like '%aaa%' ? :D


даже это на 200к строк очень быстро
4 фев 16, 13:00    [18772227]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37079
какое железо?
4 фев 16, 13:59    [18772632]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8826
Crimean
Владислав Колосов
Как ищете, Like '%aaa%' ? :D


даже это на 200к строк очень быстро


Просмотреть-то надо около 1,6Гб текста. Мне кажется, что 3 секунды вполне возможно.
4 фев 16, 16:02    [18773299]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
Crimean
Member

Откуда:
Сообщений: 13147
пока не покажут запрос, его план и статистику выполнения - не о чем говорить
4 фев 16, 16:15    [18773394]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
guset
Guest
Crimean,

Извините ребята уезжал ненадолго, не мог ответить.

Железо - 2Гб ОЗУ, диски похоже ССД но точно не знаю, проц 2.7Ггц 2 ядра

Запрос такой
SELECT TOP 20 p.*, k.rank/10.0 as rank FROM TABLE1 as p INNER JOIN FREETEXTTABLE(TABLE1, (text, title), @text) k
    ON p.id = k.[Key]
    INNER JOIN TABLE2 as f on p.rpt = f.id
    INNER JOIN TABLE3 as t on f.theme = t.id
    where t.name = @category
    order by k.rank desc


статистику выполнения не могу показать, нету инструментов

Всем спасибо!
6 фев 16, 11:11    [18781039]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
guset
Запрос такой
Важно, какой результат вернёт FREETEXTTABLE, и что в @text

Если, например, полнотекстовый индекс возвращает много, а потом всё фильтруется условиями запроса, то будет долго.

В общем, нужен план, как уже говорили, и вообще, нужен доступ к профайлеру.

Если "нету инструментов", то нужно эту работу поручить тому, у кого есть инструменты.
6 фев 16, 11:24    [18781062]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
Glory
Member

Откуда:
Сообщений: 104751
guset
Железо - 2Гб ОЗУ

И что же за оп.система у вас ? А версия/редакция sql server-а ?
6 фев 16, 14:49    [18781494]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
guset
Guest
Glory,

win2008R2
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64) Jun 28 2012 08:36:30 Copyright (c) Microsoft Corporation Express Edition with Advanced Services (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
7 фев 16, 18:56    [18784645]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
invm
Member

Откуда: Москва
Сообщений: 9837
guset
Железо - 2Гб ОЗУ, диски похоже ССД но точно не знаю, проц 2.7Ггц 2 ядра

Запрос такой
SELECT TOP 20 p.*, k.rank/10.0 as rank FROM TABLE1 as p INNER JOIN FREETEXTTABLE(TABLE1, (text, title), @text) k
    ON p.id = k.[Key]
    INNER JOIN TABLE2 as f on p.rpt = f.id
    INNER JOIN TABLE3 as t on f.theme = t.id
    where t.name = @category
    order by k.rank desc
У вас экспресс редакция сиквела, следовательно Buffer Pool может быть не более 1Гб.
Если оптимизатор неверно оценивает количество строк, возвращаемых freetexttable или оно досточно большое, то может быть построен план выполнения, соединяющий результат поиска с базовой таблицей по Hash или Merge.
Соответственно, читается вся базовая таблица, которая целиком в Buffer Pool не помещается и часть данных будет подгружаться с диска. И так для каждого выполнения этого запроса.
Попробуйте сподвигнуть оптимизатор на использование Nested Loops, переписав запрос:
select
 p.*, k.rank/10.0 as [rank]
from
 (select top (20) [key], [rank] from freetexttable(TABLE1, (text, title), @text) order by [rank] desc) k join
 TABLE1 p on p.id = k.[key] join
 TABLE2 f on p.rpt = f.id join
 TABLE3 t on f.theme = t.id
where
 t.name = @category
order by
 k.[rank] desc;
7 фев 16, 22:36    [18785008]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
invm
Member

Откуда: Москва
Сообщений: 9837
Предложение отменяется. Мой запрос не эквивалентен исходному.
7 фев 16, 22:46    [18785028]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
guset
Guest
invm,

Подскажите будет ли в этом случае быстрее работать на noSQL базе?
10 фев 16, 12:53    [18798578]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
guset, а можно попросить Вас план выполнения (в формате sqlplan)?
10 фев 16, 13:59    [18799002]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
invm
Member

Откуда: Москва
Сообщений: 9837
guset
Подскажите будет ли в этом случае быстрее работать на noSQL базе?
Не могу знать. Обратитесь в профильный форум.

Если хотите реальной помощи - выкладывайте DDL таблиц и индексов, а также, как уже просили, актуальный план выполнения в формате sqlplan.
10 фев 16, 14:42    [18799303]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
Crimean
Member

Откуда:
Сообщений: 13147
да тут фильтрация фееричная. напрашивается перенос критерия фильтрации из TABLE3 в TABLE1 и индексация. возможно, на уровне представления данных. ибо при относительно большом объеме данных в табличках будет "весело" с планом. по определению. при небольших табличках (по размеру) - тем более просится перенос критерия как минимум до TABLE2
ибо если критерий таков, что под него попадает (к примеру) 90% данных, то мы получим ярко выраженную "фигню", которую сложно оптимизировать ибо чтобы сделать top N order by - надо будет все равно все выбрать и отсортировать
10 фев 16, 15:33    [18799649]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
guset
invm,

Подскажите будет ли в этом случае быстрее работать на noSQL базе?


1. что "это" ?
2. что в вашем понимании "noSQL база"?
3. ответ: возможно будет быстрее, а возможно и нет
10 фев 16, 17:21    [18800544]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация full text search  [new]
guset
Guest
Crimean
да тут фильтрация фееричная. напрашивается перенос критерия фильтрации из TABLE3 в TABLE1 и индексация.


Спасибо, так и сделал, результат - нагрузка на дисковую систему упала в десятки раз с 500Мб/с в среднем до 15Мб/с, запросы конечно примерно так и отрабатываются 2-3 секунды, но хотя бы нет периодических подвисаний на 10-15 секунд
16 фев 16, 15:41    [18824229]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить