powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / медленный PARSE
8 сообщений из 8, страница 1 из 1
медленный PARSE
    #39508868
kukurzik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PG 8.4
лог забивается тоннами однотипных криков.
Запросы разные, объединяет их orm-овская гигантомания.
при этом время выполнения самих запросов в разы, а то и на порядок меньше.

на 9.4 таких странностей не было замечено.

Чем можно объяснить столь неподобающее поведение? в какую сторону копать?


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
LOG:  duration: 125.000 ms  parse S_3324:
 select odpaymente0_.id as id66_, odpaymente0_.ASObject as ASObject66_, odpaymente0_.id_baseCurrency as id3_66_, odpaymente0_.id_currency as id4_66_, odpaymente0_.dateCommit as dateCommit66_, odpaymente0_.dateCreate as dateCreate66_, odpaymente0_.numberField as numberFi7_66_, odpaymente0_.originalPaymentNumber as original8_66_, odpaymente0_.paymentClass as paymentC9_66_, odpaymente0_.paymentStatus as payment10_66_, odpaymente0_.paymentType as payment11_66_, odpaymente0_.id_Purchase as id15_66_, odpaymente0_.success_processed as success12_66_, odpaymente0_.sumPay as sumPay66_, odpaymente0_.sumPayBaseCurrency as sumPayB14_66_, odpaymente0_1_.amount as amount123_, odpaymente0_1_.authcode as authcode123_, odpaymente0_1_.bank_type as bank3_123_, odpaymente0_1_.bankid as bankid123_, odpaymente0_1_.card_hash as card5_123_, odpaymente0_1_.cardType as cardType123_, odpaymente0_1_.cardnumber as cardnumber123_, odpaymente0_1_.cashtransdate as cashtran8_123_, odpaymente0_1_.cashtransid as cashtran9_123_, odpaymente0_1_.hostTransId as hostTra10_123_, odpaymente0_1_.merchantid as merchantid123_, odpaymente0_1_.message as message123_, odpaymente0_1_.operationCode as operati13_123_, odpaymente0_1_.refNumber as refNumber123_, odpaymente0_1_.responseCode as respons15_123_, odpaymente0_1_.resultCode as resultCode123_, odpaymente0_1_.status as status123_, odpaymente0_1_.terminalid as terminalid123_, odpaymente0_3_.accountId as accountId129_, odpaymente0_3_.accountType as accountT2_129_, odpaymente0_3_.authCode as authCode129_, odpaymente0_3_.cancelBonuses as cancelBo4_129_, odpaymente0_3_.cardNumber as cardNumber129_, odpaymente0_4_.card_number as card1_131_, odpaymente0_4_.partner_id as partner2_131_, odpaymente0_4_.terminal_id as terminal3_131_, odpaymente0_4_.transaction_id as transact4_131_, odpaymente0_5_.ChangeCash as ChangeCash132_, odpaymente0_6_.datetime_act as datetime1_135_, odpaymente0_6_.slip_act as slip2_135_, odpaymente0_6_.id_trans_act as id3_135_, odpaymente0_6_.balance as balance135_, odpaymente0_6_.clientID as clientID135_, odpaymente0_6_.clientIDType as clientID6_135_, odpaymente0_6_.datetime_deact as datetime7_135_, odpaymente0_6_.slip_deact as slip8_135_, odpaymente0_6_.id_trans_deact as id9_135_, odpaymente0_6_.location as location135_, odpaymente0_6_.online_deact as online11_135_, odpaymente0_6_.partnerID as partnerID135_, odpaymente0_6_.terminal as terminal135_, odpaymente0_7_.activationDateTime as activati1_137_, odpaymente0_7_.activationSlip as activati2_137_, odpaymente0_7_.activationTransactionID as activati3_137_, odpaymente0_7_.balance as balance137_, odpaymente0_7_.clientID as clientID137_, odpaymente0_7_.clientIDType as clientID6_137_, odpaymente0_7_.deactivationDateTime as deactiva7_137_, odpaymente0_7_.deactivationSlip as deactiva8_137_, odpaymente0_7_.deactivationTransactionID as deactiva9_137_, odpaymente0_7_.location as location137_, odpaymente0_7_.online_deact as online11_137_, odpaymente0_7_.partnerID as partnerID137_, odpaymente0_7_.terminal as terminal137_, odpaymente0_8_.bank as bank139_, odpaymente0_8_.bankProduct as bankProd2_139_, odpaymente0_8_.contractNum as contract3_139_, odpaymente0_8_.FIO as FIO139_, odpaymente0_9_.amount as amount141_, odpaymente0_9_.authCode as authCode141_, odpaymente0_9_.cardNumberTail as cardNumb3_141_, odpaymente0_9_.checkNumber as checkNum4_141_, odpaymente0_10_.amountCard as amountCard142_, odpaymente0_10_.cardNumber as cardNumber142_, odpaymente0_11_.cancelBonuses as cancelBo1_147_, odpaymente0_11_.cardNumber as cardNumber147_, case when odpaymente0_2_.id is not null then 2 when odpaymente0_1_.id is not null then 1 when odpaymente0_3_.id is not null then 3 when odpaymente0_4_.id is not null then 4 when odpaymente0_5_.id is not null then 5 when odpaymente0_6_.id is not null then 6 when odpaymente0_7_.id is not null then 7 when odpaymente0_8_.id is not null then 8 when odpaymente0_9_.id is not null then 9 when odpaymente0_10_.id is not null then 10 when odpaymente0_11_.id is not null then 11 when odpaymente0_.id is not null then 0 end as clazz_ 
