powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / медленные запросы в POSTGRESQL
12 сообщений из 12, страница 1 из 1
медленные запросы в POSTGRESQL
    #38561328
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Сервер: Debian (16 гигов оперативки)
почему то запросы выполняются медленнее если это касается двух таблиц

Код: sql
1.
2.
3.
4.
5.
6.
7.
update mb__model2serv_all set "price" = 
        (
               select "priceAll" FROM mb__price2item 
                    WHERE mb__price2item."itemId" = mb__model2serv_all."linkId" 
                              and mb__price2item."priceRegionId" = mb__model2serv_all."regionId"
         )
       where mb__model2serv_all.price = 'Звоните'



Данный запрос должен затронуть около 409 т. записей, и при этом изменяет значения только одного поле, в общем в этой таблице 1,3 млн. записей.

настройки БД:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
shared_buffers = 4096MB			# min 128kB
					# (change requires restart)
temp_buffers = 256MB			# min 800kB
#max_prepared_transactions = 0		# zero disables the feature
					# (change requires restart)
# Note:  Increasing max_prepared_transactions costs ~600 bytes of shared memory
# per transaction slot, plus lock space (see max_locks_per_transaction).
# It is not advisable to set max_prepared_transactions nonzero unless you
# actively intend to use prepared transactions.
work_mem = 2048MB				# min 64kB
maintenance_work_mem = 2048MB		# min 1MB
#max_stack_depth = 2MB			# min 100kB


поставил все по максимуму сколько смог ))) но все равно запросы также медленее

Кто нибудь сможет с правильной настройкой БД ?

Спасибо!

как быть ?
...
Рейтинг: 0 / 0
медленные запросы в POSTGRESQL
    #38561339
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max aka max, покажите:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select version();

explain
update mb__model2serv_all set "price" = 
        (
               select "priceAll" FROM mb__price2item 
                    WHERE mb__price2item."itemId" = mb__model2serv_all."linkId" 
                              and mb__price2item."priceRegionId" = mb__model2serv_all."regionId"
         )
       where mb__model2serv_all.price = 'Звоните';
...
Рейтинг: 0 / 0
медленные запросы в POSTGRESQL
    #38561345
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёш,

Извиняюсь, забыл версию указать:
select version() :
PostgreSQL 9.1.11 on x86_64-unknown-linux-gnu, compiled by gcc (Debian 4.7.2-5) 4.7.2, 64-bit

а explain выдал:

Update on mb__model2serv_all (cost=0.00..17198376343.21 rows=365411 width=242)
-> Seq Scan on mb__model2serv_all (cost=0.00..17198376343.21 rows=365411 width=242)
Filter: ((price)::text = 'Звоните'::text)
SubPlan 1
-> Seq Scan on mb__price2item (cost=0.00..47064.65 rows=1 width=8)
Filter: (("itemId" = mb__model2serv_all."linkId") AND ("priceRegionId" = mb__model2serv_all."regionId"))
...
Рейтинг: 0 / 0
медленные запросы в POSTGRESQL
    #38561347
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
таблица mb__model2serv_all не использует никаких автоинкрементов и индексов
...
Рейтинг: 0 / 0
медленные запросы в POSTGRESQL
    #38561349
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max aka max,

Код: plaintext
1.
shared_buffers = 4096MB
work_mem = 2048MB
если work_mem будет реально использован запросом, то такой настройки хватит на (16GB - 4GB) / 2GB приблизительно 6 конкурентных сессий максимум.
...
Рейтинг: 0 / 0
медленные запросы в POSTGRESQL
    #38561352
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max aka max, клёвый план, у Вас mb__price2item табличка 409 тысяч раз целиком просматривается, для каждой изменяемой строчки из mb__model2serv_all делается SubPlan 1 Seq Scan on mb__price2item :)
...
Рейтинг: 0 / 0
медленные запросы в POSTGRESQL
    #38561359
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёш,

балин (( был вынужден написать такой запрос, так как update table1 set field1=table2.field2 from table2 where table1.id = table2.id не работает
...
Рейтинг: 0 / 0
медленные запросы в POSTGRESQL
    #38561363
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
max aka max,

Код: sql
1.
2.
3.
4.
5.
explain
update mb__model2serv_all set "price" = mb__price2item."priceAll"
from mb__price2item
where mb__price2item."itemId" = mb__model2serv_all."linkId"
and mb__model2serv_all."price" = 'Звоните'


выдает
Код: result
1.
2.
3.
4.
5.
6.
Update on mb__model2serv_all  (cost=57125.97..576110.72 rows=1768870 width=256)
  ->  Hash Join  (cost=57125.97..576110.72 rows=1768870 width=256)
        Hash Cond: (mb__model2serv_all."linkId" = mb__price2item."itemId")
        ->  Seq Scan on mb__model2serv_all  (cost=0.00..435522.06 rows=365411 width=242)
              Filter: ((price)::text = 'Звоните'::text)
        ->  Hash  (cost=40357.10..40357.10 rows=1341510 width=22)
              ->  Seq Scan on mb__price2item  (cost=0.00..40357.10 rows=1341510 width=22)
...
Рейтинг: 0 / 0
медленные запросы в POSTGRESQL
    #38561364
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
max aka max,

ну вот, два скана, а не 100500 тыщь
...
Рейтинг: 0 / 0
медленные запросы в POSTGRESQL
    #38561378
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Misha Tyurin,

спасибо )
...
Рейтинг: 0 / 0
медленные запросы в POSTGRESQL
    #38561379
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёш,

Спасибо!
...
Рейтинг: 0 / 0
медленные запросы в POSTGRESQL
    #38561388
max aka max
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
max aka max,

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


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