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

Коллеги, хелп. postgresql 11 есть большая партицированная таблица. добавили партицию, создали

индекс ONLY на родительскую таблицу. далее создали индекс на партицию и прицепили родительскому индексу.

[code]CREATE INDEX CONCURRENTLY i_audit_messages_sectioned_y2021m07_on_operation_code_id ON audit_messages_sectioned_y2021m07(operation_code_id);
ALTER INDEX i_audit_messages_sectioned_on_operation_code_id ATTACH PARTITION i_audit_messages_sectioned_y2021m07_on_operation_code_id;[/code]

вроде все нормально пока и логично. создали партиций на 50 лет. потом одумались и удалили часть, тормозят запросы.

--- удаляли так, тут без проблем удалилось:

[code]ALTER TABLE audit_messages_sectioned DETACH PARTITION audit_messages_sectioned_y2021m07;
DROP INDEX IF EXISTS i_audit_messages_sectioned_y2021m07_on_operation_code_id;
DROP TABLE audit_messages_sectioned_y2021m07;[/code]

---- затем партиция понадобилась снова. создаем так. все нормально создается

[code]CREATE TABLE IF NOT EXISTS audit_messages_sectioned_y2021m07 PARTITION OF audit_messages_sectioned FOR VALUES FROM ('2021-07-01 00:00:00') TO ('2021-08-01 00:00:00');
CREATE INDEX CONCURRENTLY i_audit_messages_sectioned_y2021m07_on_operation_code_id ON audit_messages_sectioned_y2021m07(operation_code_id);[/code]

--- пытаемся приаттачить индекс

[code]ALTER INDEX i_audit_messages_sectioned_on_operation_code_id ATTACH PARTITION i_audit_messages_sectioned_y2021m07_on_operation_code_id;
ERROR: cannot attach index "i_audit_messages_sectioned_y2021m07_on_operation_code_id" as a partition of index "i_audit_messages_sectioned_on_operation_code_id"
DETAIL: Another index is already attached for partition "audit_messages_sectioned_y2021m07"[/code]

--- то есть он есть, его удаляли, пересоздавали, но он волшебно есть в родительской таблице
--- ну ок, есть и хорошо. смотрим как работает, а работает как-будто его нет

EXPLAIN select operation_code_id from audit_messages_sectioned_y2021m07 order by operation_code_id;
QUERY PLAN
--------------------------------------------------------------------------------------------
Sort (cost=715.46..729.36 rows=5560 width=4)
Sort Key: operation_code_id
-> Seq Scan on audit_messages_sectioned_y2021m07 (cost=0.00..369.60 rows=5560 width=4)
(3 rows)

--- а его дружок, с которым это не выделывали работает нормально

[code]EXPLAIN select operation_code_id from audit_messages_sectioned_y2021m08 order by operation_code_id;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Index Only Scan using i_audit_messages_sectioned_y2021m08_on_operation_code_id on audit_messages_sectioned_y2021m08 (cost=0.56..1048590.12 rows=40380104 width=4)
(1 row)[/code]

отбросим в негодовании вопрос "Кто виноват?" (прошлые админы), а обратимся к вопросу "Что делать?"

28 ответов

123 просмотра

>а обратимся к вопросу "Что делать?" Прекратить партицыонировать таблицу с жалкими 5 млрд значений. Но это так. А про скорость запроса у нас есть закреп: https://t.me/pgsql/303899 со списком начальной информацыи для разговора. И есть скрипт для получения этого всего одним скриптом: https://t.me/pgsql/476688 .

Кстати, уверяю вас — запросам глубоко безразлично, выполнен там attach index на родительскую или нет. Единственное, для чего attach index нужэн — чтобы он дропался вместе с родительским индэксом и не дропался сам по себе.

Вообще, можно конечно и так заметить, что реалистичных варианта почему неиспользуется конкретно этот индэкс конкретно в этом запросе два: или индэкс нетакой какой-то (недостроился ещё, например. Или на самом деле он другого типа) — или там на таблицу VACUUM не прошёл, и оно считает, что index-only по факту превратится просто в index scan, потому будет дольшэ. Но это всё... В общем, можэте попытаться разобраться сами, а нам — нужна информацыя из https://t.me/pgsql/303899 чтобы тут в угадайку не играть совсем уж.

Talifa-Kumi Автор вопроса
Talifa-Kumi Автор вопроса
Ilya Anfimov
Без разницы.

я думала, что индекс на партицию создается быстрее чем на всю таблицу. когда приаттачиваем как бы добавляем в общий индекс. но вопрос в другом. удалили партицию, создали ее же. индекс на партицию создали. а он в родительской уже как-бы есть, но как-бы нет. вот это вот проблема

