Обсуждение: Save many data chunks to file

Поиск
Список
Период
Сортировка

Save many data chunks to file

От
whiplash
Дата:
Hello! I have a table with image data:

CREATE TABLE images
(
    id serial,
    image_data bytea,
    ...
);

This is function for store image data to file:

CREATE OR REPLACE FUNCTION write_bytea ( p_data bytea, p_filename text )
RETURNS void AS
$BODY$
DECLARE
    v_oid oid;
    v_fdesc integer := 0;
    v_fsize integer := 0;
BEGIN
    v_oid := lo_create ( -1 );
    v_fdesc := lo_open ( v_oid, CAST ( X'00020000' AS integer ) );
    v_fsize := lowrite ( v_fdesc, p_data );
   
    PERFORM lo_export ( v_oid, p_filename );
    PERFORM lo_close ( v_fdesc );
    PERFORM lo_unlink ( v_oid );
END
$BODY$
LANGUAGE plpgsql IMMUTABLE;

Query for saving image:

SELECT write_bytea ( i.image_data, id::text || '.jpg' )
FROM images i;

My problem: first 30-40 images (~75 KB for one image) save fast but saving speed of next images slows down and slows down. What is wrong?

P.S. I try use it in pgAdmin and in psql, but problem doesn't
disappear.