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


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

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

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

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

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

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

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

--
Maxim Boguk
dataegret.ru
...
Рейтинг: 0 / 0
14.04.2017, 13:53
    #39438716
Legushka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pg_relation_size(indexrelid) - задваивает данные
Код: 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
14.04.2017, 13:57
    #39438723
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pg_relation_size(indexrelid) - задваивает данные
Legushka,

кхмм



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




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

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

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


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