from OD_Payment odpaymente0_ 
left outer join od_bankcardpayment odpaymente0_1_ on odpaymente0_.id=odpaymente0_1_.id
left outer join od_childrencardpayment odpaymente0_2_ on odpaymente0_.id=odpaymente0_2_.id 
left outer join od_payment_bonus_card odpaymente0_3_ on odpaymente0_.id=odpaymente0_3_.id 
left outer join od_payment_bonus_sberbank odpaymente0_4_ on odpaymente0_.id=odpaymente0_4_.id
left outer join OD_CashPayment odpaymente0_5_ on odpaymente0_.id=odpaymente0_5_.id 
left outer join od_payment_cft_gift_card odpaymente0_6_ on odpaymente0_.id=odpaymente0_6_.id
left outer join od_payment_cft_gift_egc odpaymente0_7_ on odpaymente0_.id=odpaymente0_7_.id
left outer join od_payment_consumer_credit odpaymente0_8_ on odpaymente0_.id=odpaymente0_8_.id
left outer join od_payment_external_bank_terminal odpaymente0_9_ on odpaymente0_.id=odpaymente0_9_.id
left outer join od_payment_gift_card odpaymente0_10_ on odpaymente0_.id=odpaymente0_10_.id 
left outer join od_payment_siebel_bonus_card odpaymente0_11_ on odpaymente0_.id=odpaymente0_11_.id 
where (odpaymente0_.paymentClass in ($1 , $2)) and (odpaymente0_.id_Purchase in ($3 , $4))
...
Рейтинг: 0 / 0
медленный PARSE
    #39508871
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kukurzik,

в parse входит весь планировщик и оптимизатор запросов. Который за много лет между 9.4 и 8.4 не стоял на месте.
Затем могут быть разные схемы данных (число индексов, например) и настройки баз. Default_statistics_target, join_collapse_limit (особенно для джойна 12 таблиц, с их 12! вариантами объединения) и прочие милые вещи. А может и железо у вас разное.
...
Рейтинг: 0 / 0
медленный PARSE
    #39508964
kukurzik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Melkij,
благодарю за наводку.
join_collapse_limit и geqo_threshold
оказался задранным, понижение до дефолтных существенно помогло.

но вот ещё странный ребус
иногда проскакивает такая гадость:

Код: sql
1.
2.
3.
4.
5.
6.
7.
duration: 204.000 ms  bind <s_635>
select *
 from in_files  
 where status=$1 
 order by receive_date 
 limit $2
[BIND] DETAIL:  parameters: $1 = '0', $2 = '100'




почему BINDу может быть так плохо?
...
Рейтинг: 0 / 0
медленный PARSE
    #39508976
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kukurzikпочему BINDу может быть так плохо?
Самому интересно...
Это по коду где-то здесь
...
Рейтинг: 0 / 0
медленный PARSE
    #39509060
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kukurzik,

