Why avoid long transactions?
The majority of PostgreSQL community clearly understands why long and idle transactions are “bad”. But when you talk about it to the newcomers it’s always a good…
The majority of PostgreSQL community clearly understands why long and idle transactions are “bad”. But when you talk about it to the newcomers it’s always a good…
Parallelism settings and how to accelerate your database performance. Few days ago, when performing a routine audit for our client, we noticed that parallel queries in the…
Overview On the 30th of December 2017, Kernel page-table isolation (PTI) patch had been merged with the mainline. Its main goal was to mitigate the Meltdown…
Everything you always wanted to know about Postgres stats One of the major strengths of PostgreSQL are indexes — they are flexible and cover almost all use…
Everything you always wanted to know about Postgres stats Today’s post is about pg_stat_all_tables. This view contains various statistics about tables usage and may be useful in…
Autovacuum, explained for engineers, new improved version PGConf.eu 2015 Vienna from PostgreSQL-Consulting Lots of things improved, now these slides can be more useful without talk
Среди популярных тем для семинаров:
В процессе Аудита проводится:
* Инстансом является один мастер и реплика под нагрузкой.
** Цена без учета НДС и может варьировать в зависимости от индивидуальных требований клиента. При заключении договора на Поддержку Аудит проводится по сниженной цене. Настоящее предложение не является офертой.
Указанные условия, включая стоимость оказываемых услуг в рублях РФ, не являются офертой, и могут быть изменены в зависимости от согласованных в дальнейшем существенных условий договора и предпочтительной для клиента валюты платежа.
Работая с нами, вы получаете возможность использовать знания и опыт высококвалифицированных специалистов по PostgreSQL для оптимизации работы вашей БД, при этом не меняя состав вашей команды.
Пакет индивидуальных консультаций не имеет “срока годности”, и вы можете обратиться к нам для решения как горящих, так и плановых задач, получения помощи в масштабировании БД и архитектурных решениях*.
Услуга не подразумевает SLA. Для систем с жестким временным режимом мы рекомендуем наши пакеты Поддержки.
Сервера с устаревшими версиями PostgreSQL (9.3 и ниже), а также сервера под управлением ОС Windows тарифицируются по ставке на 50% выше.
Указанные условия, включая стоимость оказываемых услуг в рублях РФ, не являются офертой, и могут быть изменены в зависимости от согласованных в дальнейшем существенных условий договора и предпочтительной для клиента валюты платежа.
* С 9:00 до 18:00 по Мск.
Поддержка от Data Egret — это сочетание регулярных проверок (Health Checks) базы данных, а также техническое сопровождение:
Базовый пакет*
(максимум 1 инстанс) |
Стандартный пакет |
Премиальный пакет |
09:00-18:00 МСК Чат |
09:00-18:00 МСК Чат |
09:00-18:00 МСК Чат |
— | 24/7/365 Аварийный телефон |
24/7/365 Аварийный телефон |
Реакция на аварии — 1 час 09:00-18:00 МСК |
Круглосуточная реакция на аварии — 1 час |
Круглосуточная реакция на аварии — 15 мин |
— | Регулярные проверки БД | Регулярные проверки БД |
до 3-х часов работы DBA в месяц + бонус на первый месяц* |
до 10 часов работы DBA в месяц | до 20 часов работы DBA в месяц |
12 000р. за доп.час работы DBA | 12 000р. за доп.час работы DBA | 10 000р. за доп.час работы DBA |
30 000 р. в месяц# ** | От 80 000 р. в месяц / инстанс# ** | От 160 000 р. в месяц / инстанс# ** |
* Базовый пакет может включать максимум один инстанс. В пакет первого месяца дополнительно бесплатно включены ознакомительные проверки БД. Регулярные проверки БД (HealthChecks) проводятся по инициативе заказчика за счет включенных 3/месяц часов работы DBA. # Инстансом в пакете Стандарт и Базовый является один мастер и одна реплика под нагрузкой, в пакете Премиум — один мастер и до двух реплик под нагрузкой. ** Цена без учета НДС и может варьировать в зависимости от индивидуальных требований клиента. Сервера с устаревшими версиями PostgreSQL (9.3 и ниже), а также сервера под управлением ОС Windows тарифицируются по ставке на 50% выше. |
Кол-во инстансов# PostgreSQL |
Базовый пакет |
Стандартный пакет |
Премиальный пакет |
---|---|---|---|
1 | 30 000 | от 80 000 | от 160 000 |
2 | — | от 120 000 | от 240 000 |
3 | — | от 160 000 | от 320 000 |
>4 | — | По запросу | По запросу |
select case when setting::bigint < 90400 then 'Вы используете старую версию PostgreSQL, которая более не поддерживается сообществом.'||chr(10)|| 'Рекомендуем вам перейти на последнюю актуальную версию как можно скорее.' when setting::bigint < 90500 then 'Вы используете старую версию PostgreSQL, которая пока что поддерживается сообществом.'||chr(10)|| 'Рекомендуем вам перейти на последнюю актуальную версию.' when setting::bigint < 90600 then 'Вы используете достаточно современную версию PostgreSQL, которая активно поддерживается сообществом.'||chr(10)|| 'У вас все неплохо, но можно обновиться и на последнюю актуальную версию при возможности.' when setting::bigint < 120000 then 'Вы пользуетесь одной из самых последних версий PostgreSQL.'||chr(10)|| 'У вас все отлично.' else 'Вы используете версию которая находится в разработке,'||chr(10)|| 'если это production, то рекомендуем вам перейти на стабильную версию PostgreSQL.' end as "Проверка мажорной версии PostgreSQL" , case when setting::bigint between 110003 and 119999 or setting::bigint between 100008 and 109999 or setting::bigint between 90613 and 90699 or setting::bigint between 90517 and 90599 or setting::bigint between 90422 and 90499 then 'У вас стоит один из последних патчей PostgreSQL для вашей версии.'||chr(10)|| 'Похоже вы следите за обновлениями PostgreSQL. Это хороший факт.' else 'Похоже вы не обновляли PostgreSQL, после установки/последнего мажорного обновления, совсем.'||chr (10)|| 'Это плохо, рекомендуем вам обновиться до последней актуальной версии PostgreSQL.' end as "Проверка минорной версии PostgreSQL" , 'Актуальные версии на данный момент следующие, в порядке убывания актуальности:'||chr (10)|| '11.4, 10.9, 9.6.14, 9.5.18, 9.4.23' as "Список актуальных версий" from pg_settings where name = 'server_version_num';
SELECT (clock_timestamp() - xact_start) AS ts_age, state, pid, query FROM pg_stat_activity WHERE query ~ 'autovacuum' AND NOT pid=pg_backend_pid();
SELECT now()-pg_postmaster_start_time() "Uptime", now()-stats_reset "Minutes since stats reset", round(100.0*checkpoints_req/checkpoints,1) "Forced checkpoint ratio (%)", round(min_since_reset/checkpoints,2) "Minutes between checkpoints", round(checkpoint_write_time::numeric/(checkpoints*1000),2) "Average write time per checkpoint (s)", round(checkpoint_sync_time::numeric/(checkpoints*1000),2) "Average sync time per checkpoint (s)", round(total_buffers/pages_per_mb,1) "Total MB written", round(buffers_checkpoint/(pages_per_mb*checkpoints),2) "MB per checkpoint", round(buffers_checkpoint/(pages_per_mb*min_since_reset*60),2) "Checkpoint MBps" FROM ( SELECT checkpoints_req, checkpoints_timed + checkpoints_req checkpoints, checkpoint_write_time, checkpoint_sync_time, buffers_checkpoint, buffers_checkpoint + buffers_clean + buffers_backend total_buffers, stats_reset, round(extract('epoch' from now() - stats_reset)/60)::numeric min_since_reset, (1024.0 * 1024 / (current_setting('block_size')::numeric))pages_per_mb FROM pg_stat_bgwriter ) bg
Запрос покажет статистику по контрольным точкам с момента, когда она в последний раз обнулялась.
Важными показателями будут минуты между контрольными точками и объем записываемой информации.
После идентификации запроса необходимо посмотреть его план. Скопируйте код ниже, который добавит `EXPLAIN (analyze)` в начало вашего запроса, потом запустите запрос.
Будьте осторожны с запросами, которые меняют данные т.к. они будут исполнены!
explain (analyze) select 10/2; /* Вместо select 10/2 вставьте пожалуйста ваш запрос который работает медлено */
При выводе вы получите два параметра — время планирования и время исполнения запроса, например:
Planning time: 3667.361 ms
Execution time: 1.652 ms
В рамках настоящей Политики под информацией Пользователя понимаются:
Информацию Пользователя Оператор может использовать в следующих целях:
Оператор вправе передать информацию Пользователя третьим лицам в следующих случаях:
При обработке информации, являющейся персональными данными Пользователей, Оператор руководствуется Федеральным законом № 152-ФЗ «О персональных данных».