Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / отключить индекс. / 10 сообщений из 10, страница 1 из 1
26.02.2019, 19:05
    #39779502
per
per
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отключить индекс.
Приветствую.

Можно ли отключить индекс на время?

Чтобы он не использовался постгресом, как буд-то его нет совсем.
...
Рейтинг: 0 / 0
27.02.2019, 00:27
    #39779548
grgdvo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отключить индекс.
per,

По-моему смысла нет так делать.
Ну отключите вы индекс, записи добавятся/удалятся/изменятся, все равно его пересоздавать.
поэтому DROP/CREATE вполне....
...
Рейтинг: 0 / 0
27.02.2019, 11:52
    #39779679
jan2ary
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отключить индекс.
per,

Ну вообще дроп, да.
А так вот на просторах интернета нашлось чудное:
Код: sql
1.
update pg_index set indisvalid = false where indexrelid = 'test_pkey'::regclass
...
Рейтинг: 0 / 0
27.02.2019, 23:52
    #39780139
grgdvo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отключить индекс.
jan2ary,

Если флаг выставить, то планировщик естественно не будет рассматривать индекс на использование,
и похоже пока REINDEX ему принудительно не сделаешь, флаг назад сам не вернется.
Да, прикольно! Но править системный каталог.....!!! :)
Как минимум нужно быть суперюзером.
...
Рейтинг: 0 / 0
28.02.2019, 11:01
    #39780242
per
per
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отключить индекс.
grgdvojan2ary,

Если флаг выставить, то планировщик естественно не будет рассматривать индекс на использование,
и похоже пока REINDEX ему принудительно не сделаешь, флаг назад сам не вернется.
Да, прикольно! Но править системный каталог.....!!! :)
Как минимум нужно быть суперюзером.


Получается что индекс становится неактуальным после отключения?

И пока его не пересоздашь - он будет неактивен?
...
Рейтинг: 0 / 0
28.02.2019, 11:05
    #39780245
per
per
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отключить индекс.
grgdvo,

просто смотрю EXPLAIN - индекс после включения (был выключен трое суток) используется.
...
Рейтинг: 0 / 0
28.02.2019, 11:09
    #39780248
per
per
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отключить индекс.
grgdvo,

EXPLAIN ANALYZE тоже сказал чтоиндекс используется:

Index Scan using my_index






Запрос:
Код: sql
1.
SELECT indisvalid FROM pg_index WHERE indexrelid = 'index'::regclass;


возвращает:
t
...
Рейтинг: 0 / 0
28.02.2019, 11:54
    #39780270
Melkij
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отключить индекс.
https://www.postgresql.org/docs/current/catalog-pg-index.html
If true, the index is currently valid for queries. False means the index is possibly incomplete: it must still be modified by INSERT/UPDATE operations, but it cannot safely be used for queries. If it is unique, the uniqueness property is not guaranteed true either.

Выводы? Менять руками системный каталог нельзя если не понимаете полностью что делаете.
Сам по себе флаг конечно назад не вернётся, такой же грязный хак каталога или перестраивать индекс. Используется флаг в частности во время построения create index concurrently как раз чтобы сказать "индекс необходимо писать, нельзя читать", будет ли он корректен без вызова validate_index отвечать не стану.

perпросто смотрю EXPLAIN - индекс после включения (был выключен трое суток) используется.
В традициях unix, суперпользователь может отстрелить себе ногу если хочет поразвлекаться.
...
Рейтинг: 0 / 0
28.02.2019, 12:14
    #39780283
per
per
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отключить индекс.
Melkij https://www.postgresql.org/docs/current/catalog-pg-index.html
If true, the index is currently valid for queries. False means the index is possibly incomplete: it must still be modified by INSERT/UPDATE operations, but it cannot safely be used for queries. If it is unique, the uniqueness property is not guaranteed true either.

Выводы? Менять руками системный каталог нельзя если не понимаете полностью что делаете.
Сам по себе флаг конечно назад не вернётся, такой же грязный хак каталога или перестраивать индекс. Используется флаг в частности во время построения create index concurrently как раз чтобы сказать "индекс необходимо писать, нельзя читать", будет ли он корректен без вызова validate_index отвечать не стану.

perпросто смотрю EXPLAIN - индекс после включения (был выключен трое суток) используется.
В традициях unix, суперпользователь может отстрелить себе ногу если хочет поразвлекаться.

Сам он не включился.

Вопрос в том, что если

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
--после 
update pg_index set indisvalid = false where indexrelid = 'test_pkey'::regclass


/*прошло трое суток*/

--сделать
update pg_index set indisvalid = true where indexrelid = 'test_pkey'::regclass




Будет ли нормально работать индекс или его надо епрестаивать в обязательном порядке?
...
Рейтинг: 0 / 0
28.02.2019, 23:10
    #39780678
grgdvo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
отключить индекс.
per,

вряд ли стоит возвращать флаг снова через update, индекс не перестроится, а значит в лучшем случае вы получите хрен знает какие результаты, в худшем - все упадет, потому что испорчена внутренняя целостность (грязный хак же!).
Сделайте REINDEX и целостность восстановите, и флаг вернете.
Но поддержу и повторюсь: править системный каталог не айс! Ну что стоит DROP/CREATE сделать?!
Получите больше надежности, не понадобится суперюзер.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / отключить индекс. / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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