From: | "Andrey N(dot) Oktyabrski" <ano(at)bestmx(dot)ru> |
---|---|
To: | John KEA <johnkea21(at)yahoo(dot)com> |
Cc: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: Удаление Large Objects |
Date: | 2010-03-10 12:53:15 |
Message-ID: | 4B97963B.7050709@bestmx.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
On 03/09/10 21:57, John KEA wrote:
> подскажите пожалуйста можно ли побороть проблему медленного удаления
> Large Objects в PostgreSQL. Проблема состоит в следующем, в базе
> проживает N больших объектов (Large Objects), требуется наибыстрейшим
> образом удалить M больших объектов из базы (N>M). Например, удаление
> 3000 больших объектов, каждый из которых по мегабайту, занимает около
> 30и минут, что противоречит определенным требованиям. Каким образом
> можно было бы сократить время удаления в разы?
Давно уже в постгресе LO хранятся в этой таблице:
ano=# \d pg_largeobject
Table "pg_catalog.pg_largeobject"
Column | Type | Modifiers
--------+---------+-----------
loid | oid | not null
pageno | integer | not null
data | bytea |
Indexes:
"pg_largeobject_loid_pn_index" UNIQUE, btree (loid, pageno)
Быть может, нечто вроде
DELETE FROM pg_largeobject WHERE loid IN (...);
даст желаемый результат?
Однако, перед тем, как лезть в эту табличку, необходимо удостовериться в
наличии полного и актуального бэкапа. Я не пробовал так делать и не могу
предсказать последствия. Ну или хотя бы потренироваться на кроликах.
From | Date | Subject | |
---|---|---|---|
Next Message | Sergey Burladyan | 2010-03-15 23:08:33 | Re: Удаление Large Objects |
Previous Message | Serguei Mokhov | 2010-03-09 19:48:35 | Re: [pgsql-ru-general] Deleting Large Objects |