Подвисший запрос

From: isk <isk(at)rdw(dot)ru>
To: pgsql-ru-general(at)postgresql(dot)org
Subject: Подвисший запрос
Date: 2007-03-21 12:09:25
Message-ID: 1436166665.20070321150925@rdw.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

Добрый день
Есть такая проблема: иногда возникает "подвисший запрос". Запрос,
который обычно выполняется порядка 100мс, может выполняться часами.
Что приводит к заметному снижению производительности. Процесс
приходится убивать. За месяц столкнулись 6 раз.
Вопрос: с чем это может быть связано, какие параметры нужно замерить в
след раз, чтобы локализовать проблему.

Сам запрос:
SELECT "v3_vacancy"."id" FROM "v3_vacancy" WHERE (("v3_vacancy"."fti_title" @@ to_tsquery('default_russian', 'официант')) AND ("v3_vacancy"."is_spam" IS FALSE ) AND ("v3_vacancy"."published_date" >= '2007-02-23 00:00:00') AND ("v3_vacancy"."is_searchable" IS TRUE ) ) AND (("v3_vacancy"."city_id" = '1') ) ORDER BY "v3_vacancy"."is_paid_top_search" DESC, "v3_vacancy"."modified_date" DESC LIMIT 30 OFFSET 120
(строка поиска каждый раз разная)
Характерно использование TSearch для данной таблицы

CREATE TABLE v3_vacancy
(
id serial NOT NULL,
...
fti_all tsvector, -- TSearch2 index для всей вакансии.
fti_title tsvector, -- TSearch2 index для названия вакансии.
)
WITH OIDS;

CREATE INDEX v3_vacancy_fti_all_idx
ON v3_vacancy
USING gist
(fti_all);

CREATE INDEX v3_vacancy_fti_title_idx
ON v3_vacancy
USING gist
(fti_title);

SELECT * from pg_ts_cfg;
ts_name | prs_name | locale
-----------------+----------+--------------
default | default | C
default_russian | default | ru_RU.KOI8-R
simple | default |

SELECT * from pg_ts_cfgmap ;
ts_name | tok_alias | dict_name
-----------------+--------------+-----------
default | lword | {en_stem}
default | nlword | {simple}
default | word | {simple}
default | email | {simple}
default | url | {simple}
default | host | {simple}
default | sfloat | {simple}
default | version | {simple}
default | part_hword | {simple}
default | nlpart_hword | {simple}
default | lpart_hword | {en_stem}
default | hword | {simple}
default | lhword | {en_stem}
default | nlhword | {simple}
default | uri | {simple}
default | file | {simple}
default | float | {simple}
default | int | {simple}
default | uint | {simple}
default_russian | lword | {en_stem}
default_russian | nlword | {ru_stem}
default_russian | word | {ru_stem}
default_russian | email | {simple}
default_russian | url | {simple}
default_russian | host | {simple}
default_russian | sfloat | {simple}
default_russian | version | {simple}
default_russian | part_hword | {simple}
default_russian | nlpart_hword | {ru_stem}
default_russian | lpart_hword | {en_stem}
default_russian | hword | {ru_stem}
default_russian | lhword | {en_stem}
default_russian | nlhword | {ru_stem}
default_russian | uri | {simple}
default_russian | file | {simple}
default_russian | float | {simple}
default_russian | int | {simple}
default_russian | uint | {simple}
simple | lword | {simple}
simple | nlword | {simple}
simple | word | {simple}
simple | email | {simple}
simple | url | {simple}
simple | host | {simple}
simple | sfloat | {simple}
simple | version | {simple}
simple | part_hword | {simple}
simple | nlpart_hword | {simple}
simple | lpart_hword | {simple}
simple | hword | {simple}
simple | lhword | {simple}
simple | nlhword | {simple}
simple | uri | {simple}
simple | file | {simple}
simple | float | {simple}
simple | int | {simple}
simple | uint | {simple}

SELECT dict_name, dict_init, dict_lexize, dict_comment from pg_ts_dict ;
dict_name | dict_init | dict_lexize | dict_comment
-----------------+-----------------------+-----------------------------------------+--------------------------------------------------
simple | dex_init(internal) | dex_lexize(internal,internal,integer) | Simple example of dictionary.
en_stem | snb_en_init(internal) | snb_lexize(internal,internal,integer) | English Stemmer. Snowball.
ru_stem | snb_ru_init(internal) | snb_lexize(internal,internal,integer) | Russian Stemmer. Snowball.
ispell_template | spell_init(internal) | spell_lexize(internal,internal,integer) | ISpell interface. Must have .dict and .aff files
synonym | syn_init(internal) | syn_lexize(internal,internal,integer) | Example of synonym dictionary

SELECT * from pg_ts_parser;
prs_name | prs_start | prs_nexttoken | prs_end | prs_headline | prs_lextype | prs_comment
----------+------------------------------+--------------------------------------------+--------------------+-------------------------------------------+------------------------+---------------------------
default | prsd_start(internal,integer) | prsd_getlexeme(internal,internal,internal) | prsd_end(internal) | prsd_headline(internal,internal,internal) | prsd_lextype(internal) | Parser from OpenFTS v0.34



PostgreSQL 8.1.8
OS Linux version 2.6.16-gentoo-r9 (gcc version 3.4.4 (Gentoo 3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8))

--
С уважением,
isk mailto:isk(at)rdw(dot)ru

Responses

Browse pgsql-ru-general by date

  From Date Subject
Next Message silly_sad 2007-03-28 13:11:48 Чудо дивное планировщик явил !!!
Previous Message silly_sad 2007-03-21 11:40:11 Re: Tsearch strange error