powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Перестраивает ли VACUUM индексы?
22 сообщений из 22, страница 1 из 1
Перестраивает ли VACUUM индексы?
    #39572221
Добрый день.

Перестраивает ли VACUUM индексы?

Версия 9.4


VACUUM без FULL
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572223
Суть вопроса вот в чем:

Была табличка, в которой повредился файл индекса.

Ошибку уже исправили.




Однако, должен ли был VACUUM выдать ошибки при битом файле индекса таблицы?
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572239
ни кто не задумывался?
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572241
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дерзкий Вакуум,

VACUUM и без FULL можно вызывать много какими способами. Вы бы точную команду запуска привели...
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572245
Щукина АннаДерзкий Вакуум,

VACUUM и без FULL можно вызывать много какими способами. Вы бы точную команду запуска привели...


Код: sql
1.
VACUUM 
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572281
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дерзкий Вакуум,

Не перестраивает.
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572408
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дерзкий ВакуумСуть вопроса вот в чем:

Была табличка, в которой повредился файл индекса.

Ошибку уже исправили.




Однако, должен ли был VACUUM выдать ошибки при битом файле индекса таблицы?

наиболее корректный ответ в этом случае "он может выдать ошибку если индекс поврежден" но может и не выдать, Это от очень многих факторов зависит.
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572496
Maxim BogukДерзкий ВакуумСуть вопроса вот в чем:

Была табличка, в которой повредился файл индекса.

Ошибку уже исправили.




Однако, должен ли был VACUUM выдать ошибки при битом файле индекса таблицы?

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


От каких, например?


Я создал табличку, создал в ней индекс и заполнил данными:

Код: sql
1.
2.
3.
CREATE TABLE test_block(id int, var text);
CREATE INDEX test_block_index ON test_block(id)
INSERT INTO test_block (id, var) SELECT oid,relname FROM pg_class



Открывыаю файлик индекса, правлю его в блокноте, НО не получаю ошитбок при селекте, и при вакууме тоже не получаю

Как получить ошибку при селекте с порченым файлом индекса?
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572543
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дерзкий ВакуумОткрывыаю файлик индекса, правлю его в блокноте



Как получить ошибку при селекте с порченым файлом индекса?
если битый файлик -- то любой селект, гарантированно делающий индекс скан каждого листа.

в вашем -- примерно можно попробовать так
Код: sql
1.
2.
3.
SET enable_seqscan to off;
SELECT * FROM test_block t
,lateral (SELECT * FROM test_block b WHERE b.id>= t.id AND b.ctid<>t.ctid ORDER BY b.id limit 1) b



но у вас файлик, видимо не "битый", а кривой (тут надо подумать насчет структуры, если вы правите значения а не шапочку , а это лень)

-- тогда или суммы проверять (была настройка при инит-кластере. где--то обсуждалось).
или руками проверять значения. например в выводе верхнестоящего запроса сравнить правую и левую.
Код: sql
1.
2.
3.
4.
SET enable_seqscan to off;
SELECT * ,b.id = t.id+0  FROM test_block t
left join lateral (SELECT * FROM test_block b WHERE b.id = t.id ORDER BY b.id limit 1) b ON TRUE
where b.id +0<> t.id+0
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572550
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwwq-- тогда или суммы проверять (была настройка при инит-кластере. где--то обсуждалось).
или руками проверять значения. например в выводе верхнестоящего запроса сравнить правую и левую.
Код: sql
1.
2.
3.
4.
SET enable_seqscan to off;
SELECT * ,b.id = t.id+0  FROM test_block t
left join lateral (SELECT id FROM test_block b WHERE b.id = t.id ORDER BY b.id limit 1) b ON TRUE
where b.id +0<> t.id+0


вру. надо ещё чтобы левое бралось из ИОС (т.е. без поднятия значения из записи). и только потом сравнить в. и то гарантии не будет.
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572553
qwwqДерзкий ВакуумОткрывыаю файлик индекса, правлю его в блокноте



Как получить ошибку при селекте с порченым файлом индекса?
если битый файлик -- то любой селект, гарантированно делающий индекс скан каждого листа.

в вашем -- примерно можно попробовать так
Код: sql
1.
2.
3.
SET enable_seqscan to off;
SELECT * FROM test_block t
,lateral (SELECT * FROM test_block b WHERE b.id>= t.id AND b.ctid<>t.ctid ORDER BY b.id limit 1) b



но у вас файлик, видимо не "битый", а кривой (тут надо подумать насчет структуры, если вы правите значения а не шапочку , а это лень)

