powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Одни и те же запросы на сервере выполняются дольше чем на локалке
9 сообщений из 9, страница 1 из 1
Одни и те же запросы на сервере выполняются дольше чем на локалке
    #34792666
im4LF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PostgreSQL 8.2
Время выполнения отдельных запросов увеличилось в ~30 раз (с ~700ms возрасло до ~25s)

Конфы машин:
Локалка
AMD Sempron 3000+ (1,6),
1Г,
WinXP

Сервер
VPS
CPU: 30% от Dual Intel Xeon 3.0GHz

Fedora Core4

На локальной машине конфигурацию postgre не трогал
На сервере пришлось подкрутить:
shared_buffers = 256MB
temp_buffers = 8MB
work_mem = 128MB
effective_cache_size = 512MB

Это помогло (время сократилось с 20s до ~3s), но результат всё равно не приемлем. В какую сторону копать? Падскажите пожалуйста - горит.

ps: работаю с базой tecdoc, перелитой в postgre
...
Рейтинг: 0 / 0
Одни и те же запросы на сервере выполняются дольше чем на локалке
    #34793669
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажите EXPLAIN ANALYZE одного и того же запроса на сервере и на локалке.
...
Рейтинг: 0 / 0
Одни и те же запросы на сервере выполняются дольше чем на локалке
    #34793878
im4LF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
explain analyze
select 
    "TECDOC_TOF_SEARCH_TREE"."STR_ID", 
    "TECDOC_TOF_SEARCH_TREE"."STR_LEVEL", 
    "TECDOC_TOF_SEARCH_TREE"."STR_SORT", 
    "TECDOC_TOF_DES_TEXTS"."TEX_TEXT", 
    "TECDOC_TOF_SEARCH_TREE"."STR_ID_PARENT"        
from 
    "TECDOC_TOF_SEARCH_TREE"
    join "TECDOC_TOF_LINK_SHO_STR"
        on "TECDOC_TOF_LINK_SHO_STR"."LSS_STR_ID" = "TECDOC_TOF_SEARCH_TREE"."STR_ID"
    join "TECDOC_TOF_DESIGNATIONS"
        on "TECDOC_TOF_SEARCH_TREE"."STR_DES_ID" = "TECDOC_TOF_DESIGNATIONS"."DES_ID" --and "TECDOC_TOF_DESIGNATIONS"."DES_LNG_ID" = 16
    join "TECDOC_TOF_DES_TEXTS"
		on "TECDOC_TOF_DESIGNATIONS"."DES_TEX_ID" = "TECDOC_TOF_DES_TEXTS"."TEX_ID"
where 
    "TECDOC_TOF_SEARCH_TREE"."STR_TYPE" =  1  and "TECDOC_TOF_SEARCH_TREE"."STR_LEVEL" >  1  and 
exists (
	select  1  from "TECDOC_TOF_LINK_GA_STR" 
	join "TECDOC_TOF_LINK_LA_TYP"
    	ON "TECDOC_TOF_LINK_GA_STR"."LGS_GA_ID" = "TECDOC_TOF_LINK_LA_TYP"."LAT_GA_ID" 
        and "TECDOC_TOF_LINK_LA_TYP"."LAT_TYP_ID" =  4136 
	where "TECDOC_TOF_LINK_GA_STR"."LGS_STR_ID" = "TECDOC_TOF_SEARCH_TREE"."STR_ID"
)
ORDER BY "TECDOC_TOF_SEARCH_TREE"."STR_SORT"

Локально:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
QUERY PLAN
Sort  (cost= 17519 . 32 .. 17520 . 23  rows= 362  width= 44 ) (actual time= 3899 . 689 .. 3900 . 033  rows= 151  loops= 1 )
"  Sort Key: ""TECDOC_TOF_SEARCH_TREE"".""STR_SORT"""
  ->  Nested Loop  (cost= 454 . 75 .. 17503 . 94  rows= 362  width= 44 ) (actual time= 104 . 800 .. 3898 . 768  rows= 151  loops= 1 )
        ->  Hash Join  (cost= 454 . 75 .. 16941 . 25  rows= 362  width= 16 ) (actual time= 104 . 760 .. 3892 . 489  rows= 151  loops= 1 )