строчке с `BIND` в логе предшествует строка с `PARSE`?

какова общая нагрузка на сервере по CPU и по утилизации дисков?

покажите вывод такого запроса:
Код: sql
1.
SELECT name,setting FROM pg_settings WHERE source NOT IN ('default','override') UNION ALL SELECT 'version',version();
...
Рейтинг: 0 / 0
медленный PARSE
    #39509155
kukurzik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov,

с цпу в порядке, диски справляются.

"autovacuum";"on"
"autovacuum_analyze_scale_factor";"0.05"
"autovacuum_analyze_threshold";"10"
"autovacuum_freeze_max_age";"200000000"
"autovacuum_max_workers";"3"
"autovacuum_vacuum_cost_delay";"10"
"autovacuum_vacuum_scale_factor";"0.05"
"checkpoint_completion_target";"0.9"
"checkpoint_segments";"100"
"checkpoint_timeout";"3600"
"client_encoding";"UNICODE"
"client_min_messages";"notice"
"custom_variable_classes";"pg_stat_statements"
"DateStyle";"ISO, DMY"
"default_text_search_config";"pg_catalog.russian"
"effective_cache_size";"1572864"
"from_collapse_limit";"9"
"fsync";"on"
"full_page_writes";"on"
"join_collapse_limit";"9"
"lc_messages";"Russian_Russia.1251"
"lc_monetary";"Russian_Russia.1251"
"lc_numeric";"Russian_Russia.1251"
"lc_time";"Russian_Russia.1251"
"listen_addresses";"*"
"log_checkpoints";"on"
"log_destination";"stderr"
"log_directory";"pg_log"
"log_filename";"postgresql-%Y-%m-%d.log"
"log_line_prefix";"%t %p %u@%d from %h [vxid:%v txid:%x] [%i] "
"log_lock_waits";"on"
"log_min_duration_statement";"100"
"log_min_messages";"notice"
"log_rotation_age";"1440"
"log_rotation_size";"32768"
"log_statement";"ddl"
"log_temp_files";"0"
"log_timezone";"Europe/Moscow"
"logging_collector";"on"
"maintenance_work_mem";"262144"
"max_connections";"1000"
"max_prepared_transactions";"100"
"max_stack_depth";"2048"
"pg_stat_statements.max";"10000"
"pg_stat_statements.track";"all"
"port";"5432"
"shared_buffers";"131072"
"shared_preload_libraries";"pg_stat_statements"
"synchronous_commit";"off"
"temp_buffers";"2048"
"TimeZone";"Europe/Moscow"
"timezone_abbreviations";"Default"
"wal_buffers";"128"
"wal_sync_method";"open_datasync"
"work_mem";"65536"
"version";"PostgreSQL 8.4.9, compiled by Visual C++ build 1400, 32-bit"
...
Рейтинг: 0 / 0
медленный PARSE
    #39509162
kukurzik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
строчке с `BIND` в логе предшествует строка с `PARSE`

логирование не полное, в некоторых случаях предшествует.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
 [vxid:149/121022 txid:0] [PARSE] LOG:  duration: 422.000 ms  parse S_2: select distinct advertisea0_.id as id307_, advertisea0_.cash_number as cash2_307_, advertisea0_.file_name as file3_307_, advertisea0_.import_date as import4_307_, advertisea0_.objects_count as objects5_307_, advertisea0_.shop_number as shop6_307_ from discounts_file_for_cashes advertisea0_ where (advertisea0_.cash_number is null or advertisea0_.cash_number=$1) and (advertisea0_.shop_number is null or advertisea0_.shop_number=$2) and advertisea0_.id>$3
