Size: a a a

pgsql – PostgreSQL

2020 July 27

YS

Yaroslav Schekin in pgsql – PostgreSQL
Владимир Яворский
он очень большой))
Что поделаешь... можно сокращать запрос так, чтобы проблема сохранялась, конечно... но стоит ли оно того?
источник

ВЯ

Владимир Яворский... in pgsql – PostgreSQL
Увидел, что на этом index scan очень большой shared hits
источник

k🐧

kiba 🐧 in pgsql – PostgreSQL
Egor Rogov
Ну наверное можно и так сказать. Грубо говоря, сколько операторов кол-центра должно было одновременно сидеть, чтобы обработать эти звонки.
А эрланги посчитать тут не подойдёт?
источник

ВЯ

Владимир Яворский... in pgsql – PostgreSQL
Хотя сам индекс килобайты, а shared hits больше 7кк
источник

MM

Max Mokryi in pgsql – PostgreSQL
Дмитрий Гаврин
Ну, если следовать вашей логике, тогда надо вот такое добавить:
GRANT USAGE ON SCHEMA pg_catalog TO rouser;
GRANT SELECT ON ALL TABLES IN SCHEMA pg_catalog TO rouser;
GRANT USAGE ON SCHEMA information_schema TO rouser;
GRANT SELECT ON ALL TABLES IN SCHEMA information_schema TO rouser;
thank you very much! Заработало все
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Egor Rogov
Ну наверное можно и так сказать. Грубо говоря, сколько операторов кол-центра должно было одновременно сидеть, чтобы обработать эти звонки.
Подождите. Вы считаете, что вот тут:
CREATE TABLE calls(
id integer PRIMARY KEY,
duration tstzrange
);

INSERT INTO calls(id, duration)
VALUES
(1, '["2020-07-27 00:10+03","2020-07-27 00:30+03")'),
(2, '["2020-07-27 00:20+03","2020-07-27 00:50+03")'),
(3, '["2020-07-27 00:40+03","2020-07-27 00:55+03")');

WITH pairs(id, id2) AS (
 SELECT c1.id, c2.id FROM calls c1 JOIN calls c2 ON c1.duration && c2.duration
), counts(cnt) AS (
 SELECT count(*) AS cnt FROM pairs GROUP BY id
)
SELECT max(cnt) FROM counts;

