|
|
|
idx_tup_fetch = 0
|
|||
|---|---|---|---|
|
#18+
нагуглил селект для мониторинга индексов SELECT indexrelname, idx_tup_read, idx_tup_fetch, (idx_tup_read - idx_tup_fetch) as dif, CASE WHEN idx_tup_read = 0 THEN 0 ELSE round((idx_tup_read::float4 - idx_tup_fetch) / idx_tup_read*100) END as ratio FROM pg_stat_user_indexes ORDER BY 5 desc; В описании сказано, если idx_tup_fetch большое и разница между idx_tup_read и idx_tup_fetch большое то нужно сделать reindex. Пытаюсь симитировать ситуацию , однако что бы не делал idx_tup_fetch всегда 0. Просьба подказать - какие действия ведут к увеличиению значения idx_tup_fetch в pg_stat_user_indexes ? Т.е. хочется воспроизвести следующею ситуацию : 1)Большое значение idx_tup_fetch 2)Выполнение REINDEX 3)малое значение idx_tup_fetch Откуда появился вопрос. У клиента имеется запрос вида : select col2 , value from table1 where TRUE AND col1 = X AND (col2 between Y and Z ); и по словам клиента при некоторых значениях X , Y , Z время выполнения резко увеличивается. Таблица проиндексирована по столбцам col1 , col2 . План выполнения например такой : QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------- Bitmap Heap Scan on table1 (cost=2325.34..5079.09 rows=1045 width=16) (actual time=25.793..30.025 rows=978 loops=1) Recheck Cond: ((col1 = 0.08::double precision) AND (col2 >= 0.1::double precision) AND (col2 <= 0.2::double precision)) -> BitmapAnd (cost=2325.34..2325.34 rows=1045 width=0) (actual time=25.588..25.588 rows=0 loops=1) -> Bitmap Index Scan on table1_col1_indx (cost=0.00..193.68 rows=10300 width=0) (actual time=2.300..2.300 rows=9958 loops=1) Index Cond: (col1 = 0.08::double precision) -> Bitmap Index Scan on table1_col2_indx (cost=0.00..2130.90 rows=101447 width=0) (actual time=22.177..22.177 rows=100238 loops=1) Index Cond: ((col2 >= 0.1::double precision) AND (col2 <= 0.2::double precision)) Total runtime: 30.217 ms (8 rows) Все что нагуглил вот это запрос и REINDEX. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2014, 14:20:39 |
|
||
|
idx_tup_fetch = 0
|
|||
|---|---|---|---|
|
#18+
rinace, сделайте индекс по (col1, col2) и будет вам счастье ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2014, 14:33:57 |
|
||
|
idx_tup_fetch = 0
|
|||
|---|---|---|---|
|
#18+
Maxim Bogukrinace, сделайте индекс по (col1, col2) и будет вам счастье А при чем тут idx_tup_fetch ? База промышленная, размер терабайт с лишним создание индекса операция весьма затратная . Это решение как workaround сразу записано в план, но в даннмо случае инетересно именно idx_tup_fetch ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2014, 14:45:43 |
|
||
|
idx_tup_fetch = 0
|
|||
|---|---|---|---|
|
#18+
rinaceПытаюсь симитировать ситуацию , однако что бы не делал idx_tup_fetch всегда 0. Bitmap Index Scan не изменяет *_indexes.idx_tup_fetch rinaceПросьба подказать - какие действия ведут к увеличиению значения idx_tup_fetch в pg_stat_user_indexes ?Нужен план с index scan'ом, без bitmap, например Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2014, 15:23:11 |
|
||
|
idx_tup_fetch = 0
|
|||
|---|---|---|---|
|
#18+
rinace<> 2)Выполнение REINDEX <> База промышленная, размер терабайт с лишним создание индекса операция весьма затратная . операция REINDEX не менее затратная. причём, я не видел пока в её синтаксисе кляузы concurrently (при всех недостатках конкуррентли она, хотя бы не лочит всё что ни попадя)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2014, 15:34:09 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=130&tid=1998770]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
279ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 553ms |

| 0 / 0 |
