Size: a a a

pgsql – PostgreSQL

2020 June 29

DB

Dmitry Belkevich in pgsql – PostgreSQL
всем привет. по какой-то причине триггер замедляет добавление в таблицу на два порядка (100 раз). вот тело триггера:

CREATE OR REPLACE FUNCTION images_ai1_func()
RETURNS trigger AS
$BODY$
BEGIN
update shares set share_curr_size =
share_curr_size + new.image_file_length
where share_uid = new.share_uid;
RETURN NULL;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION images_ai1_func()
OWNER TO test_user;

что с ним может быть не так?
источник

W

Warstone in pgsql – PostgreSQL
\d+ на shares в студию.
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
источник

W

Warstone in pgsql – PostgreSQL
SELECT COUNT(*) FROM shares;
SELECT COUNT(*) FROM images;
EXPLAIN ANALYZE от запроса, который тормозит (даже если это банальный insert)
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
вообще, это не запрос, а всасывание данных из csv. меряем на 10к записей
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
с пустой базы. триггер включаю - проседает скорость примерно в 100 раз. ну и в работе, понятно, будет не сахар
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
могу впрочем запрос попробовать и EXPLAIN ANALYZE кинуть
источник

VY

Victor Yegorov in pgsql – PostgreSQL
Dmitry Belkevich
всем привет. по какой-то причине триггер замедляет добавление в таблицу на два порядка (100 раз). вот тело триггера:

CREATE OR REPLACE FUNCTION images_ai1_func()
RETURNS trigger AS
$BODY$
BEGIN
update shares set share_curr_size =
share_curr_size + new.image_file_length
where share_uid = new.share_uid;
RETURN NULL;
END
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION images_ai1_func()
OWNER TO test_user;

что с ним может быть не так?
определение самого триггера покажите? зачем NULL возвращаете?
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
null? кусок от шаблона остался ) уберу
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
определение - это что? я запрос кинул, которым он создается. больше там ничего нет
источник
2020 June 30

VY

Victor Yegorov in pgsql – PostgreSQL
вы кинули запрос для ф-ции, я прошу запрос для триггера
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
CREATE TRIGGER images_ai1
 AFTER INSERT
 ON images
 FOR EACH ROW
 EXECUTE PROCEDURE images_ai1_func();
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
ОШИБКА:  конец триггерной процедуры достигнут без RETURN
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
что-то без return не очень работает )
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Dmitry Belkevich
с пустой базы. триггер включаю - проседает скорость примерно в 100 раз. ну и в работе, понятно, будет не сахар
Нет, не "понятно", на самом деле.

> меряем на 10к записей

Как меряете (опишите подробнее)?
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
меряем просто: даем команду закачать 10к записей из csv в images, ставим метку времени в начале и в конце дейсвтия
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
включаем и отключаем триггер. разница в скорости обработки примерно 100 раз
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Dmitry Belkevich
меряем просто: даем команду закачать 10к записей из csv в images, ставим метку времени в начале и в конце дейсвтия
Вы один раз это делаете? И что при этом в таблицах shares и images (потому что "с пустой базы", как Вы ранее писали, означало бы, что в "shares" обновлять просто нечего)?
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
один раз
источник

DB

Dmitry Belkevich in pgsql – PostgreSQL
потому как 'медленное' добавление занимает заметно времени
источник