Talifa Kumi
я думала, что индекс на партицию создается быстрее...

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

Talifa-Kumi Автор вопроса
Ilya Anfimov
Ещё раз — для скорости запросов это не проблема. П...

это понятно. но запрос индекса не видит. а в соседней партиции которую не удаляли - видит

Talifa Kumi
я думала, что индекс на партицию создается быстрее...

Вообще, можэте \d+ на родительскую таблицу показать — посмотрим, что там куда из индэксов реально подцэплено. Но, реально, по вопросу скорости — вы нетуда копаете.

Talifa-Kumi Автор вопроса
Ilya Anfimov
Вообще, можэте \d+ на родительскую таблицу показат...

"i_audit_messages_sectioned_on_operation_code_id" btree (operation_code_id). есть в родительской, куда б он делся

Talifa Kumi
"i_audit_messages_sectioned_on_operation_code_id" ...

Мне нужны не рассуждения, а \d+ . С рассуждениями вы ведь всё равно в непонятках каких-то, не так ли?

Talifa-Kumi Автор вопроса
Ilya Anfimov
https://t.me/pgsql/509893

по моему я все что нужно изложила, и я не про скорость запроса. и не спросила совета партицировать или нет. я спросила почему индеск на партиции удалили, а потом создали, а приаттачить не дает как будто из родительской не удалялся. но его не использует.

Talifa-Kumi Автор вопроса
Ilya Anfimov
Мне нужны не рассуждения, а \d+ . С рассуждениями...

основной вопрос в том, что при удалении партиции из словаря метаданных не все чистится. и как с этим бороться. версию указала. скорость запроса не при чем. вопрос в чистке метаданных.

Talifa Kumi
основной вопрос в том, что при удалении партиции и...

Я неуверен в справедливости этого утверждения. Возможно, это так и там какой-то баг. Но вполне вероятно, что никакого бага нет — и реальная структура отличается от вашых представлений.

Talifa-Kumi Автор вопроса
Ilya Anfimov
Я неуверен в справедливости этого утверждения. Во...

"Возможно, это так и там какой-то баг." это поняно сразу. вопрос что делать

Talifa Kumi
"Возможно, это так и там какой-то баг." это поняно...

"Когда программисты обвиняют комплиятор в ошыбке, обычно они делают сразу две ошыбки. Включая ту, в которой обвиняют компилятор"

Talifa Kumi
"Возможно, это так и там какой-то баг." это поняно...

(На самом деле, я подозреваю, что индэкс и так создался приаттаченным при создании партицыи. А вашэ ручное создание индэкса — только создало второй такой жэ. Но это потому, что у меня утро, кофе, и я занимаюсь безсмысленным гаданием на кофейной гуще.)

Talifa Kumi
"Возможно, это так и там какой-то баг." это поняно...

Вообще, жэлающие могут посмотреть в pg_catalog. — и выяснить, что там за индэкс приаттачен с таким именем, почему и где он лежыт и с каких времён остался. Тожэ метод, к тому жэ неплохая тренировка разборок с каталогом постгреса.

Talifa-Kumi Автор вопроса
Ilya Anfimov
Вообще, жэлающие могут посмотреть в pg_catalog. — ...

видимо у вас зародилось подозрение, что я туда не смотрела?

Talifa Kumi
видимо у вас зародилось подозрение, что я туда не ...

Никогда об этом не думал, и вообще это не относится к делу.

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

Неужели на препирательства в чате последние полчаса времени хватает, а на то, чтобы приложить \d+ - нет?

Ilya Anfimov
Небось, секретная структура таблиц.

С названиями колонок кириллицей

Talifa Kumi
\d+ audit_messages_sectioned

Так на pastebin кидайте, особенно если там много.

Talifa Kumi
\d+ audit_messages_sectioned

Или файлом, да. (Знаю людей, которые нелюбят, когда текст в телеге кидают файлом — но мне норм, например).

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

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

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
Не ну фпц - это уже просто троллинг какой-то. Элементарный код нельзя собрать. ЧЯДНТ? program Project1; {$mode delphi} uses SysUtils, Classes, Generics.Collections; var...
Peter
4
а где есть mysql cloud кроме яндекс-клауд?
Oleg Nosov
13
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
А кто-нибудь запихивал сборку перловых модулей/образов с perl приложениями в окружения без интернета (в специализированном CI/CD)? У меня сейчас есть ряд cpanfile, которые н...
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
14
Карта сайта