Thread: Удаление Large Objects

Удаление Large Objects

From
John KEA
Date:
Привет, 
 
подскажите пожалуйста можно ли побороть проблему медленного удаления Large Objects в PostgreSQL. Проблема состоит в следующем, в базе проживает N больших объектов (Large Objects), требуется наибыстрейшим образом удалить M больших объектов из базы (N>M). Например, удаление 3000 больших объектов, каждый из которых по мегабайту, занимает около 30и минут, что противоречит определенным требованиям. Каким образом можно было бы сократить время удаления в разы? 
 
Большое спасибо!

Re: Удаление Large Objects

From
"Andrey N. Oktyabrski"
Date:
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 (...);
даст желаемый результат?

Однако, перед тем, как лезть в эту табличку, необходимо удостовериться в
наличии полного и актуального бэкапа. Я не пробовал так делать и не могу
предсказать последствия. Ну или хотя бы потренироваться на кроликах.

Re: Удаление LargeObjects

From
Sergey Burladyan
Date:
John KEA <johnkea21@yahoo.com> writes:

> подскажите пожалуйста можно ли побороть проблему медленного удаления Large Objects в PostgreSQL. Проблема   
> состоит в следующем, в базе проживает N больших объектов (Large Objects), требуется наибыстрейшим образом   
> удалить M больших объектов из базы (N>M). Например, удаление 3000 больших объектов, каждый из которых по    
> мегабайту, занимает около 30и минут, что противоречит определенным требованиям.

А какая у Вас версия сервера?