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

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

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

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

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

14 ответов

8 просмотров

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, но ссылка как оформить «стандартный» вопрос думаю не помешала бы🙃

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта