Freeze temporaire de certains index
Bonjour,
Sauriez-vous comment faire l'équivalent des commandes en rouge sans avoir besoin des droits admin ? (a priori, j'ai un utilisateur ayant un grant all sur sa base de données)
Code:
1 2 3 4
| update pg_class set reltriggers=0
where relname like 'message_%' and relname not like '%_view' and relname not like '%_key';
\copy blabla from 'test.csv' delimiter ';' csv
select ModifTrigger(); |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
CREATE FUNCTION ModifTrigger()
RETURNS void AS $$
DECLARE r record;
BEGIN
FOR r IN
select relname,count(*) from pg_class, pg_trigger
where pg_class.oid=tgrelid and relname like 'message_%'
and relname not like '%_view' and relname not like '%_key'
group by relname
LOOP
RAISE NOTICE '% : %', r.relname, r.count;
update pg_class set reltriggers=r.count where relname=r.relname;
END LOOP;
END;
$$
LANGUAGE plpgsql; |
A priori, cette manip me fait passer mon import de 63min à 45min, mais je ne pourrais pas être root sur la vraie machine de prod. Il faut donc un équivalent ou la configuration nécessaire (permission à ajouter ?) pour avoir droit de faire un tel update sans être root
nb: Je suis en version 8.3 (mais les infos sur les versions suivantes m'intéressent aussi)
:merci: par avance