Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Full-text search запрос - странное поведение
|
|||
|---|---|---|---|
|
#18+
Сделал vacuum full analyze; ------------------------------- set enable_bitmapscan to off; 1. выполняю так, зная что 1567 нет в том векторе select node_id, parent_id, node_type, node_subtype from xprop_turk where creation_date > ('2006-01-01 00:00:00'::timestamp + '1 month'::interval) and creation_date <= ('2006-03-31 00:00:00'::timestamp) -- and xpath_vector @@ to_tsquery('default','4054126') and xaccess_vector @@ to_tsquery('default','1567') limit 100; ----- 0 записей, 20 милисекунд 2. выполняю первую часть select node_id, parent_id, node_type, node_subtype from xprop_turk where creation_date > ('2006-01-01 00:00:00'::timestamp + '1 month'::interval) and creation_date <= ('2006-03-31 00:00:00'::timestamp) and xpath_vector @@ to_tsquery('default','4054126') --and xaccess_vector @@ to_tsquery('default','1567') limit 100; ----- 100 записей, 2 секунды 3. выполняю полностью select node_id, parent_id, node_type, node_subtype from xprop_turk where creation_date > ('2006-01-01 00:00:00'::timestamp + '1 month'::interval) and creation_date <= ('2006-03-31 00:00:00'::timestamp) and xpath_vector @@ to_tsquery('default','4054126') and xaccess_vector @@ to_tsquery('default','1567') limit 100; ----- 0 записей, 126 секунд (!) Как такое получается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 15:29 |
|
||
|
Full-text search запрос - странное поведение
|
|||
|---|---|---|---|
|
#18+
планы надо смотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 15:34 |
|
||
|
Full-text search запрос - странное поведение
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatпланы надо смотреть "Limit (cost=0.00..22780.27 rows=2 width=40) (actual time=143037.401..143037.401 rows=0 loops=1)" " -> Result (cost=0.00..22780.27 rows=2 width=40) (actual time=143037.399..143037.399 rows=0 loops=1)" " -> Append (cost=0.00..22780.27 rows=2 width=40) (actual time=143037.398..143037.398 rows=0 loops=1)" " -> Index Scan using xprop_turk_xpath_idx on xprop_turk (cost=0.00..8.28 rows=1 width=40) (actual time=0.016..0.016 rows=0 loops=1)" " Index Cond: (xpath_vector @@ '''4054126'''::tsquery)" " Filter: ((creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone) AND (xpath_vector @@ '''4054126'''::tsquery) AND (xaccess_vector @@ '''1567'''::tsquery))" " -> Index Scan using xprop_turk_xpath_06_idx on xprop_turk_06 xprop_turk (cost=0.00..22772.00 rows=1 width=40) (actual time=143037.380..143037.380 rows=0 loops=1)" " Index Cond: (xpath_vector @@ '''4054126'''::tsquery)" " Filter: ((creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone) AND (xaccess_vector @@ '''1567'''::tsquery))" "Total runtime: 143037.451 ms" как тоько ставлю значение, которое существует в этой таблице - 2-3 секунды срабатывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 15:35 |
|
||
|
Full-text search запрос - странное поведение
|
|||
|---|---|---|---|
|
#18+
Winnipuh1567 нет в том векторетут наверное лучший план IndexScan(xaccess_vector) (real time~=0 rows=0), затем Filter(xpath_vector,creation_date) по пустой выборке почему постгрес его не выбирает? "может ли постгрес вычислять/использовать статистику распределения для выборки по GIST и GIN индексам"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 15:49 |
|
||
|
Full-text search запрос - странное поведение
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat Winnipuh1567 нет в том векторетут наверное лучший план IndexScan(xaccess_vector) (real time~=0 rows=0), затем Filter(xpath_vector,creation_date) по пустой выборке почему постгрес его не выбирает? "может ли постгрес вычислять/использовать статистику распределения для выборки по GIST и GIN индексам"? вот я и не пойму логику работы такого запроса... может быть можно указать, заставить использовать индекс?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 16:07 |
|
||
|
Full-text search запрос - странное поведение
|
|||
|---|---|---|---|
|
#18+
Winnipuhвот я и не пойму логику работы такого запроса...по плану все понятно - ищет по индексу (xpath_vector), получает поток строк. затем этот поток отфльтровывает по условию xaccess_vector, которому ни одна строка не удовлетворяет. поэтому прочесывает по индексу все строки удовлетворяющие условию xpath_vector, которых видимо много, на что тратит много времени. Winnipuhможет быть можно указать, заставить использовать индекс?...в постгресе нельзя подсказать планировщику использовать некоторый конкретный индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 16:16 |
|
||
|
Full-text search запрос - странное поведение
|
|||
|---|---|---|---|
|
#18+
вот планы: В обоих запросах используются критерии выбора по интервалу дат, кроме того 1. оба критерия использованы 2. один, там где пустое множество "Limit (cost=0.00..22780.27 rows=2 width=40) (actual time=52533.449..52533.449 rows=0 loops=1)" " -> Result (cost=0.00..22780.27 rows=2 width=40) (actual time=52533.448..52533.448 rows=0 loops=1)" " -> Append (cost=0.00..22780.27 rows=2 width=40) (actual time=52533.447..52533.447 rows=0 loops=1)" " -> Index Scan using xprop_turk_xpath_idx on xprop_turk (cost=0.00..8.28 rows=1 width=40) (actual time=0.018..0.018 rows=0 loops=1)" " Index Cond: (xpath_vector @@ '''4054126'''::tsquery)" " Filter: ((creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone) AND (xaccess_vector @@ '''1567'''::tsquery) AND (xpath_vector @@ '''4054126'''::tsquery))" " -> Index Scan using xprop_turk_xpath_06_idx on xprop_turk_06 xprop_turk (cost=0.00..22772.00 rows=1 width=40) (actual time=52533.428..52533.428 rows=0 loops=1)" " Index Cond: (xpath_vector @@ '''4054126'''::tsquery)" " Filter: ((creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone) AND (xaccess_vector @@ '''1567'''::tsquery))" "Total runtime: 52533.500 ms" ------------------------------------------------ "Limit (cost=0.00..3364.45 rows=100 width=40) (actual time=16.786..16.786 rows=0 loops=1)" " -> Result (cost=0.00..23012.81 rows=684 width=40) (actual time=16.785..16.785 rows=0 loops=1)" " -> Append (cost=0.00..23012.81 rows=684 width=40) (actual time=16.784..16.784 rows=0 loops=1)" " -> Index Scan using xprop_turk_created_idx on xprop_turk (cost=0.00..8.27 rows=1 width=40) (actual time=7.788..7.788 rows=0 loops=1)" " Index Cond: ((creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone))" " Filter: (xaccess_vector @@ '''1567'''::tsquery)" " -> Index Scan using xprop_turk_xaccess_06_idx on xprop_turk_06 xprop_turk (cost=0.00..23004.54 rows=683 width=40) (actual time=8.994..8.994 rows=0 loops=1)" " Index Cond: (xaccess_vector @@ '''1567'''::tsquery)" " Filter: ((creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone))" "Total runtime: 16.823 ms" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 16:17 |
|
||
|
Full-text search запрос - странное поведение
|
|||
|---|---|---|---|
|
#18+
сделайте explain analyze select * from xprop_turk_06 where xpath_vector @@ to_tsquery('default','4054126'); explain analyze select * from xprop_turk_06 where xaccess_vector @@ to_tsquery('default','1567'); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 16:31 |
|
||
|
Full-text search запрос - странное поведение
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatсделайте explain analyze select * from xprop_turk_06 where xpath_vector @@ to_tsquery('default','4054126'); explain analyze select * from xprop_turk_06 where xaccess_vector @@ to_tsquery('default','1567'); QUERY PLAN Index Scan using xprop_turk_xpath_06_idx on xprop_turk_06 (cost=0.00..22730.26 rows=5565 width=821) (actual time=0.102..146455.626 rows=4703949 loops=1) Index Cond: (xpath_vector @@ '''4054126'''::tsquery) Total runtime: 147582.822 ms QUERY PLAN Index Scan using xprop_turk_xaccess_06_idx on xprop_turk_06 (cost=0.00..22976.71 rows=5565 width=821) (actual time=0.033..0.033 rows=0 loops=1) Index Cond: (xaccess_vector @@ '''1567'''::tsquery) Total runtime: 0.059 ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 16:38 |
|
||
|
Full-text search запрос - странное поведение
|
|||
|---|---|---|---|
|
#18+
WinnipuhСделал vacuum full analyze; Index Scan using xprop_turk_xpath_06_idx on xprop_turk_06 (rows= 5565 ) (actual rows= 4703949 ) Index Scan using xprop_turk_xaccess_06_idx on xprop_turk_06 (rows= 5565 ) (actual rows= 0 )видите, как постгрес лажает в оценке кол-ва строк, в этом корень проблемы. "может ли постгрес вычислять/использовать статистику распределения для выборки по GIST и GIN индексам"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 16:46 |
|
||
|
Full-text search запрос - странное поведение
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat WinnipuhСделал vacuum full analyze; Index Scan using xprop_turk_xpath_06_idx on xprop_turk_06 (rows= 5565 ) (actual rows= 4703949 ) Index Scan using xprop_turk_xaccess_06_idx on xprop_turk_06 (rows= 5565 ) (actual rows= 0 )видите, как постгрес лажает в оценке кол-ва строк, в этом корень проблемы. "может ли постгрес вычислять/использовать статистику распределения для выборки по GIST и GIN индексам"? и как бороться? вот еще для демонстрации чудес: в этом запросе три фуллтекстовых критерия, все отрабатывает в теч 1-2 секунд, кроме случая, если критерий (2) возвращает пустое множество в комбинации с критерием (1) и/или (3) возвращающими любое множество. ------------------------------------------------ select node_id, parent_id, node_type, node_subtype from xprop_turk where creation_date > ('2006-01-01 00:00:00'::timestamp + '1 month'::interval) and creation_date <= ('2006-03-31 00:00:00'::timestamp) and xpath_vector @@ to_tsquery('default','24128599') -- (1) and xaccess_vector @@ to_tsquery('default','219 & xxx') -- (2) and xstring_vector @@ to_tsquery('default','polis & entire & vovka') -- (3) limit 100; --------------------------------------------------- пример типичной записи path --"4054126 10485537 7418770 24128599 10610728 2651625 15593856 10461368 13669068 18509492 19608211 3874" пример типичной записи access --"20 23 25 116 309 117 27 310 214 215 216 28 218 311 121 122 29 219 123 220 312 313 124 221 31 130 32 33 225 226 131 34 227 35 317 132 38 39 134 42 43 135 229 320 321 230 322 136 323 324 139 140 141 142 329 231 47 48 49 330 143 335 233 50 51 234 147 148 152 240 153 154 339 55 56 242 57 58 155 340 244 60 245 156 341 157 248 342 158 343 344 250 345 346 159 64 347 160 348 65 161 252 253 349 66 163 164 257 67 68 69 259 168 71 73 261 169 75 76 355 171 78 175 359 360 80 267 81 83 363 93 372 374" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 16:59 |
|
||
|
|

start [/forum/topic.php?fid=53&tid=2004915]: |
0ms |
get settings: |
7ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 329ms |

| 0 / 0 |