"              Hash Cond: (""TECDOC_TOF_SEARCH_TREE"".""STR_DES_ID"" = ""TECDOC_TOF_DESIGNATIONS"".""DES_ID"")"
              ->  Nested Loop  (cost= 0 . 00 .. 16478 . 36  rows= 362  width= 16 ) (actual time= 4 . 691 .. 3790 . 846  rows= 151  loops= 1 )
"                    ->  Index Scan using ""TECDOC_TOF_SEARCH_TREE_idx2"" on ""TECDOC_TOF_SEARCH_TREE""  (cost=0.00..16269.42 rows=460 width=16) (actual time=4.660..3785.781 rows=149 loops=1)"
"                          Index Cond: (""STR_TYPE"" = 1)"
"                          Filter: ((""STR_LEVEL"" > 1) AND (subplan))"
                          SubPlan
                            ->  Hash Join  (cost= 8 . 97 .. 812 . 70  rows= 93  width= 0 ) (actual time= 4 . 088 .. 4 . 088  rows= 0  loops= 920 )
"                                  Hash Cond: (""TECDOC_TOF_LINK_LA_TYP"".""LAT_GA_ID"" = ""TECDOC_TOF_LINK_GA_STR"".""LGS_GA_ID"")"
"                                  ->  Index Scan using ""TECDOC_TOF_LINK_LA_TYP_idx"" on ""TECDOC_TOF_LINK_LA_TYP""  (cost=0.00..450.30 rows=10846 width=4) (actual time=0.019..2.121 rows=604 loops=912)"
"                                        Index Cond: (""LAT_TYP_ID"" = 4136)"
                                  ->  Hash  (cost= 8 . 67 .. 8 . 67  rows= 24  width= 4 ) (actual time= 0 . 090 .. 0 . 090  rows= 10  loops= 920 )
"                                        ->  Index Scan using ""TECDOC_TOF_LINK_GA_STR_idx"" on ""TECDOC_TOF_LINK_GA_STR""  (cost=0.00..8.67 rows=24 width=4) (actual time=0.015..0.049 rows=10 loops=920)"
"                                              Index Cond: (""LGS_STR_ID"" = $0)"
"                    ->  Index Scan using ""TECDOC_TOF_LINK_SHO_STR_idx"" on ""TECDOC_TOF_LINK_SHO_STR""  (cost=0.00..0.44 rows=1 width=4) (actual time=0.014..0.017 rows=1 loops=149)"
"                          Index Cond: (""TECDOC_TOF_LINK_SHO_STR"".""LSS_STR_ID"" = ""TECDOC_TOF_SEARCH_TREE"".""STR_ID"")"
              ->  Hash  (cost= 258 . 22 .. 258 . 22  rows= 15722  width= 8 ) (actual time= 100 . 021 .. 100 . 021  rows= 15722  loops= 1 )
"                    ->  Seq Scan on ""TECDOC_TOF_DESIGNATIONS""  (cost=0.00..258.22 rows=15722 width=8) (actual time=0.014..52.717 rows=15722 loops=1)"
"        ->  Index Scan using ""TECDOC_TOF_DES_TEXTS_idx"" on ""TECDOC_TOF_DES_TEXTS""  (cost=0.00..1.54 rows=1 width=36) (actual time=0.015..0.018 rows=1 loops=151)"
"              Index Cond: (""TECDOC_TOF_DESIGNATIONS"".""DES_TEX_ID"" = ""TECDOC_TOF_DES_TEXTS"".""TEX_ID"")"
Total runtime:  3900 . 626  ms

