172 похожих чатов

Доброго вечера всем! Помогите максимально оптимизировать запросы. Задача в следующем: Есть Кафка,

предоставляющая данные.
Данные представляют собой три столбика - uuid, geometry, uuid.
Необходимо собрать «оптимальное» количество данных, создать временную таблицу, создать индексы на все три колонки и засунуть данные в таблицу.
Таблица нужна для одного единственного матчинга в постгисе.
Для загрузки данных использую sqlalchemy.

Сейчас показатели такие:
15000 записей (45 тысяч значений)
Набирается такое количество записей за 1-2 секунды.
Создание таблицы, создание индексов и вставка данных (алхимия за одну транзакцию похваляется вставлять максимум 32767 значений, так что инсерта тут два, 32000 сначала вставляю, потом все оставшиеся) занимает около 3-7 секунд.
Матчинг занимает около 2-х секунд.

Можно ли как-то ускорить хотя бы первый этап (без матчинга)?

14 ответов

7 просмотров

https://t.me/pgsql/303899

И да... Один матчинг... В смысле — запросы будут к этим данным одинаковые — или реально один раз один запрос?!?

Akki- Автор вопроса
Ilya Anfimov
И да... Один матчинг... В смысле — запросы будут к...

Создал таблицу, сджоинил и забыл про неё

Akki- Автор вопроса
Ilya Anfimov
https://t.me/pgsql/303899

1) 13 2) Таблицы создаются динамически не могу показать 3) Запросы стандартные CREATE TEMP TABLE "{name}" ( id1 UUID NOT NULL, state geometry(GEOMETRY,-1) NOT NULL, id2 UUID NOT NULL ); INSERT INTO "{name}" VALUES ... CREATE INDEX "{name}-id1_idx" on "{name}" (id1)') CREATE INDEX "{name}-id2_idx" on "{name}" (id2)') CREATE INDEX "{name}-spatial_idx" on "{name}" using gist (state) 4) Вторая таблица для матчинга создается временно, но на всю рабочую сессию (содержит около 300к записей) используется только 2 колонки state и id2 из второй таблицы

Akki
1) 13 2) Таблицы создаются динамически не могу пок...

3) Сойдёт за половину 2). Если ты не потерял там ещё индэксов. Нет, три секунды на вставку 15к строк с тремя простыми индэксами — это вообще нифига не нормально. Это очень медленно. Выясняй почему. Сними дамп одного экземпляра и попробуй повставлять на девской машыне разными способами.

Akki
1) 13 2) Таблицы создаются динамически не могу пок...

Впрочем я тут чуть-чуть подумал... Можэт и нормально в зависимости от размера state. Сколько там точек в среднем?

Akki
Стэйт это всегда point

Тогда ненормально.

Akki
Стэйт это всегда point

И следующий вопрос: а зачем вас понесло на эти галеры? 300 000 точек, по ним фильтровать поток входящих — какая проблема делать это хоть на си, хоть на любом jit-языке — nodejs, pypy, java ... Зачем вам интэрпретатор postgres в промежутке?

Akki- Автор вопроса
Ilya Anfimov
И следующий вопрос: а зачем вас понесло на эти гал...

Мне нужно делать это все с помощью постгиса. Есть технология быстрее для матчинга географических областей с геоточками?

Akki
Мне нужно делать это все с помощью постгиса. Есть ...

Конечно. Сделать тожэ самое, только вручную и без накладных расходов.

Akki- Автор вопроса
Ilya Anfimov
Конечно. Сделать тожэ самое, только вручную и без ...

Могу я попросить более подробную инструкцию?

Akki
Могу я попросить более подробную инструкцию?

Сначала приведите описание (\d или как) той, другой таблицы и запрос, который ужэ работает с ней (с explain (analyze, buffers, timing). ЗЫ Можэте, конечно, попробовать описать вашу задачу как-то ещё. Но, боюсь, у вас это получится гораздо хужэ.

Ilya Anfimov
Сначала приведите описание (\d или как) той, друго...

Кстати может кто-нибудь из администраторов составит и закрепит сообщение, что нужно для правильного ответа на большинство вопросов, тут есть ссылка на wiki, но ссылка как оформить «стандартный» вопрос думаю не помешала бы🙃

Похожие вопросы

Обсуждают сегодня

Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
48
Всем привет! Скажите, никто не пытался уменьшить размер процесса ssl, которые ассоциируется с открытым соединением (не помню точное название этого процесса, но там была какая-...
Алексей
20
а проверьте, собирается ли у кого сейчас транк лазаря через делюкс? у меня вот: fpcupdeluxe: info: Lazarus Native Installer (BuildModuleCustom: UserIDE): LazBuild: building Us...
Iluha Companets
20
This is a big issue. Just by being a citizen of a country, you are denied to contribute to Open Source software: https://youtu.be/L5Ec5jrpLVk?si=1iIuHnMPbCB4anV-
Sharuzzaman Ahmat Raslan
72
Мне тут приспичило встроить в программу форматировние текста SQL, расставить переносы строк и отступы так, чтобы лучше читалось. Я что-то свое изобразил, оно после ключевых сл...
Sergey Bodrov
11
добрый день. возможно ли изменить цвет окон лазаруса? Как?
Budemposmotret
35
Господа, а кто-нибудь сталкивался с размещением на TTabControl/TTabSheet множества контролов (> 100) с последующими External: Access violation? Вот буквально на ровном месте. ...
Dmitry
29
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Добрый день. Опять снова хочу обратиться к вам за помощью. После создания проэкта stack new, lazy.nvim + nvim-lspconfig/haskell-tools + hlint, ormolu из mason + hls из ghcup ...
Nannk
8
Does anyone have some zeroday's left?
Wito!d ♥️🩷
44
Карта сайта