PostgreSQL La base de donnees la plus sophistiquee au monde.
no way to compare when less than two revisions

Différences

Ci-dessous, les différences entre deux révisions de la page.


support:trucs_et_astuces:controler_l_utilisation_de_hot_a_partir_de_la_8.3 [2008/10/15 16:51] (Version actuelle) – créée ioguix
Ligne 1: Ligne 1:
 +====== Contrôler l'utilisation de HOT, à partir de la 8.3 ======
  
 +
 +Si comme moi vous avez prévu un fort besoin d'utiliser HOT sur vos tables (UPDATE fréquents sur des colonnes non indexées), vous aurez sûrement réglé un fillfactor largement inférieur à 100. Mais comment contrôler que HOT profite réellement de l'opportunité théorique ? La requête suivante permet de contrôler HOT: 
 +
 +<code sql>SELECT schemaname, relname,
 +       n_tup_upd,n_tup_hot_upd,
 +       case when n_tup_upd > 0
 +            then ((n_tup_hot_upd::numeric/n_tup_upd::numeric)*100.0)::numeric(5,2) 
 +            else NULL
 +       end as hot_ratio
 +
 + FROM pg_stat_all_tables;
 +
 + schemaname | relname | n_tup_upd | n_tup_hot_upd | hot_ratio
 +------------+---------+-----------+---------------+-----------
 + public     | table1  |         6 |             6 |    100.00
 + public     | table2  |   2551200 |       2549474 |     99.93
 +</code>
 +
 +Et si l'on souhaite ajouter à l'affichage le réglage actuel du fillfactor, c'est possible. Mais il faut se référer au catalogue système, où pg_class référence le schéma sous relnamespace qui est un OID de la table système pg_namespace, laquelle publie le nom du schéma sous la colonne nspname, retrouvée sous le nom schemaname dans les tables de stats... 
 +
 +<code sql>SELECT t.schemaname, t.relname, c.reloptions, 
 +       t.n_tup_upd, t.n_tup_hot_upd, 
 +       case when n_tup_upd > 0 
 +            then ((n_tup_hot_upd::numeric/n_tup_upd::numeric)*100.0)::numeric(5,2)
 +            else NULL
 +        end as hot_ratio
 +FROM pg_stat_all_tables t 
 +      join (pg_class c join pg_namespace n on c.relnamespace = n.oid) 
 +        on n.nspname = t.schemaname and c.relname = t.relname
 +
 + schemaname | relname |   reloptions    | n_tup_upd | n_tup_hot_upd | hot_ratio
 +------------+---------+-----------------+-----------+---------------+-----------
 + public     | table1  | {fillfactor=50} |   1585920 |       1585246 |     99.96
 + public     | table2  | {fillfactor=50} |   2504880 |       2503154 |     99.93
 +</code>
 +
 +On dirait que les espoirs théoriques sont plutôt bien vérifiés en pratique... on peut donc continuer de suivre la documentation les yeux fermés^Wgrands ouverts ;) Merci PostgreSQL !
 +
 +-- \\
 +dim le 26/06/2008
 
support/trucs_et_astuces/controler_l_utilisation_de_hot_a_partir_de_la_8.3.txt · Dernière modification : 2008/10/15 16:51 de ioguix