Size: a a a

pgsql – PostgreSQL

2021 January 21

SB

Sergey Bezrukov in pgsql – PostgreSQL
Igor Chizhov
Хочу опробовать этот совет, но стоит ли терять на него время?

SELECT * FROM <table>
SELECT <primary key fields> FROM <table> ORDER BY <primary key fields>
SELECT <indexed fields> FROM <table> ORDER BY <indexed fields>
Первый пункт точно нет, если таблицы большие.  
Я бы начал с analyze <table> для каждой таблицы
источник

IC

Igor Chizhov in pgsql – PostgreSQL
analyze <table> делается после TRUNCATE ... INSERT
источник

IC

Igor Chizhov in pgsql – PostgreSQL
Вот текст процедуры

   TRUNCATE TABLE schemaname.tmp_table;
   INSERT INTO schemaname.tmp_table
   SELECT [перечислены колонки] FROM fdw_schema.foreign_table;

   ANALYZE schemaname.tmp_table;  

   ALTER TABLE schemaname.table RENAME TO old_table;
   ALTER TABLE schemaname.tmp_table RENAME TO table;
   CREATE OR REPLACE VIEW schemaname.v_table AS SELECT * FROM schemaname.table;
   ALTER TABLE schemaname.old_table RENAME TO tmp_table;
источник

IC

Igor Chizhov in pgsql – PostgreSQL
Вроде и кэш забит, а тормоза после этого жесточайшие
источник

IC

Igor Chizhov in pgsql – PostgreSQL
Вьюха v_table должна быть доступна на чтение непрерывно, поэтому сделано через временную таблицу.
Использование temporary table увеличит время перегрузки данных минимум в 1.5 раза, поэтому сделан некий swith table
источник

IC

Igor Chizhov in pgsql – PostgreSQL
Также вижу, что после выполнения запускается автовакуум и начинает маслать таблицу примерно 15 минут. Не пойму, зачем? Но дело не в нём, после него такие же тормоза при первом запуске.
источник

DG

Dimitri Grinkevich in pgsql – PostgreSQL
Igor Chizhov
Если тыкать приложение вручную, то помогает, второй юзер уже работает нормально. Но ночью этого юзера нет, а первый бедолага придёт на Дальнем Востоке и будет ждать...
надо по крону запустить юзера нулевого меридиана, кек
источник

IC

Igor Chizhov in pgsql – PostgreSQL
Согласен, но BI система не умеет запускать отчеты сама. Хотя вроде были костыли. Можно также достать запросы из неё, но их пара сотен...
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Igor Chizhov
Коллеги, подскажите, как грамотно прогреть кэш сервера? Большие таблицы полностью обновляются раз в сутки через TRUNCATE ... INSERT, после этого имеем жесточайшие тормоза. Разогревать на пользователях мне кажется неправильным, легче ночью запустить некий запрос или функцию.
pg_prewarm, к сожалению, не подходит, облако не поддерживает это расширение.

P.S. Оперативы достаточно
Это достаточно бесполезно делать на общей загрузке.
А если загрузка специфичная, то есть, выполняются всё время одни и те же запросы, то ты сам должен знать, каковы они и как можно прогреть кэш.

На всяческих тестах типа TPC прогревают просто несколькими прогонами тех же тестов , но без замера.
источник

D

Dmitriy in pgsql – PostgreSQL
А у PostgreSQL есть кеш?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Dmitriy
А у PostgreSQL есть кеш?
shared_buffers
источник

D

Dmitriy in pgsql – PostgreSQL
Victor Yegorov
shared_buffers
Спасибо, погляжу
источник

IC

Igor Chizhov in pgsql – PostgreSQL
Ilia Zviagin
Это достаточно бесполезно делать на общей загрузке.
А если загрузка специфичная, то есть, выполняются всё время одни и те же запросы, то ты сам должен знать, каковы они и как можно прогреть кэш.

На всяческих тестах типа TPC прогревают просто несколькими прогонами тех же тестов , но без замера.
Согласен, склоняюсь к прогону запросов. Нагрузка, к счастью, специфичная OLAP, иначе бы я не взялся за эту поделку.
источник

IC

Igor Chizhov in pgsql – PostgreSQL
Victor Yegorov
shared_buffers
Кстати, надо будет посмотреть и приподнять если что.
источник

IC

Igor Chizhov in pgsql – PostgreSQL
Всем спасибо за мнения!
источник

РА

Романов Александр... in pgsql – PostgreSQL
добрый день.
когда я делаю
alter table test_remane rename to test_remane2;
у меня все вью и материализованные вью автоматически меняют в себе код на новое название. а как сделать чтобы они не меняли?
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Романов Александр
добрый день.
когда я делаю
alter table test_remane rename to test_remane2;
у меня все вью и материализованные вью автоматически меняют в себе код на новое название. а как сделать чтобы они не меняли?
это фича. чтобы не менялось можно пробовать создавать SRF функции
источник

AB

Alex Bar in pgsql – PostgreSQL
hi, guys.
переносил схему из одной БД в другую (с ключами -Z9 -Fc)
после рестора размер таблиц у большинства увеличился на порядок
после vacuum full размер сдулся до нормального
что это было?
источник

🌌[

🌌El.Randir/42ᅠ [AD]... in pgsql – PostgreSQL
Есть задача: забираю данные с таблицы по вчерашнему дню.
Нужно поставить на "автообновление" каждую ночь.

Что проще: дропать и создавать табличку эвридэй, или стирать все данные :?
источник

D

Dmitriy in pgsql – PostgreSQL
🌌El.Randir/42ᅠ [AD]
Есть задача: забираю данные с таблицы по вчерашнему дню.
Нужно поставить на "автообновление" каждую ночь.

Что проще: дропать и создавать табличку эвридэй, или стирать все данные :?
Materialized view?
источник