Gregory Stark <stark@enterprisedb.com> writes:
> "Tom Lane" <tgl@sss.pgh.pa.us> writes:
>> Alvaro Herrera <alvherre@commandprompt.com> writes:
>>> Gregory Stark wrote:
>>>> What really has to happen is it should run analyze on all tables
>>>> together in a single transaction and commit all the new stats together.
>>>> Out-of-sync stats can be worse than out-of-date stats.
>>
>>> One problem with that is that it will keep the locks on each table until
>>> the end of all analyzes.
>>
>> Yeah, that seems entirely infeasible, even if I agreed with the premise
>> which I don't think I do.
> Well that's just what ANALYZE with no arguments at all does.
Not unless you wrap it in a transaction block --- otherwise it does a
transaction per table. If you try wrapping it in a transaction block
on a production system, you'll soon find you don't like it.
regards, tom lane