[vxid:315/191690 txid:0] [PARSE] LOG:  duration: 110.000 ms  parse <unnamed>: select min(trsfilepac0_.packet_id) as col_0_0_ from trs_file_packets_for_send trsfilepac0_ where trsfilepac0_.data_type=$1 and trsfilepac0_.shop_number=$2 and trsfilepac0_.cash_number=$3 and trsfilepac0_.packet_id>$4 limit $5
[vxid:213/499 txid:0] [PARSE] LOG:  duration: 563.000 ms  parse <unnamed>: select trsfilelas0_.cash_number as cash1_514_0_, trsfilelas0_.data_type as data2_514_0_, trsfilelas0_.shop_number as shop3_514_0_, trsfilelas0_.packet_id as packet4_514_0_ from trs_file_packets_last trsfilelas0_ where trsfilelas0_.cash_number=$1 and trsfilelas0_.data_type=$2 and trsfilelas0_.shop_number=$3
[vxid:422/117930 txid:0] [PARSE] LOG:  duration: 672.000 ms  parse <unnamed>: select trsfilelas0_.cash_number as cash1_514_0_, trsfilelas0_.data_type as data2_514_0_, trsfilelas0_.shop_number as shop3_514_0_, trsfilelas0_.packet_id as packet4_514_0_ from trs_file_packets_last trsfilelas0_ where trsfilelas0_.cash_number=$1 and trsfilelas0_.data_type=$2 and trsfilelas0_.shop_number=$3
[vxid:316/152196 txid:0] [PARSE] LOG:  duration: 625.000 ms  parse <unnamed>: select trsfilelas0_.cash_number as cash1_514_0_, trsfilelas0_.data_type as data2_514_0_, trsfilelas0_.shop_number as shop3_514_0_, trsfilelas0_.packet_id as packet4_514_0_ from trs_file_packets_last trsfilelas0_ where trsfilelas0_.cash_number=$1 and trsfilelas0_.data_type=$2 and trsfilelas0_.shop_number=$3
[vxid:204/11093 txid:0] [PARSE] LOG:  duration: 547.000 ms  parse <unnamed>: select trsfilelas0_.cash_number as cash1_514_0_, trsfilelas0_.data_type as data2_514_0_, trsfilelas0_.shop_number as shop3_514_0_, trsfilelas0_.packet_id as packet4_514_0_ from trs_file_packets_last trsfilelas0_ where trsfilelas0_.cash_number=$1 and trsfilelas0_.data_type=$2 and trsfilelas0_.shop_number=$3
[vxid:108/50676 txid:0] [PARSE] LOG:  duration: 500.000 ms  parse S_2: select distinct advertisea0_.id as id307_, advertisea0_.cash_number as cash2_307_, advertisea0_.file_name as file3_307_, advertisea0_.import_date as import4_307_, advertisea0_.objects_count as objects5_307_, advertisea0_.shop_number as shop6_307_ from discounts_file_for_cashes advertisea0_ where (advertisea0_.cash_number is null or advertisea0_.cash_number=$1) and (advertisea0_.shop_number is null or advertisea0_.shop_number=$2) and advertisea0_.id>$3 
[vxid:490/281239 txid:0] [BIND] LOG:  duration: 110.000 ms  bind <unnamed>: select min(trsfilepac0_.packet_id) as col_0_0_ from trs_file_packets_for_send trsfilepac0_ where trsfilepac0_.data_type=$1 and trsfilepac0_.shop_number=$2 and trsfilepac0_.cash_number=$3 and trsfilepac0_.packet_id>$4 limit $5
[vxid:490/281239 txid:0] [BIND] DETAIL:  parameters: $1 = 'CASH_TEMPLATE', $2 = '24', $3 = '3', $4 = '574', $5 = '2'
[vxid:447/449 txid:0] [BIND] LOG:  duration: 110.000 ms  bind <unnamed>: select min(trsfilepac0_.packet_id) as col_0_0_ from trs_file_packets_for_send trsfilepac0_ where trsfilepac0_.data_type=$1 and trsfilepac0_.shop_number=$2 and trsfilepac0_.cash_number=$3 and trsfilepac0_.packet_id>$4 limit $5
[vxid:447/449 txid:0] [BIND] DETAIL:  parameters: $1 = 'cards_props', $2 = '117', $3 = '1', $4 = '24', $5 = '2'
...
Рейтинг: 0 / 0
медленный PARSE
    #39509175
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kukurzik,

как часто появляется медленный bind? когда появляется - они приходят сразу пачкой? можно ли посмотреть вывод команды top (именно top, а не htop и т.п.) в момент проблемы, если она достаточно продолжительная? в первую очередь интересно максимальное значение %sy.

8.4 уже 3 года не поддерживается, да и даже для него у вас совсем не последняя версия стоит (8.4.22). давно пора обновиться.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / медленный PARSE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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