On 22/05/14 21:05, Jeff Janes wrote:
> time and again I need to build indexes. If they are big, that
> generates
> a lot of WAL data that needs to be replicated to streaming
> replication
> slaves. Usually these slaves don't lag behind noticeably. So, the
> application often reads from them. Well, unless I build indexes and,
> thus, create a huge amount of WAL in a short period of time.
>
>
> Are these built CONCURRENTLY?
yes
> What I'd like to have is something where I can set the max.
> bandwidth
> with which the index generating backend may generate WAL data. I
> seem to
> remember to have seen a discussion about something similar but can't
> recall where.
>
> Is there anything I can do about that problem in 9.3 or 9.4?
>
> I already have a function that waits for the streaming slaves to
> catch
> up. But that mitigates the problem only at a very crude level.
> I'd like
> to be able to set that bandwidth to, say, 10mbit/sec. Then I can
> be sure
> that all my replicas are fine. How long the index creation
> takes, does
> not matter.
>
>
> This does not appear the domain of PostgreSQL as much as the domain
> of your OS and network layer.
>
>
> The OS and network have little choice but to process the WAL in the
> order it is generated. If you want to throttle the generation of WAL
> by background maintenance operations so they don't interfere with the
> processing of WAL generated by bread-and-butter transaction processing,
> that is something that only PostgreSQL can do.
That's what I want, to throttle the rate at which WAL is generated by
maintenance operations.
I take it, there is no such thing by now. Would it be a useful addition?
I am not sure if I have the time to implement it. I have had a cursory
look at the code before, just to find out how things work, but never
changed something. What do you think, is it complicated to implement?
Torsten