Size: a a a

pgsql – PostgreSQL

2021 March 24

JD

John Doe in pgsql – PostgreSQL
Не могли бы подсказать как правильно использовать SELECT внутри блока IF? В переменную результат запроса сохранять научился, а вот результат выполнения запроса как сравнить - не совсем понимаю.

Пытаюсь сделать что-то подобное:

DO $$

BEGIN

 IF 'select 1' > 0 THEN RAISE EXCEPTION 'Больше нуля';
 END IF

END $$;

Ругается на синтаксис. Через execute не помогает.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
Нет, из postgresql.conf взял выдержку.

Насчёт EXPLAIN
вот что сейчас есть

Insert on public.table  (cost=0.00..10.00 rows=500 width=1350) (actual time=1368.299..1368.300 rows=0 loops=1)
  Buffers: shared hit=5962 read=229 dirtied=396 written=85
  ->  Values Scan on "*VALUES*"  (cost=0.00..10.00 rows=500 width=1350) (actual time=0.030..3.947 rows=500 loops=1)
        Output: "*VALUES*".column1, "*VALUES*".column2, "*VALUES*".column3, "*VALUES*".column4, "*VALUES*".column5, "*VALUES*".column6, "*VALUES*".column7, timezone('utc'::text, now()), "*VALUES*".column8, "*VALUES*".column9, "*VALUES*".column10, "*VALUES*".column11, nextval('table_id_seq'::regclass), "*VALUES*".column12
        Buffers: shared hit=500 dirtied=1
Settings: effective_cache_size = '6GB', effective_io_concurrency = '2', max_parallel_workers = '6', max_parallel_workers_per_gather = '3', work_mem = '7061kB'
Planning Time: 5.663 ms
Execution Time: 1368.360 ms
(8 rows)

Time: 1409.785 ms (00:01.410)
> Нет, из postgresql.conf взял выдержку.

Так проверьте эти параметры (те, которых в explain запроса нет, самый важный — shared_buffers) с помощью pg_settings или SHOW (мало ли).

>  Buffers: shared hit=5962 read=229 dirtied=396 written=85

И это после нескольких таких INSERT (не на "холодной" базе)?
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
> Нет, из postgresql.conf взял выдержку.

Так проверьте эти параметры (те, которых в explain запроса нет, самый важный — shared_buffers) с помощью pg_settings или SHOW (мало ли).

>  Buffers: shared hit=5962 read=229 dirtied=396 written=85

И это после нескольких таких INSERT (не на "холодной" базе)?
> Так проверьте эти параметры (те, которых в explain запроса нет, самый важный — shared_buffers) с помощью pg_settings или SHOW (мало ли).

Хорошо, сейчас чекну в pg_settings

> И это после нескольких таких INSERT (не на "холодной" базе)?

БД сейчас работает и принимает запросы в штатном режиме.
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
> Нет, из postgresql.conf взял выдержку.

Так проверьте эти параметры (те, которых в explain запроса нет, самый важный — shared_buffers) с помощью pg_settings или SHOW (мало ли).

>  Buffers: shared hit=5962 read=229 dirtied=396 written=85

И это после нескольких таких INSERT (не на "холодной" базе)?
Проверил SHOW

параметры имеют те же значения, что я скинул выше.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
> Так проверьте эти параметры (те, которых в explain запроса нет, самый важный — shared_buffers) с помощью pg_settings или SHOW (мало ли).

Хорошо, сейчас чекну в pg_settings

> И это после нескольких таких INSERT (не на "холодной" базе)?

БД сейчас работает и принимает запросы в штатном режиме.
Хмм... но "реальных" записи и чтения как-то многовато, тем не менее — не хватает RAM под базу (постоянно вытесняются страницы), может быть?
Проверьте bloat, на всякий случай.
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
Хмм... но "реальных" записи и чтения как-то многовато, тем не менее — не хватает RAM под базу (постоянно вытесняются страницы), может быть?
Проверьте bloat, на всякий случай.
Да, насчёт RAM согласен, кстати

Да и диск HDD на SSD надо поменять

> Проверьте bloat, на всякий случай.

Да-да, вот сейчас гуглить буду.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
Да, насчёт RAM согласен, кстати

Да и диск HDD на SSD надо поменять

> Проверьте bloat, на всякий случай.

Да-да, вот сейчас гуглить буду.
Кстати, можно же мониторингом в OS посмотреть, сколько реально читает и пишет на диск процесс вставки (в PostgreSQL нельзя получить эту информацию). Т.е. вот из тех " Buffers: read=229 written=85" настоящих чтений и записей может быть хоть ноль. ;)
источник

SM

Setplus Mac in pgsql – PostgreSQL
Yaroslav Schekin
Кстати, можно же мониторингом в OS посмотреть, сколько реально читает и пишет на диск процесс вставки (в PostgreSQL нельзя получить эту информацию). Т.е. вот из тех " Buffers: read=229 written=85" настоящих чтений и записей может быть хоть ноль. ;)
Это через iostat?)
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Setplus Mac
Это через iostat?)
Ну да, и подобные.
источник