-- тогда или суммы проверять (была настройка при инит-кластере. где--то обсуждалось).
или руками проверять значения. например в выводе верхнестоящего запроса сравнить правую и левую.
Код: sql
1.
2.
3.
4.
SET enable_seqscan to off;
SELECT * ,b.id = t.id+0  FROM test_block t
left join lateral (SELECT * FROM test_block b WHERE b.id = t.id ORDER BY b.id limit 1) b ON TRUE
where b.id +0<> t.id+0




запросы ошибок не вызывают.

даже инсерты отрабатывают.

из файла индексов вообще все удалил - ошибок нет
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572555
после инсерта какие-то данны етам появляются, удяляю почти все строки - ошибок при запросах нет
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572570
вообще переименовал файл индекса.

и вставка и селекты и вакуум и вакуум аналайз проходят.
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572571
Как заставить постгрес использовать файл индекса?
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572578
Создал еще один индекс

CREATE INDEX test_block_index2 ON test_block(var)


Вместо переименнованного файла появился новый.

Его "подредактировал" удалив половину.


НО Все равно никаких ошибок при селектах и при вставке нет.
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572637
Rutra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дерзкий Вакуум,

Я думаю, что гарантированно сообщения об ошибке при битых файлах можно получить только если включен подсчет контрольных сумм.
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572652
RutraДерзкий Вакуум,

Я думаю, что гарантированно сообщения об ошибке при битых файлах можно получить только если включен подсчет контрольных сумм.


Ну как-то они же возникают время от времени....
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572655
Вот ести файл "подправить" сразу ошибка при селекте:

Код: sql
1.
2.
ОШИБКА: неверная страница в блоке 0 отношения base/12135/29307
SQL-состояние: XX001
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572758
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дерзкий Вакуумqwwqпропущено...

если битый файлик -- то любой селект, гарантированно делающий индекс скан каждого листа.

в вашем -- примерно можно попробовать так
Код: sql
1.
2.
3.
SET enable_seqscan to off;
SELECT * FROM test_block t
,lateral (SELECT * FROM test_block b WHERE b.id>= t.id AND b.ctid<>t.ctid ORDER BY b.id limit 1) b



но у вас файлик, видимо не "битый", а кривой (тут надо подумать насчет структуры, если вы правите значения а не шапочку , а это лень)

-- тогда или суммы проверять (была настройка при инит-кластере. где--то обсуждалось).
или руками проверять значения. например в выводе верхнестоящего запроса сравнить правую и левую.
Код: sql
1.
2.
3.
4.
SET enable_seqscan to off;
SELECT * ,b.id = t.id+0  FROM test_block t
left join lateral (SELECT * FROM test_block b WHERE b.id = t.id ORDER BY b.id limit 1) b ON TRUE
where b.id +0<> t.id+0




запросы ошибок не вызывают.

даже инсерты отрабатывают.

из файла индексов вообще все удалил - ошибок нет
второй тип запроса вместо ошибки--ексепшена должен (с учетом замечания про ИОС) приводить к логическим ошибкам -- выводить записи, например, хотя не должен. и т.д. -- т.е. он для подумать над выводом

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


а во всех случаях кроме факультативного -- бейте дба, который лазает руками в файлики, по бестолковке. желательно твердым тупым предметом. бестолковкой сиадма, например. (в норме злоумышленник не должен доступаться к файлам, а люди с доступом должны отвечать за нетронутость грязными отростками вплоть до укорочения оных. единственный случай, когда я видел необходимость лезть к файликам -- реальная бага (например репликации), когда рекомендовалось руками набить что-то-там в файлики.)
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572770
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дерзкий ВакуумКак заставить постгрес использовать файл индекса?
1. он не обязан.
2. смотрите план запроса
, если в плане индекс используется -- и нет ошибки -- это одно
, если в плане индекса совсем нет (при 200 записях в пустой базульке) -- то это другое.
3 . индекс может быть помечен как невалидный . обычно -- это недостроенный конкуррентли индекс. может ли пж пометить индекс невалидным в случае наличия дятла, подтачивающего файлики клювом -- вопрос открытый.
невалидные индексы в плане не участвуют никогда.

ну и т.д. и т.п.
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572901
bff7755a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У вас индекс скорее всего небольшой и целиком поместился в shared buffers. Поэтому, даже если он и используется, не факт что читается с диска.
...
Рейтинг: 0 / 0
Перестраивает ли VACUUM индексы?
    #39572987
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://rhaas.blogspot.ru/2017/12/mvcc-and-vacuum.html

В тему недавно Хас написал
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Перестраивает ли VACUUM индексы?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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