Re: REINDEX vs VACUUM

Поиск
Список
Период
Сортировка
От Rébeli-Szabó Tamás
Тема Re: REINDEX vs VACUUM
Дата
Msg-id cf2bafcd-2cb1-2887-b2c6-40023a1cae12@rblst.info
обсуждение исходный текст
Ответ на Re: REINDEX vs VACUUM  (Ron <ronljohnsonjr@gmail.com>)
Список pgsql-general
I have looked more into it and have found that VACUUM FULL (and CLUSTER) 
does in fact rebuild indexes, see for example: 

https://github.com/postgres/postgres/blob/c8e1ba736b2b9e8c98d37a5b77c4ed31baf94147/src/backend/commands/cluster.c#L1463

I have also run some tests and have come to understand that REINDEX 
seems to "vacuum" the index in the sense that a subsequent VACUUM on the 
underlying table will not find any removable entries in the index.

Ron is right, the term "vacuum" may be misleading.

2023. 01. 04. 16:34 keltezéssel, Ron írta:
> I don't think VACUUM FULL (copy the table, create new indices and 
> other metadata all in one command) actually vacuums tables.  It's a 
> misleading name.
>
> Something like REBUILD TABLE would be a better name.
>
> On 1/4/23 07:25, Rébeli-Szabó Tamás wrote:
>> Here is my understanding:
>>
>> REINDEX recreates the index from scratch, using the data stored in 
>> the underlying table. It is the same as dropping and recreating the 
>> index manually, with regard to the impact on the index file. It can 
>> free up physical space in the file system. REINDEX will not vacuum 
>> the index.
>>
>> VACUUM does many different things. One of them is vacuuming indexes 
>> (for the underlying table that is being vacuumed). VACUUM will remove 
>> index entries that are pointing to dead rows in the underlying table. 
>> VACUUM will not rebuild the entire index.
>>
>> VACUUM recycles free index blocks (using FSM), but it does not 
>> (usually) free up space for the file system physically. VACUUM FULL 
>> does that.
>>
>> VACUUM FULL will vacuum the index, but it will do it by making a copy 
>> of the index (file) and reorganizing its content in order to free up 
>> space physically. In that regard, it is like REINDEX. Both VACUUM 
>> FULL and REINDEX will block reads from the index during the process 
>> (by taking an ACCESS EXCLUSIVE lock).
>>
>> Regards,
>>
>> tamas
>>
>> 2022. 12. 31. 22:04 keltezéssel, Hao Zhang írta:
>>> What is the difference between reindex and vacuum's impact on index 
>>> file? I deleted an indexed row. Running either vacuum or reindex 
>>> shows the index entry for the row is removed from the index page. I 
>>> was under the impression that only reindex will remove dangling 
>>> index entries. I am guessing that vacuum will not shrink the index 
>>> file and will only add deleted index entries in the free space file 
>>> for the index? But REINDEX is recreating the index file from scratch 
>>> so it is like vacuum full for index?
>>>
>>> Thanks
>>
>>
>



В списке pgsql-general по дате отправления:

Предыдущее
От: "Zwettler Markus (OIZ)"
Дата:
Сообщение: curious postgres (crash) recovery behavior
Следующее
От: Rébeli-Szabó Tamás
Дата:
Сообщение: Re: curious postgres (crash) recovery behavior