(Или сразу https://dbfiddle.uk/?rdbms=postgres_13&fiddle=4b0fdf5102ed03d73dfc551aeddfcc7e )
В какой-то момент в самом деле было три одновременных звонка?
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Владимир Яворский
может кто-то сталкивался:  JOIN таблицы от которой наследуются еще 3 в EXPLAIN показывает очень долгий index scan на этой таблице,  хотя если делать запрос JOIN и любую наследную таблицу по отдельности , и даже наследуемую с ONLY , то никаких тормазов нет... интересно, что наследуемая таблица еще и самая маленькая(((
Ну так и вопрос в чём?
Потому что единственное, что тебе можно сказать -- это "Кто-то сталкивался".
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Владимир Яворский
Хотя сам индекс килобайты, а shared hits больше 7кк
Ну так каждое обращение считается. Т.е. это нормально.
В общем, искать [разницу] в планах тут нужно, что толку гадать? ;)
источник

VS

Vasily S. in pgsql – PostgreSQL
Yaroslav Schekin
По-моему, обычно эта задача решается через оконные функции.
Т.е. если расположить timestamps начала и завершения звонков на оси времени (по возрастанию), то каждое начало — +1 одновременный звонок, завершение — -1. Или я не так понял задачу?
+1, самоджойн & нарастающий итог оконкой
источник

ER

Egor Rogov in pgsql – PostgreSQL
Yaroslav Schekin
Подождите. Вы считаете, что вот тут:
CREATE TABLE calls(
id integer PRIMARY KEY,
duration tstzrange
);

INSERT INTO calls(id, duration)
VALUES
(1, '["2020-07-27 00:10+03","2020-07-27 00:30+03")'),
(2, '["2020-07-27 00:20+03","2020-07-27 00:50+03")'),
(3, '["2020-07-27 00:40+03","2020-07-27 00:55+03")');

WITH pairs(id, id2) AS (
 SELECT c1.id, c2.id FROM calls c1 JOIN calls c2 ON c1.duration && c2.duration
), counts(cnt) AS (
 SELECT count(*) AS cnt FROM pairs GROUP BY id
)
SELECT max(cnt) FROM counts;

(Или сразу https://dbfiddle.uk/?rdbms=postgres_13&fiddle=4b0fdf5102ed03d73dfc551aeddfcc7e )
В какой-то момент в самом деле было три одновременных звонка?
Лажа, ага :(
Так нельзя.
источник

NM

Nikolai Mikheev in pgsql – PostgreSQL
Если не хватает интеллекта что бы подключить libpq/pqxx к C++ проекту, какой самый простой способ соединить C++ с БД? 🧐
Например C++ -Socket/Protobuf> отдельный Сервис -> БД
Просто запрос/обмен запросами в отдельный Сервис на C# который уже нормально работает с самой БД.
Так как в принципе типов запросов существует не много.🧐 Получение моделей по нескольким параметрам.
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Nikolai Mikheev
Если не хватает интеллекта что бы подключить libpq/pqxx к C++ проекту, какой самый простой способ соединить C++ с БД? 🧐
Например C++ -Socket/Protobuf> отдельный Сервис -> БД
Просто запрос/обмен запросами в отдельный Сервис на C# который уже нормально работает с самой БД.
Так как в принципе типов запросов существует не много.🧐 Получение моделей по нескольким параметрам.
ODBC
источник

DM

Dmitry M in pgsql – PostgreSQL
Nikolai Mikheev
Если не хватает интеллекта что бы подключить libpq/pqxx к C++ проекту, какой самый простой способ соединить C++ с БД? 🧐
Например C++ -Socket/Protobuf> отдельный Сервис -> БД
Просто запрос/обмен запросами в отдельный Сервис на C# который уже нормально работает с самой БД.
Так как в принципе типов запросов существует не много.🧐 Получение моделей по нескольким параметрам.
Не писать на C++
источник

VJ

Vladimir Juriev in pgsql – PostgreSQL
Petr
Есть лог звонков организации (номер, дата начала, дата конца). Нужно определить максимальное количество одновременных звонков.
T1 (call_id, start_dttm, finish_dttm)

Create table T2 as (
Select start_dttm as event_dttm from T1
Union
Select finish_dttm as event_dttm from T1
);

Select T2.event_dttm, count(distinct T1.call_id)
From T2
Inner join T1
On T2. event_dttm between T1.start_dttm and T1.finish_dttm
Group by T2.event_dttm;

И от вывода максимум. Можно и в один запрос. Можно без distinct, если прибавлять к finish_dttm минимальную дату (секунду, мс, ещё чего-нибудь), чтобы дважды в один звонок не попадать. Можно дальше по времени проводить более интересную аналитику, достроив оконкой окончание периодов. Можно в T2 фильтроваться по времени звонков, если интересно конкретные дни посмотреть. По логике, отловит даже звонки, которые длились меньше секунды, если такие есть в T1.

Но подход через series тоже рабочий, если звонков действительно много, и они очень короткие (т.е. на каждой секунде и без того будет несколько звонков, и нет смысла даты отдельно собирать).
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Nikolai Mikheev
Если не хватает интеллекта что бы подключить libpq/pqxx к C++ проекту, какой самый простой способ соединить C++ с БД? 🧐
Например C++ -Socket/Protobuf> отдельный Сервис -> БД
Просто запрос/обмен запросами в отдельный Сервис на C# который уже нормально работает с самой БД.
Так как в принципе типов запросов существует не много.🧐 Получение моделей по нескольким параметрам.
Protobuf-то тут при чём?
источник

NM

Nikolai Mikheev in pgsql – PostgreSQL
Ilia Zviagin
Protobuf-то тут при чём?
Обмен данными между сервисом. 🤷‍♂
Сами команды и данные для байтовой передачи им кодируются.
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Nikolai Mikheev
Если не хватает интеллекта что бы подключить libpq/pqxx к C++ проекту, какой самый простой способ соединить C++ с БД? 🧐
Например C++ -Socket/Protobuf> отдельный Сервис -> БД
Просто запрос/обмен запросами в отдельный Сервис на C# который уже нормально работает с самой БД.
Так как в принципе типов запросов существует не много.🧐 Получение моделей по нескольким параметрам.
А... сори, я думал это другой чат.

Самый лучший способ на С++ -- это , наверное, использовать Qt.
источник

NM

Nikolai Mikheev in pgsql – PostgreSQL
Ilia Zviagin
А... сори, я думал это другой чат.

Самый лучший способ на С++ -- это , наверное, использовать Qt.
Qt Это что? 🧐
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Nikolai Mikheev
Обмен данными между сервисом. 🤷‍♂
Сами команды и данные для байтовой передачи им кодируются.
Всё хорошо, только при чём тут БД?
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Nikolai Mikheev
Qt Это что? 🧐
Используй гугл что ли...
источник