|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
Hier, la taille de ma base de donnée était de 90Go et il ne me restait plus que 15Go.
J'ai lancé un Vacuum standart pour libérer de la place (j'avais fait plein de delete/update). Le processus est encore en train de tourner, et il ne me reste plus que ... 400Mo. Je commence à stresser Que se passe-til? (je suis le seul à avoir accés à la base de donnée, et je n'y ai fait aucune modification depuis hier... sauf vacuum) Edit : je suis sous Postgres 8.1 et sous Windows |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
Bonjour,
quel genre de vacuum ? un simple vacuum ne va pas faire grand ménage, essaye de faire un VACUUM FULL sur tes tables. J'ai tout de meme 2 conseils : - change de version de pg >> 8.2 ou attend la 8.3 - passe sous linux !!!!! la base en sera que plus rapide, et en plus tu peux utiliser le LVM pour l'espace disque c'est plus rassurant de savoir que l'on peut augmenter la taille du disque a chaud sans rien perdre) Sinon pour ton pb, en resumant : solution 1 : - vacuum full des tables Solution 2 : - supprime tes indexs - vacuum full des tables - creer un tablespace sur un autre disque dur - recree tes index avec le nouveau tablespace comme ca deja, tes données seront sur un disque et les index sur l'autre, ca te permettra peut etre de tenir le temps de passer sous linux ;-) Solution 3 : - backup ta base - installe linux avec des gros DD (ca coute plus rien) - restore la base |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
Oups, j'ai fait un lapsus :/
Le processus qui tourne depuis hier est le VACUUM en mode FULL. Lorsque j'ai atteinds les 400Mo, j'ai arreter la commande et ai lancé un VACCUM normal, sans option (j'utilise pgadminIII). La taille est restée fixe depuis et tourne toujours(il fonctionne depuis 6h). Je me suis référé à : Docs Postgres8.1 Il aurait du me liberer de la place au lieu d'en prendre Pour ce qui est du Linux, on attend d'avoir une bécane spécialisée pour stocker notre Base de donnée. Bécane |
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
Le comportement semble normal,
en fait le vacuum prend de la place pour les fichiers temporaires, grossomodo quand tu fais du vide dans le fichier, ca ce passe comme ca : (un X représente un octet utile, Y un octet dont on a plus besoin ) temps 0 (15 octects) fichier1: XXXYYYXXXYYXYXY VACUUM FULL fichier1 temps 1 fichier1 (15 octets): XXXYYYXXXYYXYXY fichier1_tmp (8octets): XXXXXXXX temps 2 del fichier1 ren fichier1_tmp fichier1 temps 3 fichier1 (8octets): XXXXXXXX C'est un peu imagé, mais ca explique pourquoi l'espace disque dispo diminue en temp1, des fichiers temporaires sont creer et donc prenne plus de place (on passe de 15 octects a 15+8=23 octets) tu me suis ? sinon niveau serveur, le liens chez dell marche pas, c'est quel model ? sinon tu as de tres bon serveurs chez la concurrence (transtec par exemple) Je te préconise du opteron, pg est optimisé pour ce proc, en 64bits, cela va de soit, et en SMP. Au niveau DD, prend du RAID 10, plus interessant que le raid 5 pour une base de données. RAM : mini 4 Go, mais vraiment, prend plus. |
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
Ok, je n'ai pas osé continuer jusqu'à n'avoir plus d'espace libre du tout...
A ton avis, je peux relancer le VACUUM FULL avec seulement les 171Mo? (je suppose qu'il effacerait les anciens fichiers temporaires lorsqu'il sera en rupture d'espace) J'ai corrigé le lien. C'est un "DELL PowerEdge™ 2900" sur lequel je compte mettre (au debut):
Bien sur, pour la RAM et les DD, ce n'est qu'un début Je cherche à avoir un systeme me permettant de gerer quelques To de données et d'avoir un accés rapide (D'où SAS et 15k Tr/Min). Je vais voir ce qu'il en ai des opterons. |
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
145 Mo !!!! ouch c'est juste
peut etre en stoppant ta base et en la restart, ca fera peut etre du menage. Pour recup de la place le temps du vacumm, supprime tes index, ca a pas l'air comme ca, mais c'est fou ce que ces petites betes prennent de la place Pour les stockage de plusieurs To, as tu pensé aux solutions SAN en fibre chanel, ou iSCSI ? |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
J'avais deja supprimé quelques index avant de lancer le VACUUM FULL...
En supprimant les autres, ça ne va me liberer que 4Go Je vais essayer en nettoyant deja les petites tables. Disons que pour l'instant, je ne vais prendre qu'un serveur (je n'ai pour l'instant que des données de l'ordre de la centaine de giga) et je me suis donc pas interessé à ces solutions de stockage. Que pense tu d'un Xeon dual core? |
|
|
00
|
|
|
#8 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
Les intels tiennent tres bien, mais ils ont toujours ete tres cher, c'est pour ca que je parlais d'opteron, mais ca fait longtemps que j'ai pas regardé les couts, ca a baissé je pense.
Sinon j'ai trouvé un bench, l'intel est plutot bien http://tweakers.net/reviews/642/14 Pour les disques durs, tu peux te permettre d'avoir plus de 90go et avec une tolérance de panne en plus. 3 DD de 120go en RAID 5 minimum (soit 240 go utile) au prix des durs, tu peux taper dans 150 go et plus |
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
Alors j'ai libéré la mémoire des index. Depuis ce matin, j'ai eu le même espace libre qu'hier. Mais à partir de 12h, l'espace a faibli et est tombé à 300Mo.
Le VACUUM FULL tourne toujours! (depuis hier à 17h jusqu'à maintenant à 15h15). Je suis en train de voir si il y a des logs quelques part... |
|
|
00
|
|
|
#10 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
Code :
Je suis sur que c'est un probleme de configuration, mais alors où |
||
|
|
00
|
|
|
#11 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
tu as plus de place dispo, le vacuum te l'indique
|
|
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
Je le vois bien, je n'essaierais pas de faire un VACUUM FULL sinon.
Dans toutes les docs que j'ai lu, rien n'indique que le VACUUM bouffe de la memoire, bien au contraire, il est sensé en libérer dans les cas où les DELETE/UPDATE ont été importantes (ce qui est le cas) |
|
|
00
|
|
|
#13 | ||
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
Oui le vacuum libere de la memoire, mais apres qu'il ai fini de travailler.
D'ailleurs tu peux regarder le code source, /src/backend/commands/vacuum.c il y a par exemple : Code :
|
||
|
|
00
|
|
|
#14 |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
Bong, alors j'ai reussi à libérer 14Go sur la deuxieme table. J'ai donc relancé un VACUUM FULL sur la premiere table, et ça fait deja un peu plus de 2 jours que ça tourne... il lui reste 9Go pour finir son truc. pfff, ils auraient pu prevoir des étapes intermediaires au lieu de tout nettoyer d'un coup (ou du moins, j'espere c'est une option que je ne connais pas).
Ouaw. J'ai pas intérêt à le faire tres souvent, c'est beaucoup trop long :/ d'autant plus que ce n'est que le début (et comme conseillé dans la doc, j'ai fais des VACUUM à des frequences regulieres avant des faire le FULL) J'ai mis la variable maintenance_work_mem à 256Mo. J'ai pas interet à mettre plus parceque le processus prends deja 1.5Go (limite des 2Go par processus de windaube). J'y ai vu une grande difference quand j'ai libérer de la mémoire sur la seconde table, merci! |
|
|
00
|
|
|
#15 | |
|
Membre émérite
![]() ![]() Inscription : mai 2002 Messages : 727 ![]() |
Salut
Citation:
Sous FreeBSD, une tâche cron fais un vacuum quotidien, peut être pas un hasard ?
__________________
Smortex Les FAQ Assembleur - Linux In The Beginning Was The Command Line Neal Stephenson |
|
|
|
00
|
|
|
#16 |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
Pour le vacuum, si tes données sont plus en lecture qu'en ecriture, ta table ne devrait plus trop bouger, il faut faire une vacuum regulierement, surtout apres une serie update/insert.
parametre l'autovacuum ca peut d'eviter des tracas. Sous linux, on utilisait un cron.d qui lancait un vacuum toute les nuits avant l'apparition de l'autovacuum, perso je continue a utiliser ce cron. Encore une fois, on voit que windows gere mal la memoire (limite de 2go), encore une bonne raison de passer sous *nux ou *bsd. (et en prime tu auras un cron et un shell puissant gratos )
|
|
|
00
|
|
|
#17 | |
|
Membre émérite
![]() ![]() Inscription : mai 2002 Messages : 727 ![]() |
Citation:
__________________
Smortex Les FAQ Assembleur - Linux In The Beginning Was The Command Line Neal Stephenson |
|
|
|
00
|
|
|
#18 | |
|
Membre émérite
![]() ![]() Inscription : mars 2002 Messages : 770 ![]() |
Citation:
|
|
|
|
00
|
|
|
#19 | |
|
Candidat au titre de Membre du Club
![]() Inscription : novembre 2006 Messages : 72 ![]() |
Oui bien sur
Disons que c'est tres lent parcequ'à l'origine, j'avais 200millions de lignes avant de faire un "DELETE * FROM..." (je ne connaissais pas TRUNCATE ) puis "INSERT..." * 300millions, "UPDATE INTO ...pKey_id = pKey_id+20000", puis "UPDATE INTO ... pKey_id=x WHERE pKEY_id=y"== Effacement de l'ancienne table, reinsertion de nouvelles données, mise à jour des ID pour synchroniser avec une autre base(brut mais facile à ecrire le programme :/ Alors avec un peu de recul, je comprends pourquoi ça prend enormement de temps Merci d'avoir corrigé à propos de l'OS, j'ai toujours vu que c'était Windows qui limitait à 2Go. D'apres cet article Citation:
|
|
|
|
00
|
|
|
#20 | |||
|
Membre émérite
![]() ![]() Inscription : mai 2002 Messages : 727 ![]() |
Citation:
Citation:
Je me rapelle du temps où j'installais apache1 sous Windows car à l'époque je ne connaissais que ça... Le readme pendant l'installation criait en rouge "DO NOT USE ON A PRODUCTION SERVER".... Citation:
__________________
Smortex Les FAQ Assembleur - Linux In The Beginning Was The Command Line Neal Stephenson |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com