That's a good point.

+1 for the idea of the GUC setting, especially since, as you mentioned, it 
allows unprivileged users to access it and being per-session..

I am happy to draft a patch for this as well. I think I have a working idea so 
far of where the necessary checks might go. However if you don’t mind, can you 
elaborate further on how the effect would be similar to enable_indexscan? 

I was thinking we could introduce a new GUC option called `disabled_indexes` 
and perform a check against in all places for each index being considered with 
its OID via get_relname_relid through a helper function in the various places 
we need to prompt the planner to not use the index (like in indxpath.c as an 
example).

Curious to learn if you have a different approach in mind perhaps?

Thank you,
Shayon


> On Sep 23, 2024, at 11:14 AM, Peter Eisentraut <pe...@eisentraut.org> wrote:
> 
> On 09.09.24 23:38, Shayon Mukherjee wrote:
>> *Problem*:
>> Adding and removing indexes is a common operation in PostgreSQL. On larger 
>> databases, however, these operations can be resource-intensive. When 
>> evaluating the performance impact of one or more indexes, dropping them 
>> might not be ideal since as a user you may want a quicker way to test their 
>> effects without fully committing to removing & adding them back again. Which 
>> can be a time taking operation on larger tables.
>> *Proposal*:
>> I propose adding an ALTER INDEX command that allows for enabling or 
>> disabling an index globally. This could look something like:
>> ALTER INDEX index_name ENABLE;
>> ALTER INDEX index_name DISABLE;
>> A disabled index would still receive updates and enforce constraints as 
>> usual but would not be used for queries. This allows users to assess whether 
>> an index impacts query performance before deciding to drop it entirely.
> 
> I think a better approach would be to make the list of disabled indexes a GUC 
> setting, which would then internally have an effect similar to 
> enable_indexscan, meaning it would make the listed indexes unattractive to 
> the planner.
> 
> This seems better than the proposed DDL command, because you'd be able to use 
> this per-session, instead of forcing a global state, and even unprivileged 
> users could use it.
> 
> (I think we have had proposals like this before, but I can't find the 
> discussion I'm thinking of right now.)
> 



Reply via email to