Size: a a a

pgsql – PostgreSQL

2021 January 08

AB

Andrey Borodin in pgsql – PostgreSQL
но вообще Андрес вот работает надо улучшением работы с диском и внедрением io uring
источник

LB

Let Eat Bee in pgsql – PostgreSQL
ну да, только у меня другой случай  - относительно спокойный сервер и только некоторые запросы портят 90  percentile .
источник

AB

Andrey Borodin in pgsql – PostgreSQL
ну индекс скан очень сложно оптимизировать с точки зрения чтения диска
источник

AB

Andrey Borodin in pgsql – PostgreSQL
можно распараллелить джойн какой-нибудь только
источник

AB

Andrey Borodin in pgsql – PostgreSQL
да и не будет 200 чтения диска в индекс скане, 5-6 будет
источник

AB

Andrey Borodin in pgsql – PostgreSQL
а если там туча сканов - то они в основном будут по блокам в Кеше
источник

LB

Let Eat Bee in pgsql – PostgreSQL
Andrey Borodin
ну индекс скан очень сложно оптимизировать с точки зрения чтения диска
ну пройтись по индексу, набрать список страниц, которых хоется, затем через io_uring запросить все страницы с хипа. сам доступ к индексу врят ли, да, но к хипу уже можно.
источник

LB

Let Eat Bee in pgsql – PostgreSQL
Andrey Borodin
да и не будет 200 чтения диска в индекс скане, 5-6 будет
у меня на сетевом диске прям 1:1 корреляция между Buffers read и Execution time. Что в целом укладывается в  1ms latency на чтение таких дисков
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Let Eat Bee
ну пройтись по индексу, набрать список страниц, которых хоется, затем через io_uring запросить все страницы с хипа. сам доступ к индексу врят ли, да, но к хипу уже можно.
Ну так bitmap heap scan и сейчас prefetch-ится, а для обычного index scan "в среднем" ничего не выиграешь, казалось бы.
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Let Eat Bee
у меня на сетевом диске прям 1:1 корреляция между Buffers read и Execution time. Что в целом укладывается в  1ms latency на чтение таких дисков
базы они не про сетевые диски
источник

LB

Let Eat Bee in pgsql – PostgreSQL
Victor Yegorov
базы они не про сетевые диски
ну, всё виртуальное и по сети :) что есть уж
источник

VY

Victor Yegorov in pgsql – PostgreSQL
это же не мне, это на следующее сообщение ответ
источник

LB

Let Eat Bee in pgsql – PostgreSQL
Yaroslav Schekin
Ну так bitmap heap scan и сейчас prefetch-ится, а для обычного index scan "в среднем" ничего не выиграешь, казалось бы.
в bitmap на каждую страницу прям дёргают два сискола (fadvise + read)?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Victor Yegorov
это же не мне, это на следующее сообщение ответ
Да, это какой-то глюк в клиенте, видимо. Извините.
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Vyn Da Polozh
Парни, привет, подскажите,
Как вставить функцию в шаблонизированную строку запроса?
Поле created имеет тип timezone. Хочу привести исходные данные к этому типу с помощью postgre'вской функции TO_TIMESTAMP().
Как это сделать?
INSERT INTO data.source(created, created_utc) VALUES($1, $2)

Если вставляю функцию непосредственно в значения, то такая ошибка:
error: invalid input syntax for type timestamp with time zone: "TO_TIMESTAMP('1581569438')"

Если делаю так:
INSERT INTO data.source(created, created_utc) VALUES(TO_TIMESTAMP('$1'), TO_TIMESTAMP('$2'))
То ошибка следующая:
duplicate key value violates unique constraint "source_pkey"
> Если вставляю функцию непосредственно в значения

Потому что "TO_TIMESTAMP('1581569438')" не является корректным представлением timestamptz.

> Если делаю так:

Это более-менее правильно (смотря какие там типы данных.

> duplicate key value violates unique constraint "source_pkey"

А вот это уже что-то совсем другое — смотрите, почему там duplicate.
источник

VY

Victor Yegorov in pgsql – PostgreSQL
David Shiko
Спасибо большое за помощь, сэкономили пару часов гуглинга!
А как тогда поступить если очень много полей выходит (>20) ?
Логически это 1 таблица, но с большой вероянтностью данные будут извлекккаться только из первых 10 колонок или из вторых 10 колонок и редко будут нужны  разом
я бы не стал пока заморачиваться и бить таблицы, сделал бы одну. т.к. если вы хотите две, то у вас получается циклическая зависимость (судя по вашим словам).
чтобы её разорвать надо уже 3 таблицы делать.
также можно свернуть какую-то часть в array или hstore, при условии что все колонки этой части всегда вместе выбираются

и ещё раз — я бы этим занимался тогда, когда запросы к этим таблицам будут главным узким местом производительнсоти системы
источник

VP

Vyn Da Polozh in pgsql – PostgreSQL
Yaroslav Schekin
> Если вставляю функцию непосредственно в значения

Потому что "TO_TIMESTAMP('1581569438')" не является корректным представлением timestamptz.

> Если делаю так:

Это более-менее правильно (смотря какие там типы данных.

> duplicate key value violates unique constraint "source_pkey"

А вот это уже что-то совсем другое — смотрите, почему там duplicate.
С duplicate разобрался,
а в чем еще мой косяк? Не очень понял
источник

DS

David Shiko in pgsql – PostgreSQL
Victor Yegorov
я бы не стал пока заморачиваться и бить таблицы, сделал бы одну. т.к. если вы хотите две, то у вас получается циклическая зависимость (судя по вашим словам).
чтобы её разорвать надо уже 3 таблицы делать.
также можно свернуть какую-то часть в array или hstore, при условии что все колонки этой части всегда вместе выбираются

и ещё раз — я бы этим занимался тогда, когда запросы к этим таблицам будут главным узким местом производительнсоти системы
Спасибо еще раз
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Let Eat Bee
в bitmap на каждую страницу прям дёргают два сискола (fadvise + read)?
Нет, там сложнее (см. nodeBitmapHeapscan.c, если интересны подробности).
источник

LB

Let Eat Bee in pgsql – PostgreSQL
Yaroslav Schekin
Нет, там сложнее (см. nodeBitmapHeapscan.c, если интересны подробности).
зафорсил bitmap scan, к сожалению на холодных данных время не улучшилось :) ну ладно, часто достаточно не решить проблему, а объяснить причину :)
источник