На сервере:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
QUERY PLAN
Nested Loop  (cost= 4 . 32 .. 175853 . 37  rows= 2915618  width= 44 ) (actual time= 20 . 239 .. 20571 . 743  rows= 151  loops= 1 )
  ->  Nested Loop  (cost= 4 . 32 .. 86371 . 31  rows= 1457  width= 16 ) (actual time= 20 . 097 .. 20568 . 331  rows= 151  loops= 1 )
        ->  Nested Loop  (cost= 0 . 00 .. 84109 . 02  rows= 157  width= 16 ) (actual time= 19 . 986 .. 20565 . 278  rows= 149  loops= 1 )
"              Join Filter: (""TECDOC_TOF_SEARCH_TREE"".""STR_DES_ID"" = ""TECDOC_TOF_DESIGNATIONS"".""DES_ID"")"
"              ->  Index Scan using ""TECDOC_TOF_SEARCH_TREE_idx4"" on ""TECDOC_TOF_SEARCH_TREE""  (cost=0.00..83231.53 rows=2 width=16) (actual time=18.441..16281.985 rows=149 loops=1)"
"                    Filter: ((""STR_TYPE"" = 1) AND (""STR_LEVEL"" > 1) AND (subplan))"
                    SubPlan
                      ->  Nested Loop  (cost= 8 . 99 .. 2457591 . 10  rows= 93808  width= 0 ) (actual time= 17 . 691 .. 17 . 691  rows= 0  loops= 920 )
"                            ->  Index Scan using ""TECDOC_TOF_LINK_LA_TYP_idx"" on ""TECDOC_TOF_LINK_LA_TYP""  (cost=0.00..519304.64 rows=148902 width=4) (actual time=0.021..0.990 rows=604 loops=920)"
"                                  Index Cond: (""LAT_TYP_ID"" = 4136)"
"                            ->  Bitmap Heap Scan on ""TECDOC_TOF_LINK_GA_STR""  (cost=8.99..13.00 rows=1 width=4) (actual time=0.022..0.022 rows=0 loops=555724)"
"                                  Recheck Cond: ((""TECDOC_TOF_LINK_GA_STR"".""LGS_GA_ID"" = ""TECDOC_TOF_LINK_LA_TYP"".""LAT_GA_ID"") AND (""TECDOC_TOF_LINK_GA_STR"".""LGS_STR_ID"" = $0))"
                                  ->  BitmapAnd  (cost= 8 . 99 .. 8 . 99  rows= 1  width= 0 ) (actual time= 0 . 021 .. 0 . 021  rows= 0  loops= 555724 )
"                                        ->  Bitmap Index Scan on ""TECDOC_TOF_LINK_GA_STR_idx1""  (cost=0.00..4.36 rows=126 width=0) (actual time=0.011..0.011 rows=11 loops=555724)"
"                                              Index Cond: (""TECDOC_TOF_LINK_GA_STR"".""LGS_GA_ID"" = ""TECDOC_TOF_LINK_LA_TYP"".""LAT_GA_ID"")"
"                                        ->  Bitmap Index Scan on ""TECDOC_TOF_LINK_GA_STR_idx""  (cost=0.00..4.36 rows=126 width=0) (actual time=0.005..0.005 rows=7 loops=555724)"
"                                              Index Cond: (""LGS_STR_ID"" = $0)"
"              ->  Seq Scan on ""TECDOC_TOF_DESIGNATIONS""  (cost=0.00..242.22 rows=15722 width=8) (actual time=0.013..14.265 rows=15722 loops=149)"
"        ->  Bitmap Heap Scan on ""TECDOC_TOF_LINK_SHO_STR""  (cost=4.32..14.30 rows=9 width=4) (actual time=0.012..0.013 rows=1 loops=149)"
"              Recheck Cond: (""TECDOC_TOF_LINK_SHO_STR"".""LSS_STR_ID"" = ""TECDOC_TOF_SEARCH_TREE"".""STR_ID"")"
"              ->  Bitmap Index Scan on ""TECDOC_TOF_LINK_SHO_STR_idx""  (cost=0.00..4.32 rows=9 width=0) (actual time=0.007..0.007 rows=1 loops=149)"
"                    Index Cond: (""TECDOC_TOF_LINK_SHO_STR"".""LSS_STR_ID"" = ""TECDOC_TOF_SEARCH_TREE"".""STR_ID"")"
"  ->  Index Scan using ""TECDOC_TOF_DES_TEXTS_idx"" on ""TECDOC_TOF_DES_TEXTS""  (cost=0.00..36.40 rows=2001 width=36) (actual time=0.016..0.018 rows=1 loops=151)"
"        Index Cond: (""TECDOC_TOF_DESIGNATIONS"".""DES_TEX_ID"" = ""TECDOC_TOF_DES_TEXTS"".""TEX_ID"")"
Total runtime:  20572 . 290  ms
...
Рейтинг: 0 / 0
Одни и те же запросы на сервере выполняются дольше чем на локалке
    #34793942
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как видно, планы выполнения разные. В частности из-за этого разное время выполнения запроса.

