Re: [8.0.0] out of memory on large UPDATE

Поиск
Список
Период
Сортировка
От Marc G. Fournier
Тема Re: [8.0.0] out of memory on large UPDATE
Дата
Msg-id 20050812120940.G1002@ganymede.hub.org
обсуждение исходный текст
Ответ на Re: [8.0.0] out of memory on large UPDATE  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
On Thu, 11 Aug 2005, Tom Lane wrote:

> "Marc G. Fournier" <scrappy@postgresql.org> writes:
>> On Thu, 11 Aug 2005, Tom Lane wrote:
>>> Are you *sure* there are no AFTER triggers here?
>>> (Don't forget foreign-key checking triggers.)
>
>> This is all of them ... nothing AFTER, just ON or BEFORE ...
>
>> Foreign-key constraints:
>>      "xa_classification_id_fk" FOREIGN KEY (classification_id) REFERENCES xa_classification(classification_id) ON
UPDATERESTRICT ON DELETE RESTRICT 
>>      "xa_ip_address_id_fk" FOREIGN KEY (ip_address_id) REFERENCES xa_ip_addresses(ip_address_id) ON UPDATE RESTRICT
ONDELETE RESTRICT 
>>      "xa_logger_status_id_fk" FOREIGN KEY (logger_status_id) REFERENCES xa_logger_status(logger_status_id) ON UPDATE
RESTRICTON DELETE RESTRICT 
>>      "xa_url_queue_id_fk" FOREIGN KEY (url_queue_id) REFERENCES xa_url_queue(url_queue_id) ON UPDATE RESTRICT ON
DELETESET NULL 
>> Triggers:
>>      xa_url_domain_b_i_u BEFORE INSERT OR UPDATE ON xa_url FOR EACH ROW EXECUTE PROCEDURE xa_url_domain()
>
> Um, foreign-key triggers are always AFTER.

Ah, k ... that would actually make sense had I thought of it too :(

> Can you afford to drop the FK constraints while you do the update?  I
> can't think of any other short-term workaround.

Not sure, but is there a way to do so temporarily?

DarcyB and I were talking the other day about how slow things where for
that UPDATE ... I figured alot of the cause was the UPDATEng of the
INDICES at the same time, so he suggested doing something they are
apparenty looking for with Slony, and "temporarily disabling" the indices
inside a transaction, and then REINDEXng at the end ... ie.

BEGIN;
UPDATE pg_catalog.pg_class
    SET relhasindex = 'f'
  WHERE pg_catalog.pg_class.oid= 'tableoid';
<perform update here>
UPDATE pg_catalog.pg_class
    SET relhasindex = 't'
  WHERE pg_catalog.pg_class.oid= 'tableoid';
REINDEX;
END;

Could I do similar setting "relfkeys = 'f'"?  Or is it more complicated
then that?

----
Marc G. Fournier           Hub.Org Networking Services (http://www.hub.org)
Email: scrappy@hub.org           Yahoo!: yscrappy              ICQ: 7615664

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

Предыдущее
От: "Bernard"
Дата:
Сообщение: BUG #1822: header file
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: BUG #1766: contrib/ modules can't install with --without-docdir