Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 >

mardi 6 mai 2008

Obtenir le liste détaillée de l'occupation disque pour chaque table (avec index et toast)

Pas de race, on fait tout simplement

SELECT  stat.relname AS "Table",pg_size_pretty(pg_total_relation_size(stat.relid)) AS "Occupation totale",
pg_size_pretty(pg_relation_size(stat.relid)) AS "Taille de la table", 
CASE WHEN cl.reltoastrelid = 0 THEN 'aucun' ELSE 
pg_size_pretty(pg_relation_size(cl.reltoastrelid)+ 
COALESCE((SELECT SUM(pg_relation_size(indexrelid)) FROM pg_index WHERE indrelid=cl.reltoastrelid)::int8, 0)) END AS "Taille de la table TOAST",
 pg_size_pretty(COALESCE((SELECT SUM(pg_relation_size(indexrelid)) FROM pg_index WHERE indrelid=stat.relid)::int8, 0)) AS "Taille des index"
 FROM pg_stat_all_tables stat JOIN pg_statio_all_tables statio ON stat.relid = statio.relid JOIN
 pg_class cl ON cl.oid=stat.relid AND stat.schemaname='public' order by stat.relname;

Ce qui donnera par exemple

        Table         | Occupation totale | Taille de la table | Taille de la table TOAST | Taille des index 
----------------------+-------------------+--------------------+--------------------------+------------------
 table                | 72 kB             | 40 kB              | 8192 bytes               | 24 kB
 terrain_golf         | 152 kB            | 104 kB             | 8192 bytes               | 40 kB
 theatre              | 272 kB            | 168 kB             | 8192 bytes               | 96 kB
 ua_arrondissement    | 152 kB            | 48 kB              | 80 kB                    | 24 kB
 ua_chef-lieu_departe | 40 kB             | 8192 bytes         | 8192 bytes               | 24 kB
 ua_chef-lieu_region  | 40 kB             | 8192 bytes         | 8192 bytes               | 24 kB
 ua_commune           | 74 MB             | 43 MB              | 28 MB                    | 2320 kB
 ua_departement       | 4608 kB           | 16 kB              | 4568 kB                  | 24 kB
Petit rappel: (surtout pour moi ) Vu que j'ai compilé PostgreSQL sans modifier les source donc une page a une taille de BLCKSZ soit
psql -At -U postgres -d postgres -c "show block_size" --> 8192
, les 8192 bytes correspondent à une page de 8Ko.

lundi 5 mai 2008

Générer un échantillon aléatoire de données issues d'une table, triées par valeurs croissantes d'un clé primaire

Supposons le tableau audit2 dont la description est

smbd=# \d audit2
                                   Table « public.audit2 »
 Colonne  |            Type             |                    Modificateurs                    
----------+-----------------------------+-----------------------------------------------------
 id       | bigint                      | not null default nextval('audit2_id_seq'::regclass)
 log_date | timestamp without time zone | default now()
 username | character varying(18)       | default ''::character varying
 useraddr | character varying(18)       | default ''::character varying
 op_name  | character varying(255)      | default ''::character varying
 err_msg  | text                        | default ''::text
 op_msg   | text                        | default ''::text
 share    | character varying(255)      | default ''::character varying
Index :
    « audit2_pkey » PRIMARY KEY, btree (id)
Sachant que la table contient
root@olivia:~#  psql -U postgres -d smbd -At -c "SELECT count(*) FROM audit2"
457207
lignes. On veut généré un jeu aléatoire de 10 lignes triés par ordre croissant selon les valeurs de la clé id. On retourne les champs id, log_date et username on fera alors
smbd=# select * from (select id,log_date,username from audit2  order by random()  limit 10) foo order by id asc;
   id   |          log_date          |   username   
--------+----------------------------+--------------
  33237 | 2007-12-30 21:27:51.776168 | david.techer
  89145 | 2007-12-31 19:14:57.677814 | david.techer
 128119 | 2008-01-06 23:04:27.526556 | david.techer
 190491 | 2008-01-10 01:32:58.862728 | david.techer
 244425 | 2008-01-12 13:12:47.14988  | qmailsls
 294042 | 2008-01-14 16:57:38.812667 | david.techer
 326880 | 2008-01-14 21:39:59.431581 | david.techer
 345747 | 2008-01-14 22:10:42.499333 | david.techer
 381361 | 2008-01-14 23:06:11.558455 | root
 409181 | 2008-01-14 23:33:02.637207 | david.techer