Кроме этого постгрес ошибается в оценке кол-ва строк. Сделайте "VACUUM ANALYZE" и после этого покажите результат "EXPLAIN ANALYZE".

Index Scan using ""TECDOC_TOF_LINK_LA_TYP_idx"" on ""TECDOC_TOF_LINK_LA_TYP"" (cost=0.00..519304.64 rows=148902 width=4) (actual time=0.021..0.990 rows=604 loops=920)"
...
Рейтинг: 0 / 0
Одни и те же запросы на сервере выполняются дольше чем на локалке
    #34794202
im4LF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень помогло, спасибо
А из-за чего ошибка в оценке строк возникла?
Есть ли ещё способы оптимизации?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
QUERY PLAN
Sort  (cost= 319815 . 02 .. 319815 . 92  rows= 362  width= 43 ) (actual time= 1262 . 711 .. 1262 . 848  rows= 151  loops= 1 )
"  Sort Key: ""TECDOC_TOF_SEARCH_TREE"".""STR_SORT"""
  ->  Nested Loop  (cost= 438 . 75 .. 319799 . 63  rows= 362  width= 43 ) (actual time= 38 . 332 .. 1262 . 293  rows= 151  loops= 1 )
        ->  Hash Join  (cost= 438 . 75 .. 319287 . 30  rows= 362  width= 16 ) (actual time= 38 . 297 .. 1260 . 225  rows= 151  loops= 1 )
"              Hash Cond: (""TECDOC_TOF_SEARCH_TREE"".""STR_DES_ID"" = ""TECDOC_TOF_DESIGNATIONS"".""DES_ID"")"
              ->  Nested Loop  (cost= 0 . 00 .. 318840 . 41  rows= 362  width= 16 ) (actual time= 1 . 816 .. 1223 . 201  rows= 151  loops= 1 )
"                    ->  Index Scan using ""TECDOC_TOF_SEARCH_TREE_idx2"" on ""TECDOC_TOF_SEARCH_TREE""  (cost=0.00..318639.48 rows=460 width=16) (actual time=1.803..1221.451 rows=149 loops=1)"
"                          Index Cond: (""STR_TYPE"" = 1)"
"                          Filter: ((""STR_LEVEL"" > 1) AND (subplan))"
                          SubPlan
                            ->  Hash Join  (cost= 8 . 97 .. 31345 . 34  rows= 93  width= 0 ) (actual time= 1 . 323 .. 1 . 323  rows= 0  loops= 920 )
"                                  Hash Cond: (""TECDOC_TOF_LINK_LA_TYP"".""LAT_GA_ID"" = ""TECDOC_TOF_LINK_GA_STR"".""LGS_GA_ID"")"
"                                  ->  Index Scan using ""TECDOC_TOF_LINK_LA_TYP_idx"" on ""TECDOC_TOF_LINK_LA_TYP""  (cost=0.00..30977.97 rows=10999 width=4) (actual time=0.020..0.716 rows=604 loops=912)"
"                                        Index Cond: (""LAT_TYP_ID"" = 4136)"
                                  ->  Hash  (cost= 8 . 67 .. 8 . 67  rows= 24  width= 4 ) (actual time= 0 . 035 .. 0 . 035  rows= 10  loops= 920 )
