| S'inscrire | FAQ | Membres | Calendrier | Les Blogues | Recherche | Messages du jour | Marquer les forums comme lus | Odds Calculator |
|
|||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 (permalink) |
|
Johnny Moss - 8 bracelets WSOP
Inscription: septembre 2006
Localisation: Toronto
Messages: 1 366
![]() ![]() |
Défragmentation de votre base de données PokerTracker
DANGER : Le contenu de ce message pourrait conduire à la destruction de votre base de donnée PokerTracker. Pour éviter toutes situation malencontreuses, avant d'appliquer ce truc à votre base de donnée PokerTracker, soyez certain de faire un back up de la base de donnée.
Notes : - Ce truc n'est valide que pour les base de données PostGre SQL. Si vous n'avez pas convertis les base de données originale de PokerTracker, ce truc ne s'applique pas. - Selon la taille de votre base de donnée, l'opération peut prendre plusieurs heures. __________________________________________________ __ Ce que ça fait Postgre écrit les données dans la base de donnée dans l'ordre que les entrées sont soumise. Lorsque vous ouvrez PokerTracker pour montrer les statistique d'un joueur, la requête parcours toutes la table de la base de données et regroupe les données. Un peu comme un disque dur fragmenté, les données sont séparées. Par exemple, la table peut ressembler à : game# | player | data 1 1 bla 1 2 bla 1 3 bla 2 1 bla 2 2 bla 2 3 bla Donc, si vous voulez les données du joueur #3, PostGre doit regarder la ligne 3 et 6 ce qui contribue à la lenteur de l'opération. Imaginez un joueur sur qui vous avez 400 mains d'enmagasinées! Si les 400 mains sont séparées, la base de données devra faire 400 opérations différentes pour compiler les résultats. La défragmentation aura pour but de regrouper les données. game# | player | data 1 1 bla 1 1 bla 1 2 bla 2 2 bla 2 3 bla 2 3 bla À quel point plus vite ? Sans entrer dans les détails techniques, consulter les 2 lignes du joueur #3 se fera en une seule opération désormais. Le plus vous avez de mains sur les joueurs, le plus dramatique la différence sera! En général, lors de l'ouverture de la fenêtre des 'rign games' dans PokerTracker, les données s'afficheront de 3 à 4 fois plus rapidement. Les requêtes dans le genre "sum(vpip)...where player_id..." que PokerAceHud utilise rouleront plusieurs centaines de fois plus rapidement. Comme chaque requête ne prennait déja qu'une fraction de seconde, la différence d'une seule requête ne sera pas visible, mais comme PAH est appellé à faire rouler ce type de requêtes plusieurs fois par minutes, ... Comment le faire ? Note : N'utilisez pas le logiciel "pgadmin" pour faire rouler la requête. 1) La première étape consiste à trouver le nom de la base de données à fragmenter. Dans Poker Tracker, allez dans File>Maintain Database Names. Trouvez le nom de la base de donnée en question ... dans mon cas c'est GAMBLOR (case sensitive). 2) Trouvez la location du fichier psql.exe. Pour la plupart des gens, le fichier sera dans "c:\program files\postgresql\bin\". 3) Si vous croyez être limitez dans l'espace de votre disque dur, faites cette étape ci. Sinon, passez directement à l'étape suivante. Cette étape optionelle a pour but de déterminer l'espace requis pour les opérations de défragmentation. Assurez vous d'avoir assez d'espace. Dans le menu démarré, allez dans "Run". Tapez cmd. Dans la nouvelle fenêtre, tapez le code suivant. Changez le répertoire au besoin selon l'emplacement de vous fichiers. Code:
c:\program files\postgresql\bin\psql -d YOUR_DB_NAME -U postgres -c "select relname, relfilenode, relpages/128 as approx_Mb from pg_class order by approx_Mb desc limit 10;" Cela donnera une liste semblable à la suivante : Code:
"game_players";17433;217 "hand_histories";17438;107 "game";17426;20 "game_players_idx_02";17533;16 "game_players_idx_04";17535;15 "game_players_idx_01";17499;15 "game_players_idx_03";17534;15 "player_winnings";17448;6 "game_idx_03b";18010;6 "hand_histories_idx_01";17501;5 4) C'est maintenant le temps de recréer les tables. Assurez vous de pouvoir laisser votre ordinateur quelques heures. Retourné à la ligne de commande (Start > Run > cmd), puis tapez les instructions suivantes. Vous pouvez toutes les taper en même temps ... pas besoin d'y aller une par une. note : Changez YOUR_DB_NAME pour le nom de votre base de donnée. Code:
c:\program files\postgresql\bin\psql -d YOUR_DB_NAME -U postgres -c "cluster session_idx_02 on session;" c:\program files\postgresql\bin\psql -d YOUR_DB_NAME -U postgres -c "cluster player_winnings_idx_02 on player_winnings;" c:\program files\postgresql\bin\psql -d YOUR_DB_NAME -U postgres -c "cluster player_idx_02 on players;" c:\program files\postgresql\bin\psql -d YOUR_DB_NAME -U postgres -c "cluster game_idx_01 on game;" c:\program files\postgresql\bin\psql -d YOUR_DB_NAME -U postgres -c "cluster game_players_idx_05 on game_players;" 5) Une fois cette opération terminée, arêttez les servives PostGreSQL. (Start > Run > services.msc) et faites une défragmentation de votre ordinateur. 6) Redémmarrez le service PGsql. Ouvrez Poker Tracker et allez dans "Vacum/analyse". Voilà, c'est terminé! Votre base de données devrait être plus rapide. Refaites l'opération pour chacune des bases de données. Si vous refaites l'opération dans le futur, vous pourrez utiliser simplement la commande "cluster" puisqu'une fois que la table a été "clusterée" (remise en ordre), elle se souviendra de l'index utilisé (des informations mentionées après la commande "cluster"). __________________________________________________ ____ Ce conseil Poker Tracker est une traduction d'un conseil posté par matt42s sur le forum de Poker Tracker. Dernière modification par Lincoln Six Echo 27/09/2006 à 19h01. |
|
(Offline)
|
|
![]() |
| Outils de la discussion | |
|
|