(10 lignes)

smbd=# select * from (select id,log_date,username from audit2  order by random()  limit 10) foo order by id asc;
   id   |          log_date          |   username   
--------+----------------------------+--------------
  43546 | 2007-12-31 12:29:12.385191 | david.techer
 118841 | 2008-01-06 19:38:22.828635 | david.techer
 139115 | 2008-01-07 00:58:12.626183 | david.techer
 166216 | 2008-01-08 00:08:52.023178 | david.techer
 220880 | 2008-01-11 22:17:31.470029 | david.techer
 244103 | 2008-01-12 13:12:46.593351 | qmailsls
 251930 | 2008-01-12 13:41:36.412284 | qmailsls
 352940 | 2008-01-14 22:26:34.577353 | david.techer
 367765 | 2008-01-14 22:43:31.844358 | david.techer
 439377 | 2008-01-21 22:32:00.714323 | david.techer
(10 lignes)

smbd=# select * from (select id,log_date,username from audit2  order by random()  limit 10) foo order by id asc;
   id   |          log_date          |     username      
--------+----------------------------+-------------------
  72360 | 2007-12-31 15:38:47.678387 | david.techer
 140037 | 2008-01-07 00:58:15.63781  | david.techer
 220849 | 2008-01-11 22:17:31.363207 | david.techer
 230518 | 2008-01-12 12:33:44.134924 | qmailsls
 262824 | 2008-01-12 22:02:48.570754 | david.techer
 308854 | 2008-01-14 21:05:18.772812 | david.techer
 325207 | 2008-01-14 21:32:50.644577 | root
 339732 | 2008-01-14 22:03:35.676898 | david.techer
 360010 | 2008-01-14 22:41:11.901717 | david.techer
 374850 | 2008-01-14 22:55:00.443006 | jean-david.techer
(10 lignes)

vendredi 2 mai 2008

Jeudi 1er Mai à Juan-Les-Pins

Mercredi soir, je suis rentré du taf sur les coups de 18h30-19h00. En rentrant, j'ai voulu m'arrêté au Crystal pour prendre un café et trentrer à la maison. Sur place, j'ai croisé une amie. Comme nous n'avions rien à faire chacun de notre côtée, nous sommes allé mangé dans un resto. Très bon repas! Nous sommes ensuite allé au Tché pour terminer la soirée...

Le lendemain comme il faisait beau , nous sommes allé à la plage de 13 à 16h30. Nous avons mangé sur place vers les 13h00. Il y avait du mone sur le front de mer de Juan-Les-Pins vu le beau temps qu'il faisait ...Bien que l'eau était froide, je suis allé piqué une tête ...Mon amie aussi ...(+ on est de fous + on rit)...

Puis vers 16h30-17h00, retour vers le tché pour reprendre un dernier verre avant de rentrer pour une p'ti chedou! Le soir ça a été le Tokyo, un subblime restaurant japonais où nous avons très bien mangé...La soirée s'est terminée en faisant la tournée des bars comme à mon habitude.

Samedi on devrait aller manger à Valbonne histoire de faire un peu de dépaysement comme si on était à la campagne (comme dans les alentours de Montpeul'...)

mardi 29 avril 2008

Apéro de bienvenue chez FT

Intégré depuis le début du mois d'avril à ma nouvelle équipe chez FT, nous avons fait un petit apéro en fin d'après-midi avec toute l'équipe! On a invité les membres des autres bureaux pour venir boire un petit coup et gouter les mets faits par l'une des compagnes d'un de mes collègues!

Un vrai délice et un bon petit moment de plaisir pour finir cette journée avant les deux semaines avec leur ponts de vacances qui s'annoncent!

Comme il restait bien des bouteilles en trop à la fin, j'en ai profité pour repartir avec deux bouteilles de coca, une bouteille de vin rosé, et un jus de fruit...A mon retour à la villa, j'ai dégusté le vin avec une de mes colocatrices car je sais qu'elle aime bien le vin.