BS

Baisak Sagynov in pgsql – PostgreSQL
всем привет, провел тест через pgbench, удивило что через настройки по умолчанию обработка транзакций и запросов выше чем те которые были сделаны после изменений конфигов по рекомендациям https://pgtune.leopard.in.ua/#/
источник

BS

Baisak Sagynov in pgsql – PostgreSQL
машина: 2 проца, 2 гб озу, дигиталошн, постгрес 9.3, убунту 14.04, размер бд 2334 MB
источник

BS

Baisak Sagynov in pgsql – PostgreSQL
почему так? вот результаты:
источник

BS

Baisak Sagynov in pgsql – PostgreSQL
pgbench -h localhost -p 5432 -U btest -c 10 -j 2 -T 600 benchmark

transaction type: TPC-B (sort of)
scaling factor: 150
query mode: simple
number of clients: 10
number of threads: 2
duration: 600 s
number of transactions actually processed: 789114
tps = 1315.092368 (including connections establishing)
tps = 1315.270392 (excluding connections establishing)

pgbench -h localhost -p 5432 -U btest -c 100 -j 2 -T 600 benchmark

transaction type: TPC-B (sort of)
scaling factor: 150
query mode: simple
number of clients: 100
number of threads: 2
duration: 600 s
number of transactions actually processed: 684212
tps = 1140.039310 (including connections establishing)
tps = 1140.649854 (excluding connections establishing)

- ******-изменить настройки протестировать
mixed type of application
# DB Version: 9.4
# OS Type: linux
# DB Type: mixed
# Total Memory (RAM): 1 GB
# CPUs num: 2
# Data Storage: ssd

max_connections = 100
shared_buffers = 256MB
effective_cache_size = 768MB
maintenance_work_mem = 64MB
checkpoint_completion_target = 0.9
wal_buffers = 7864kB
default_statistics_target = 100
random_page_cost = 1.1
effective_io_concurrency = 200
work_mem = 1310kB
checkpoint_segments = 32

transaction type: TPC-B (sort of)
scaling factor: 150
query mode: simple
number of clients: 10
number of threads: 2
duration: 600 s
number of transactions actually processed: 777069
tps = 1295.012785 (including connections establishing)
tps = 1295.139035 (excluding connections establishing)

transaction type: TPC-B (sort of)
scaling factor: 150
query mode: simple
number of clients: 100
number of threads: 2
duration: 600 s
number of transactions actually processed: 680753
tps = 1134.245075 (including connections establishing)
tps = 1134.861265 (excluding connections establishing)
источник

B

Boxlogo in pgsql – PostgreSQL
Привет, поддскажите оптамальный вариант запроса postgres, для вставки и обновления всего содержимого из одной таблицв в другую. Использую в качестве встваки insert into, но не получается прописать on conflict do update set, где происходит обновление уже существующей записи
источник

ВМ

Владимир Муковоз... in pgsql – PostgreSQL
Baisak Sagynov
всем привет, провел тест через pgbench, удивило что через настройки по умолчанию обработка транзакций и запросов выше чем те которые были сделаны после изменений конфигов по рекомендациям https://pgtune.leopard.in.ua/#/
вот и мне pgtune не зашёл, ручками подбирал исходя из статистики запросов.
источник

BS

Baisak Sagynov in pgsql – PostgreSQL
Boxlogo
Привет, поддскажите оптамальный вариант запроса postgres, для вставки и обновления всего содержимого из одной таблицв в другую. Использую в качестве встваки insert into, но не получается прописать on conflict do update set, где происходит обновление уже существующей записи
может на время отключить клиентов?
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Baisak Sagynov
машина: 2 проца, 2 гб озу, дигиталошн, постгрес 9.3, убунту 14.04, размер бд 2334 MB
Для 9.5 уже жизненный цикл заканчивается, зачем вы используете ещё более древнюю версию?
источник

BS

Baisak Sagynov in pgsql – PostgreSQL
Михаил Шурутов
Для 9.5 уже жизненный цикл заканчивается, зачем вы используете ещё более древнюю версию?
меня тока не давно взяли на работу, я тока начал изуать постгрес, дальше этот же тест сделаю после таких изменений:
- настроить linux протестировать

- обновить ядро протестировать

- обновить версию на 9.6 протестировать
источник

BS

Baisak Sagynov in pgsql – PostgreSQL
Владимир Муковоз
вот и мне pgtune не зашёл, ручками подбирал исходя из статистики запросов.
у вас есть шпаргалка как вы все это делали? можете поделится?
источник

МШ

Михаил Шурутов... in pgsql – PostgreSQL
Baisak Sagynov
всем привет, провел тест через pgbench, удивило что через настройки по умолчанию обработка транзакций и запросов выше чем те которые были сделаны после изменений конфигов по рекомендациям https://pgtune.leopard.in.ua/#/
Я для старта предпочитаю вот этот конфигуратор: http://pgconfigurator.cybertec.at/
источник