powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / pg_relation_size(indexrelid) - задваивает данные
14 сообщений из 14, страница 1 из 1
pg_relation_size(indexrelid) - задваивает данные
    #39438465
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
будьте внимательный с этой функцией если ее используете, она может задвоить строки)
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438481
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushkaбудьте внимательный с этой функцией если ее используете, она может задвоить строки)в интернетах о таком говорят "тынц или пустобол"


т.е. "хотелось бы выслушать начальника транспортного отдела". а именно обстоятельства места и времени, кто что делал руками в это время. и т. п.

единственная ф--я, о которой мне известно, что она реализована достоверно через одно место, это пг_слип. её реализовывал конченный колхозник. при переводе часов скажем руками вы рискуете оказаться в сложной ситуации. в чём нетрудно убедиться руками (вместо тынца, каюсь). в любой момент (если возникнут затруднения -- попробую привести описание теста).
однако такого рода таймеры якобы распространены у начинающих.
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438538
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushka,

Эта функция возвращает скалярный результат, как она может увеличить размер выборки?
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438650
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov, одной indexrelid он вернул две разные цифры
ооочень частный случай видимо или косяк в статистических данных

или может индекс хранится на двух файлах, и для каждого он свое значение вернул
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438673
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushkavyegorov, одной indexrelid он вернул две разные цифры
ооочень частный случай видимо или косяк в статистических данных

или может индекс хранится на двух файлах, и для каждого он свое значение вернул

Это невозможно - функция обьявлена как возвращающая скаляр она НЕ МОЖЕТ вернуть 2 строки ни в каких условиях.
Там база упадет скорее если такое произойдет.
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438707
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда может быть так что для одного и того же indexname существует два значения indexrelid в бд?
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438712
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushkaтогда может быть так что для одного и того же indexname существует два значения indexrelid в бд?

Такое вполне может быть если 2 одинаковых индекса в разных схемах например.

--
Maxim Boguk
dataegret.ru
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438716
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
WITH stat_index_uses AS (
                    SELECT distinct
                        i.indexname,
                        i.tablename,
                        i.schemaname,
                        i.indexdef,
                        SUM(pg_relation_size(indexrelid)) OVER (PARTITION BY indexname) as index_size,
                        split_part(i.indexdef, 'USING ', 2) as indexdef_part ,
                        s.idx_scan,
                        -- статистика чтения индекса
                        SUM(s.idx_scan) OVER (PARTITION BY i.tablename) AS tdx_scan -- если статистика по таблице в целом равна 0 значит статистика не создавалась, такие индексы не удаляем
                    FROM
                        pg_indexes i
                        LEFT JOIN pg_stat_user_indexes s ON s.indexrelname = i.indexname
                    WHERE
                        i.tablename = 'TABLICAAA'
                        AND i.schemaname = 'public'
                ) SELECT
                      tdx_scan as tab_scan,
                      index_size as ind_size,
                      pg_relation_size(schemaname||'.'||tablename) as tab_size,
                      pg_total_relation_size(schemaname||'.'||tablename) as tab_total_size_befor,
                      0 as tab_total_size_after,
                      current_date as dt,
                      'drop' as action,
                      schemaname as schemaname,
                      tablename as tablename,
                      indexname as indexname,
                      '201702220900_drop_index__TABLICAA' as changelog,
                      'изменение индекса' as descr,
                      indexdef as def,
                      indexdef_part as def_part
                  FROM
                      stat_index_uses i
                  WHERE
                      split_part(i.indexdef, 'USING ', 2) = 'btree (is_system) WHERE (is_system = false)'
                      --AND i.idx_scan < 10
                      --AND i.tdx_scan > 10000


пришлось поставить distinct и оконку на pg_relation_size(indexrelid)

а в целом скрипт чистил подозрительные индексы - генерил скрипт на удаление (это правда дальше обрабатывалось)
и заодно попутно собирал статистику

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

сейчас строки не дублируются
может это не из за pg_relation_size(indexrelid)
кто знает, а может есть недокументированный баг в этой функции, и я единственный кто его словил(
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438723
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushka,

кхмм



помедитируйте над своим запросом, и не пишите больше глупостей не подумав
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438727
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Legushka
Код: sql
1.
2.
3.
4.
...
                        LEFT JOIN pg_stat_user_indexes s ON s.indexrelname = i.indexname
                    WHERE
...




По-моему в этом месте не хватает еще и упоминания схемы. Если два одинаково названных индекса в разных схемах - то тогда ой!
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438728
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushka,

Не бывает таких багов.
А вот 2 одинаковых indexname в pg_indexes - может быть легко и это штатная ситуация.

--
Maxim Boguk
dataegret.ru
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438733
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk, спасибо)
изначально был не прав: думал раз дает ошибку на создание индекса с используемым наименованием, то не может быть двух одинаковых индексов по наименованию.
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438735
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оказывается они уникальные в рамках одной схемы
вот на этом и был прокол:, ктото создал себе таблицу для экспериментов в другой схеме
...
Рейтинг: 0 / 0
pg_relation_size(indexrelid) - задваивает данные
    #39438870
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushkaв другой схемекак тебе еще не пришло в голову подозрительные функции искать.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / pg_relation_size(indexrelid) - задваивает данные
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]