"                                        ->  Index Scan using ""TECDOC_TOF_LINK_GA_STR_idx"" on ""TECDOC_TOF_LINK_GA_STR""  (cost=0.00..8.67 rows=24 width=4) (actual time=0.007..0.021 rows=10 loops=920)"
"                                              Index Cond: (""LGS_STR_ID"" = $0)"
"                    ->  Index Scan using ""TECDOC_TOF_LINK_SHO_STR_idx"" on ""TECDOC_TOF_LINK_SHO_STR""  (cost=0.00..0.42 rows=1 width=4) (actual time=0.006..0.007 rows=1 loops=149)"
"                          Index Cond: (""TECDOC_TOF_LINK_SHO_STR"".""LSS_STR_ID"" = ""TECDOC_TOF_SEARCH_TREE"".""STR_ID"")"
              ->  Hash  (cost= 242 . 22 .. 242 . 22  rows= 15722  width= 8 ) (actual time= 36 . 450 .. 36 . 450  rows= 15722  loops= 1 )
"                    ->  Seq Scan on ""TECDOC_TOF_DESIGNATIONS""  (cost=0.00..242.22 rows=15722 width=8) (actual time=0.027..18.119 rows=15722 loops=1)"
"        ->  Index Scan using ""TECDOC_TOF_DES_TEXTS_idx"" on ""TECDOC_TOF_DES_TEXTS""  (cost=0.00..1.40 rows=1 width=35) (actual time=0.008..0.009 rows=1 loops=151)"
"              Index Cond: (""TECDOC_TOF_DESIGNATIONS"".""DES_TEX_ID"" = ""TECDOC_TOF_DES_TEXTS"".""TEX_ID"")"
Total runtime:  1263 . 416  ms
...
Рейтинг: 0 / 0
Одни и те же запросы на сервере выполняются дольше чем на локалке
    #34794907
im4LF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас появились следующие ошибки:
ERROR: index 91 out of valid range, 0..7

C чем они связаны? Не с конфигурацией ли?
...
Рейтинг: 0 / 0
Одни и те же запросы на сервере выполняются дольше чем на локалке
    #34795490
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
im4LFА из-за чего ошибка в оценке строк возникла?С того момента, когда постгрес считал статистику, данные сильно изменились.

Включайте autovacuum, или после изменения значительной части (?10%) данных, делайте vacuum, analyze.

im4LFЕсть ли ещё способы оптимизации?Есть. :) Можно попробовать добиться другого плана при помощи set enable_* to on/off; изменения (тюнинга) параметров в конфиге effective_cache_size, random_page_cost, cpu_*_cost; explicit joins.

im4LFERROR: index 91 out of valid range, 0..7Моя не знает. Я бы на вашем месте задал этот вопрос в отдельной теме.
...
Рейтинг: 0 / 0
Одни и те же запросы на сервере выполняются дольше чем на локалке
    #34795919
im4LF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LeXa NalBatМоя не знает. Я бы на вашем месте задал этот вопрос в отдельной теме.

что-то я совсем... -)) get_bit("field", 91)

По оптимизации - читаю про set enable_* - наверное тут экспериментально
...
Рейтинг: 0 / 0
Одни и те же запросы на сервере выполняются дольше чем на локалке
    #34795949
alex_v13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
im4LFСейчас появились следующие ошибки:
ERROR: index 91 out of valid range, 0..7

C чем они связаны? Не с конфигурацией ли?

Индекс сдох - перестройте - REINDEX
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Одни и те же запросы на сервере выполняются дольше чем на локалке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]