Home

Previous 20

Nov. 20th, 2009

PostgreSQL: btree_gin + gin_fuzzy_search_limit = fail

Попробовал использовать довольно интересную фичу нового PostgreSQL - btee_gin. Это расширение, позволяющее засоввывать в поисковый индекс дополнительные поля, например дату, число или boolean (полный список поддерживаемых типов по ссылке).

Без этого расширения поиск по тексту с учетом дополнительных критериев всегда включает в себя полную выборку по текстовому запросу, которая затем так или иначе фильтруется по дополнительным критериям. С btree_gin можно стазу получить из индекса то что нужно, что (потенциально) быстрее.

Вторая полезная фича поиска - gin_fuzzy_search_limit, она появилась еще в 8.2 (или в 8.3). Этот режим позволяет ограничить выборку по индексу для запросов, которые выдают слишком много ответов, поскольку такие запросы исполняются долго и сильно грузят БД (особенно если потом хочется их всех отранжировать и отсортировать). Фактически это режим "выдачи глупых ответов на глупые запросы". Это значение не должно быть слишком маленьким, нужен еще некоторый запас на фильтрацию по нетекстовым критериям. gin_fuzzy_search_limit задает примерное максимальное число ответов, которое мы хотим получить.

Эксперимент по использованию gin_fuzzy_search_limit совместно с btee_gin по тексту и дате оказался не удачным. Для примера рассмотрим индекс по тексту и дате, и искать будем сообщения за последний год. Тестировалось два запроса - первый по слову "linux". При поиске без даты в индексе за год мы получали ~3000 ответов (gin_fuzzy_search_limit = 10000, остальное отфильтроввывавалось по дате). При поиске по индексу с датой - 130 ответов. Хуже ситуация с редковстречающимся словом, например, 'gravatar' (оно еще хорошо тем, что встречается только в этом году). Это слово встречается всего 33 раза, так что при отсутствии даты в индексе из поиска мы получаем все 33 ответа. При наличии даты в индексе - слово не находится вообще, или находится в 1-2 документах (как повезет).

Насколько я понимаю, в данном случае gin_fuzzy_search_limit ограничил отдельно выборку по дате (фактически выбрар произвольные 10000 сообщений этого года) и отдельно выборку по слову, а затем сделал им 'join', выкинув значительную часть полезных результатов.

Имхо данная проблема сильно ограничивает применимость btree_gin в реальной жизни, по крайней мере в вебе.

Nov. 15th, 2009

Кольцо вокруг Серебряного Бора

Пробежал по Серебряному Бору кольцо, стараясь обойти его целиком вдоль воды. Получилось вот так: http://connect.garmin.com/activity/18804060 (кольцо 10км + еще 1.5км по парку в поисках семейства). Хотя глядя на карту я одно доступное озеро таки пропустил, будет повод повторить.
Tags:

Nov. 11th, 2009

PostgreSQL: когда добавление одного условия в WHERE замедляет запрос во много раз

Еще кстати интересный случай про PostgreSQL, на этот раз на примере запроса по той же многогигабайтной таблице

Read more... )

Еще про полнотекстовый поиск в PostgreSQL

В продолжение к прошлому посту на эту тему.

Эксперимент показал, что лучшее для нас сочетание - функциональный gin-индекс, при котором tsvector не сохраняется в базе:

create index ftsidx_gin on mime_part using gin (to_tsvector('russian'::regconfig, text))

Это хорошо, потому как сами по себе вектора сравнимы (а то и больше) чем сам текст, на их запись уходит уйма времени (и без того текстовая таблица с GIN-индексом 40Gb). Попытки использовать gist-индекс к разумному итогу не привели - мы так и не смогли дождаться результата поиска :-)

Одна проблема - постгресс иногда не хочет использовать GIN-индекс и пытается искать прямо по базе. Решение состоит из двух половин: 1) засунуть поиск по тексту в подзапрос, отдельно от других условий и 2) alter function to_tsvector(regconfig, text) cost 1000 (чтобы постгресс не думал, что считать tsvector дешево, кстати странно что этого нет по-умолчанию)

Андрей

Андрей, август 2009




Ссадина на лбу - результат мастерской рулежки и тренировки "полицейского разворота". С тех пор он ездит в шлеме и улыбается. Из позитивного - осилили поездки на 15км, правда пока медленно.

Tags: ,

Nov. 10th, 2009

L.o.r. police day

Как-то так: http://drf-ckoff.livejournal.com/229508.html

PS: Сергей, рисуй еще plz :-)
Tags:

Nov. 6th, 2009

Ура! Снег

Снег! Хорошо новые колесики для роликов я так и не купил, надеюсь в этом году нужды в них не будет :-)

Oct. 31st, 2009

PostgreSQL и поиск

Ковырял тут индексирование постгрессом текста на большом потоке поступающих данных. GIN-индекс строится безумно долго, при этом его постоение упирается исключительно в запись на диск. При этом скорость записи выходит не большой, видимо из-за большого количества random seek, однако utilization 100% (кстати это наводит на мысль что выделенный под индекс SSD-диск может сильно помочь). Тюнинг постгресса не очень помогает. GiST индекс стоится радикально быстрее (и при этом скорость записи на диск выше). Расказы на PostgreSQL.org о разнице в 10 раз кажутся оптимистичными, на глаз разница в скорости раз в 50. Осталось только протестировать скорость поиска (напишу про это если кому-нибудь интересно :-)

Видимо правильная схема состоит в наличии двух индексов - GiST с новыми добавлениями, GIN с архивом и отдельный процесс который бы перекладывал из одного в другое. Ну, это, конечно, если загрузка вообще позволяет построить GIN-индекс быстрее чем данные уйдут из базы :-) Хотя надо реально попробовать, может нас устроит время поиска по GiST-индексу

PS: постиг индексы с условиями, они позволяют заметно ускорить запросы при плохом распределении данных в столбцах

Oct. 30th, 2009

Снег

Ура, белые мухи!

Oct. 25th, 2009

Слет туристят




Немного фотографий как мы ходили на Слет Туристят тут (link поправил)
Tags:

Oct. 24th, 2009

Финляндия этой зимой

Btw, а никому случаем не нужен попутчик в коттедж на беговые лыжи в Финляндии этой зимой/весной? Машины нет, в еде/катании могу быть самодостаточным, могу присоедениться к компании.

Еще думаю на тему Rajalta Rajalle. В прошлом году в Руке я каждый день бегал по 40-45км, вроде больше и не нужно было (хотя это на одном чае, с кафешкой уже в самом конце перед коттеджем). Тут надо бежать по 60, один день 87км. Уверенность в способности/неспособности пробежать такой маршрут у меня появится только в феврале, а тут нужно решать уже сейчас...

Oct. 21st, 2009

Утка и Canon EF-S 55-250/4-5.6 IS

Утка, Серебряный Бор, Москва, август 2009




Коллега дал потестить объективчик Canon EF-S 55-250/4-5.6 IS. Компактный. Про картинку я не понял, стабилизатор - благо. Сильно раздражает тормознутость автофокуса - для телевика это, имхо, не приемлемо.

Tags: ,

Сходил в Бауманку

Сходил на скалодром первый раз в этом году. Теперь все болит :-) Сначала даже что-то получалось, но потом огранизм совсем отказал и перестал лезть даже простые стенки. И еще наверх лезть страшно, но я себя обманул сняв очки

Надо, надо ходить (по крайнем мере пока не выпадет снег :-)

Бауманка радует - там ничего не изменилось, вход 150р, умеренное количество народа (благодаря чему можно налазиться по полной программе всего за час), беговой круг. Проката нет, и это хорошо.
Tags:

Oct. 20th, 2009

Lenspen: занимательная арифметика

Lenspen (это такая палочка для очистки оптики фотоаппарата) на Савеловском предлагают за 750р, продают за 500р. На ebay - $6 с доставкой в Москву. От жадности взял два, т.к. они вечно теряются в неподходящий момент.

Oct. 15th, 2009

Полнотекстовый поиск в PostgreSQL

Тюнил полнотекстовый поиск по lor (пока еще не затюнил до конца). PostgreSQL умная база, ее разуму можно доверять. Однако иногда вылезает жуткая тупизна оптимизатора, которую приходится обходить бесчеловечными извратами. Надо будет попробовать 8.4

Oct. 9th, 2009

HighLoad++

Буду на HighLoad++

Sep. 26th, 2009

Настя и Фёдор

Настя и Фёдор, июль 2009



Tags:

Sep. 23rd, 2009

Красота - сайты с .svn/text-entries

http://habrahabr.ru/blogs/infosecurity/70330/

С git, кстати, все еще красивше :-)

Sep. 22nd, 2009

Цапля

Цапля, Серебряный Бор, Москва, июль 2009





Перелетная цапля, живет в Серебряном Бору в июле-августе. Видел ее еще в прошлом году.

Sep. 21st, 2009

Фёдор

Фёдор, август 2009








(свет из окна + вспышка через зонт на просвет слева сверху под 45 градусов)

Tags:

Previous 20

November 2009

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     

Advertisement

Syndicate

RSS Atom
Powered by LiveJournal.com